@@ -105,26 +105,42 @@ function checkLoc(ast: SvelteProgram, fileName: string, code: string) {
105105 `No range on "${ token . type } line:${ token . loc . start . line } col:${ token . loc . start . column } " in ${ fileName } ` ,
106106 )
107107 }
108+ const set = new Set < any > ( )
108109 traverseNodes ( ast , {
109110 enterNode ( node , parent ) {
110- // assert.ok(
111- // node.parent?.type === parent?.type,
112- // `Parent type mismatch [${node.parent?.type} : ${
113- // parent?.type
114- // }] @${JSON.stringify(node, replacer)}`,
115- // )
116- // assert.ok(
117- // node.parent?.range?.[0] === parent?.range[0],
118- // `Parent range mismatch [${node.parent?.range?.[0]} : ${
119- // parent?.range[0]
120- // }] @${JSON.stringify(node, replacer)}`,
121- // )
122- // assert.ok(
123- // node.parent?.range?.[1] === parent?.range[1],
124- // `Parent range mismatch [${node.parent?.range?.[1]} : ${
125- // parent?.range[1]
126- // }] @${JSON.stringify(node, replacer)}`,
127- // )
111+ if (
112+ ( node . type . startsWith ( "Svelte" ) ||
113+ parent ?. type . startsWith ( "Svelte" ) ) &&
114+ set . has ( node )
115+ ) {
116+ assert . fail (
117+ `Duplicate node @parent: ${ parent ?. type } , ${ JSON . stringify (
118+ node ,
119+ nodeReplacer ,
120+ ) } `,
121+ )
122+ }
123+ set . add ( node )
124+ if ( parent ?. type . startsWith ( "Svelte" ) ) {
125+ assert . ok (
126+ node . parent ?. type === parent ?. type ,
127+ `Parent type mismatch [${ node . parent ?. type } : ${
128+ parent ?. type
129+ } ] @${ JSON . stringify ( node , nodeReplacer ) } `,
130+ )
131+ }
132+ assert . ok (
133+ node . parent ?. range ?. [ 0 ] === parent ?. range [ 0 ] ,
134+ `Parent range mismatch [${ node . parent ?. range ?. [ 0 ] } : ${
135+ parent ?. range [ 0 ]
136+ } ] @${ JSON . stringify ( node , nodeReplacer ) } `,
137+ )
138+ assert . ok (
139+ node . parent ?. range ?. [ 1 ] === parent ?. range [ 1 ] ,
140+ `Parent range mismatch [${ node . parent ?. range ?. [ 1 ] } : ${
141+ parent ?. range [ 1 ]
142+ } ] @${ JSON . stringify ( node , nodeReplacer ) } `,
143+ )
128144 assert . ok (
129145 node . range [ 0 ] < node . range [ 1 ] ,
130146 `No range on "${ node . type } line:${ node . loc . start . line } col:${ node . loc . start . column } " in ${ fileName } ` ,
0 commit comments