From e7306e575d2f1555b486b5e0e8f8686cca4545bf Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Thu, 26 May 2022 15:10:07 +0800 Subject: [PATCH] `no-useless-undefined`: Ignore `ref(undefined)` in Vue project (#1828) --- rules/no-useless-undefined.js | 2 ++ test/no-useless-undefined.mjs | 35 ++++++++++++++++++- test/snapshots/no-useless-undefined.mjs.md | 25 +++++++++++++ test/snapshots/no-useless-undefined.mjs.snap | Bin 926 -> 1032 bytes 4 files changed, 61 insertions(+), 1 deletion(-) diff --git a/rules/no-useless-undefined.js b/rules/no-useless-undefined.js index f5636e55d8..6b9af3bf32 100644 --- a/rules/no-useless-undefined.js +++ b/rules/no-useless-undefined.js @@ -70,6 +70,8 @@ const shouldIgnore = node => { } return compareFunctionNames.has(name) + // https://vuejs.org/api/reactivity-core.html#ref + || name === 'ref' // `set.add(undefined)` || name === 'add' // `map.set(foo, undefined)` diff --git a/test/no-useless-undefined.mjs b/test/no-useless-undefined.mjs index 830a87dcae..ed06d515d4 100644 --- a/test/no-useless-undefined.mjs +++ b/test/no-useless-undefined.mjs @@ -1,5 +1,5 @@ import outdent from 'outdent'; -import {getTester} from './utils/test.mjs'; +import {getTester, parsers} from './utils/test.mjs'; const {test} = getTester(import.meta); @@ -436,3 +436,36 @@ test.snapshot({ 'foo.notBind(bar, undefined)', ], }); + +test.snapshot({ + testerOptions: { + parser: parsers.vue, + }, + valid: [ + outdent` + + `, + outdent` + + `, + ], + invalid: [ + outdent` + + `, + ], +}); diff --git a/test/snapshots/no-useless-undefined.mjs.md b/test/snapshots/no-useless-undefined.mjs.md index a960ffc2da..158c538dc4 100644 --- a/test/snapshots/no-useless-undefined.mjs.md +++ b/test/snapshots/no-useless-undefined.mjs.md @@ -299,3 +299,28 @@ Generated by [AVA](https://avajs.dev). > 1 | foo.notBind(bar, undefined)␊ | ^^^^^^^^^ Do not use useless \`undefined\`.␊ ` + +## Invalid #1 + 1 | + +> Output + + `␊ + 1 | ␊ + ` + +> Error 1/1 + + `␊ + 1 | ␊ + ` diff --git a/test/snapshots/no-useless-undefined.mjs.snap b/test/snapshots/no-useless-undefined.mjs.snap index 9424edf2456251f2d6af6a6be5767f880e07192a..df70b8a7586d38c8fb01a6dad93fa3195ad108c3 100644 GIT binary patch literal 1032 zcmV+j1o!(vRzVk zE9s%vD55B$!0bX)FA-5aL`E0VpvyxyN{MFXoa4FduI}zj(1DM`eDlxD_y05VO`idP zbYOg$H!H)}_Ssdn<;rmR!!!uUH%G#8j5MM1WLHnlcjww|Z+~X?0!Ue-LBw4Qd${h; znlm}z+;e^>diTBzQZ@iZcv1kUUXW+pJ9y$)_rxC`LM!KAhm=iE6_IKLpoSHE9mDLi z-lel2ReEmSgOtsc(1WpQBiotgaKCspwfgJR&T}UqWp7HDI}QNX3v{`H8(7D596aCt zy1)r3TO*+tqbd8ylbnwJ?n4=Ms}6L1SOzKEFJZ-a0QT+pB4oLmFU%dRy?wLF=7W^o zD&Y>s*-!5V4)-;+*b(nM+rMxpr0h2dLK*<~xV2gSORdg^^ZToNvSA&h><I@-HcEX+Kqg{pv}#4-sLunyD4NfYl7TnN0gufBye8F$8wCsz!AF2u> zF32Mx%n%og4nFSrO7gP#U7Nar=mS04i)C3{6az!1g@lwlzl1ChHhkpN`Br zKO*l|mhpT4_5KVdsPzBXAVY@Yfz;L)s?Axy(~IKwYrDP z5?e`<3gojxXUEIv1Z8=hvlm12dEE_YH;iq zEJ?*-NwNCv#2!=O7%@QVG;(7R^|QsAn@y}m)K;wFOK5DVdN{EJ?X`hd!RQL8vFSA+ zYHDg34$0xPhDMk~>?|SyM6E0$2fZ)ZRkkI|Rqns6nOs0gw)SkoHz58A9Ae&@UYe=m zZE`gtVj46t#c{-xj1?0{RZAlhHcV6Ub&(5MAH~BO6~|Cw#&)pymHh?1;fM%64FCYK C`11S! literal 926 zcmV;P17Z9@RzV-Bn(Bo%pZ#g00000000A< z$H>6I!@zo1MMf~K`dze3)Yd;Xr#P4xKtL6WrvkB2am+vedGZXaua}f7Jb7l#1QxYp zgkTe(1}|L|*7_IIC(hvc_Oi%LdlwT}^d1ynWoBUT$t+E4{*!rapQYS+r{sgjn82c6 zpg5O>fgvJ1vy;Ov>GpjQug_OIS5IdGi%x*z??4=VTVb?xyh~{jn42@gc;x$K>DTWCwdK`*- zI2agCrZK)}jtz=r)(hea%{_6E2`qXBiuZCdF#If(;@t5|m~X@HO7kgx6aFxPMIS=3 zKNkZ7GXpy~CKy>61R2G-6ch{ZXb9@xgxyyTM1 z{5+7=8k!2#AaNt0IA>96Noi4@g1(l5mOe<(7$nFE=b9+gfGAV2C_>l_B5aN(YylCr zL@~qA0OTPsPr(|*2f3#f)uGQxbEtv_cBcZl8W_&C13MSQhldk5lp$iohb(sg0{NOa z{LHCIz}K@eeXWJz@5;>7oRoo%pBE&$ba+G%qaY$vgLAVrs&qCYJEP@e|b5RIdNvwg}C1kn)mUh6V1Fb=GKp4~kFloGDL8cRwxv-R} z(ZGO@1*U-LSYX~oOYg<7P(jy#oPdxtgn7iAcJKrfe!kcussa}oI;=4Ma^ggP5FZ8AM#Al?8wh`&)}!9GQlZLrY5 zP!oru#*7Fx=7iJ`5vmp#9%d9n_%|AqA!D(WVF`#51EGd+2}Zoj0FHHT2ki?00DsM! AZ2$lO