@@ -14,7 +14,9 @@ const path = require("path")
14
14
const fs = require ( "fs-extra" )
15
15
const parse = require ( ".." ) . parse
16
16
const parseForESLint = require ( ".." ) . parseForESLint
17
- const CLIEngine = require ( "./fixtures/eslint" ) . CLIEngine
17
+ const eslint = require ( "./fixtures/eslint" )
18
+ const CLIEngine = eslint . CLIEngine
19
+ const Linter = eslint . Linter
18
20
19
21
//------------------------------------------------------------------------------
20
22
// Helpers
@@ -513,4 +515,32 @@ describe("Basic tests", () => {
513
515
)
514
516
} )
515
517
} )
518
+
519
+ describe ( "parserServices.defineTemplateBodyVisitor" , ( ) => {
520
+ it ( "should work even if AST object was reused." , ( ) => {
521
+ const code = "<template><div/></template>"
522
+ const config = {
523
+ parser : PARSER_PATH ,
524
+ rules : {
525
+ "test-rule" : "error" ,
526
+ } ,
527
+ }
528
+ const linter = new Linter ( )
529
+
530
+ //eslint-disable-next-line no-shadow
531
+ linter . defineRule ( "test-rule" , ( context ) => context . parserServices . defineTemplateBodyVisitor ( {
532
+ "VElement[name='div']" ( node ) {
533
+ context . report ( { node, message : "OK" } )
534
+ } ,
535
+ } ) )
536
+
537
+ const messages1 = linter . verify ( code , config )
538
+ const messages2 = linter . verify ( linter . getSourceCode ( ) , config )
539
+
540
+ assert . equal ( messages1 . length , 1 )
541
+ assert . equal ( messages1 [ 0 ] . message , "OK" )
542
+ assert . equal ( messages2 . length , 1 )
543
+ assert . equal ( messages1 [ 0 ] . message , "OK" )
544
+ } )
545
+ } )
516
546
} )
0 commit comments