@@ -143,6 +143,51 @@ tester.run('valid-v-model', rule, {
143143 {
144144 filename : 'comment-value.vue' ,
145145 code : '<template><MyComponent v-model="/**/" /></template>'
146+ } ,
147+ {
148+ filename : 'test.vue' ,
149+ code : '<template><MyComponent v-model="a as string"></MyComponent></template>' ,
150+ languageOptions : {
151+ parserOptions : {
152+ parser : require . resolve ( '@typescript-eslint/parser' )
153+ }
154+ }
155+ } ,
156+ {
157+ filename : 'test.vue' ,
158+ code : '<template><MyComponent v-model="a!"></MyComponent></template>' ,
159+ languageOptions : {
160+ parserOptions : {
161+ parser : require . resolve ( '@typescript-eslint/parser' )
162+ }
163+ }
164+ } ,
165+ {
166+ filename : 'test.vue' ,
167+ code : '<template><MyComponent v-model="a as unknown as string"></MyComponent></template>' ,
168+ languageOptions : {
169+ parserOptions : {
170+ parser : require . resolve ( '@typescript-eslint/parser' )
171+ }
172+ }
173+ } ,
174+ {
175+ filename : 'test.vue' ,
176+ code : '<template><MyComponent v-model="a!!!!"></MyComponent></template>' ,
177+ languageOptions : {
178+ parserOptions : {
179+ parser : require . resolve ( '@typescript-eslint/parser' )
180+ }
181+ }
182+ } ,
183+ {
184+ filename : 'test.vue' ,
185+ code : '<template><MyComponent v-model="(((a!) as unknown)! as string)!"></MyComponent></template>' ,
186+ languageOptions : {
187+ parserOptions : {
188+ parser : require . resolve ( '@typescript-eslint/parser' )
189+ }
190+ }
146191 }
147192 ] ,
148193 invalid : [
@@ -241,6 +286,66 @@ tester.run('valid-v-model', rule, {
241286 filename : 'test.vue' ,
242287 code : '<template><input v-model="(a?.b).c.d"></template>' ,
243288 errors : [ "'v-model' directive has potential null object property access." ]
289+ } ,
290+ {
291+ filename : 'test.vue' ,
292+ code : '<template><MyComponent v-model="a() as string"></MyComponent></template>' ,
293+ errors : [
294+ "'v-model' directives require the attribute value which is valid as LHS."
295+ ] ,
296+ languageOptions : {
297+ parserOptions : {
298+ parser : require . resolve ( '@typescript-eslint/parser' )
299+ }
300+ }
301+ } ,
302+ {
303+ filename : 'test.vue' ,
304+ code : '<template><MyComponent v-model="a()!"></MyComponent></template>' ,
305+ errors : [
306+ "'v-model' directives require the attribute value which is valid as LHS."
307+ ] ,
308+ languageOptions : {
309+ parserOptions : {
310+ parser : require . resolve ( '@typescript-eslint/parser' )
311+ }
312+ }
313+ } ,
314+ {
315+ filename : 'test.vue' ,
316+ code : '<template><MyComponent v-model="a() as unknown as string"></MyComponent></template>' ,
317+ errors : [
318+ "'v-model' directives require the attribute value which is valid as LHS."
319+ ] ,
320+ languageOptions : {
321+ parserOptions : {
322+ parser : require . resolve ( '@typescript-eslint/parser' )
323+ }
324+ }
325+ } ,
326+ {
327+ filename : 'test.vue' ,
328+ code : '<template><MyComponent v-model="a()!!!!"></MyComponent></template>' ,
329+ errors : [
330+ "'v-model' directives require the attribute value which is valid as LHS."
331+ ] ,
332+ languageOptions : {
333+ parserOptions : {
334+ parser : require . resolve ( '@typescript-eslint/parser' )
335+ }
336+ }
337+ } ,
338+ {
339+ filename : 'test.vue' ,
340+ code : '<template><MyComponent v-model="(((a()!) as unknown)! as string)!"></MyComponent></template>' ,
341+ errors : [
342+ "'v-model' directives require the attribute value which is valid as LHS."
343+ ] ,
344+ languageOptions : {
345+ parserOptions : {
346+ parser : require . resolve ( '@typescript-eslint/parser' )
347+ }
348+ }
244349 }
245350 ]
246351} )
0 commit comments