@@ -118,16 +118,22 @@ export class Element implements Node {
118118}
119119
120120export abstract class DeferredTrigger implements Node {
121- constructor ( public sourceSpan : ParseSourceSpan ) { }
121+ constructor (
122+ public nameSpan : ParseSourceSpan | null , public sourceSpan : ParseSourceSpan ,
123+ public prefetchSpan : ParseSourceSpan | null , public whenOrOnSourceSpan : ParseSourceSpan | null ) { }
122124
123125 visit < Result > ( visitor : Visitor < Result > ) : Result {
124126 return visitor . visitDeferredTrigger ( this ) ;
125127 }
126128}
127129
128130export class BoundDeferredTrigger extends DeferredTrigger {
129- constructor ( public value : AST , sourceSpan : ParseSourceSpan ) {
130- super ( sourceSpan ) ;
131+ constructor (
132+ public value : AST , sourceSpan : ParseSourceSpan , prefetchSpan : ParseSourceSpan | null ,
133+ whenSourceSpan : ParseSourceSpan ) {
134+ // BoundDeferredTrigger is for 'when' triggers. These aren't really "triggers" and don't have a
135+ // nameSpan. Trigger names are the built in event triggers like hover, interaction, etc.
136+ super ( /** nameSpan */ null , sourceSpan , prefetchSpan , whenSourceSpan ) ;
131137 }
132138}
133139
@@ -136,54 +142,75 @@ export class IdleDeferredTrigger extends DeferredTrigger {}
136142export class ImmediateDeferredTrigger extends DeferredTrigger { }
137143
138144export class HoverDeferredTrigger extends DeferredTrigger {
139- constructor ( public reference : string | null , sourceSpan : ParseSourceSpan ) {
140- super ( sourceSpan ) ;
145+ constructor (
146+ public reference : string | null , nameSpan : ParseSourceSpan , sourceSpan : ParseSourceSpan ,
147+ prefetchSpan : ParseSourceSpan | null , onSourceSpan : ParseSourceSpan | null ) {
148+ super ( nameSpan , sourceSpan , prefetchSpan , onSourceSpan ) ;
141149 }
142150}
143151
144152export class TimerDeferredTrigger extends DeferredTrigger {
145- constructor ( public delay : number , sourceSpan : ParseSourceSpan ) {
146- super ( sourceSpan ) ;
153+ constructor (
154+ public delay : number , nameSpan : ParseSourceSpan , sourceSpan : ParseSourceSpan ,
155+ prefetchSpan : ParseSourceSpan | null , onSourceSpan : ParseSourceSpan | null ) {
156+ super ( nameSpan , sourceSpan , prefetchSpan , onSourceSpan ) ;
147157 }
148158}
149159
150160export class InteractionDeferredTrigger extends DeferredTrigger {
151- constructor ( public reference : string | null , sourceSpan : ParseSourceSpan ) {
152- super ( sourceSpan ) ;
161+ constructor (
162+ public reference : string | null , nameSpan : ParseSourceSpan , sourceSpan : ParseSourceSpan ,
163+ prefetchSpan : ParseSourceSpan | null , onSourceSpan : ParseSourceSpan | null ) {
164+ super ( nameSpan , sourceSpan , prefetchSpan , onSourceSpan ) ;
153165 }
154166}
155167
156168export class ViewportDeferredTrigger extends DeferredTrigger {
157- constructor ( public reference : string | null , sourceSpan : ParseSourceSpan ) {
158- super ( sourceSpan ) ;
169+ constructor (
170+ public reference : string | null , nameSpan : ParseSourceSpan , sourceSpan : ParseSourceSpan ,
171+ prefetchSpan : ParseSourceSpan | null , onSourceSpan : ParseSourceSpan | null ) {
172+ super ( nameSpan , sourceSpan , prefetchSpan , onSourceSpan ) ;
159173 }
160174}
161175
162- export class DeferredBlockPlaceholder implements Node {
176+ export class BlockNode {
163177 constructor (
164- public children : Node [ ] , public minimumTime : number | null , public sourceSpan : ParseSourceSpan ,
178+ public nameSpan : ParseSourceSpan , public sourceSpan : ParseSourceSpan ,
165179 public startSourceSpan : ParseSourceSpan , public endSourceSpan : ParseSourceSpan | null ) { }
180+ }
181+
182+ export class DeferredBlockPlaceholder extends BlockNode implements Node {
183+ constructor (
184+ public children : Node [ ] , public minimumTime : number | null , nameSpan : ParseSourceSpan ,
185+ sourceSpan : ParseSourceSpan , startSourceSpan : ParseSourceSpan ,
186+ endSourceSpan : ParseSourceSpan | null ) {
187+ super ( nameSpan , sourceSpan , startSourceSpan , endSourceSpan ) ;
188+ }
166189
167190 visit < Result > ( visitor : Visitor < Result > ) : Result {
168191 return visitor . visitDeferredBlockPlaceholder ( this ) ;
169192 }
170193}
171194
172- export class DeferredBlockLoading implements Node {
195+ export class DeferredBlockLoading extends BlockNode implements Node {
173196 constructor (
174197 public children : Node [ ] , public afterTime : number | null , public minimumTime : number | null ,
175- public sourceSpan : ParseSourceSpan , public startSourceSpan : ParseSourceSpan ,
176- public endSourceSpan : ParseSourceSpan | null ) { }
198+ nameSpan : ParseSourceSpan , sourceSpan : ParseSourceSpan , startSourceSpan : ParseSourceSpan ,
199+ endSourceSpan : ParseSourceSpan | null ) {
200+ super ( nameSpan , sourceSpan , startSourceSpan , endSourceSpan ) ;
201+ }
177202
178203 visit < Result > ( visitor : Visitor < Result > ) : Result {
179204 return visitor . visitDeferredBlockLoading ( this ) ;
180205 }
181206}
182207
183- export class DeferredBlockError implements Node {
208+ export class DeferredBlockError extends BlockNode implements Node {
184209 constructor (
185- public children : Node [ ] , public sourceSpan : ParseSourceSpan ,
186- public startSourceSpan : ParseSourceSpan , public endSourceSpan : ParseSourceSpan | null ) { }
210+ public children : Node [ ] , nameSpan : ParseSourceSpan , sourceSpan : ParseSourceSpan ,
211+ startSourceSpan : ParseSourceSpan , endSourceSpan : ParseSourceSpan | null ) {
212+ super ( nameSpan , sourceSpan , startSourceSpan , endSourceSpan ) ;
213+ }
187214
188215 visit < Result > ( visitor : Visitor < Result > ) : Result {
189216 return visitor . visitDeferredBlockError ( this ) ;
@@ -200,7 +227,7 @@ export interface DeferredBlockTriggers {
200227 viewport ?: ViewportDeferredTrigger ;
201228}
202229
203- export class DeferredBlock implements Node {
230+ export class DeferredBlock extends BlockNode implements Node {
204231 readonly triggers : Readonly < DeferredBlockTriggers > ;
205232 readonly prefetchTriggers : Readonly < DeferredBlockTriggers > ;
206233 private readonly definedTriggers : ( keyof DeferredBlockTriggers ) [ ] ;
@@ -210,8 +237,9 @@ export class DeferredBlock implements Node {
210237 public children : Node [ ] , triggers : DeferredBlockTriggers ,
211238 prefetchTriggers : DeferredBlockTriggers , public placeholder : DeferredBlockPlaceholder | null ,
212239 public loading : DeferredBlockLoading | null , public error : DeferredBlockError | null ,
213- public sourceSpan : ParseSourceSpan , public mainBlockSpan : ParseSourceSpan ,
214- public startSourceSpan : ParseSourceSpan , public endSourceSpan : ParseSourceSpan | null ) {
240+ nameSpan : ParseSourceSpan , sourceSpan : ParseSourceSpan , public mainBlockSpan : ParseSourceSpan ,
241+ startSourceSpan : ParseSourceSpan , endSourceSpan : ParseSourceSpan | null ) {
242+ super ( nameSpan , sourceSpan , startSourceSpan , endSourceSpan ) ;
215243 this . triggers = triggers ;
216244 this . prefetchTriggers = prefetchTriggers ;
217245 // We cache the keys since we know that they won't change and we
@@ -239,25 +267,31 @@ export class DeferredBlock implements Node {
239267 }
240268}
241269
242- export class SwitchBlock implements Node {
270+ export class SwitchBlock extends BlockNode implements Node {
243271 constructor (
244272 public expression : AST , public cases : SwitchBlockCase [ ] ,
245273 /**
246274 * These blocks are only captured to allow for autocompletion in the language service. They
247275 * aren't meant to be processed in any other way.
248276 */
249- public unknownBlocks : UnknownBlock [ ] , public sourceSpan : ParseSourceSpan ,
250- public startSourceSpan : ParseSourceSpan , public endSourceSpan : ParseSourceSpan | null ) { }
277+ public unknownBlocks : UnknownBlock [ ] , sourceSpan : ParseSourceSpan ,
278+ startSourceSpan : ParseSourceSpan , endSourceSpan : ParseSourceSpan | null ,
279+ nameSpan : ParseSourceSpan ) {
280+ super ( nameSpan , sourceSpan , startSourceSpan , endSourceSpan ) ;
281+ }
251282
252283 visit < Result > ( visitor : Visitor < Result > ) : Result {
253284 return visitor . visitSwitchBlock ( this ) ;
254285 }
255286}
256287
257- export class SwitchBlockCase implements Node {
288+ export class SwitchBlockCase extends BlockNode implements Node {
258289 constructor (
259- public expression : AST | null , public children : Node [ ] , public sourceSpan : ParseSourceSpan ,
260- public startSourceSpan : ParseSourceSpan , public endSourceSpan : ParseSourceSpan | null ) { }
290+ public expression : AST | null , public children : Node [ ] , sourceSpan : ParseSourceSpan ,
291+ startSourceSpan : ParseSourceSpan , endSourceSpan : ParseSourceSpan | null ,
292+ nameSpan : ParseSourceSpan ) {
293+ super ( nameSpan , sourceSpan , startSourceSpan , endSourceSpan ) ;
294+ }
261295
262296 visit < Result > ( visitor : Visitor < Result > ) : Result {
263297 return visitor . visitSwitchBlockCase ( this ) ;
@@ -270,44 +304,53 @@ export class SwitchBlockCase implements Node {
270304export type ForLoopBlockContext =
271305 Record < '$index' | '$first' | '$last' | '$even' | '$odd' | '$count' , Variable > ;
272306
273- export class ForLoopBlock implements Node {
307+ export class ForLoopBlock extends BlockNode implements Node {
274308 constructor (
275309 public item : Variable , public expression : ASTWithSource , public trackBy : ASTWithSource ,
276- public contextVariables : ForLoopBlockContext , public children : Node [ ] ,
277- public empty : ForLoopBlockEmpty | null , public sourceSpan : ParseSourceSpan ,
278- public mainBlockSpan : ParseSourceSpan , public startSourceSpan : ParseSourceSpan ,
279- public endSourceSpan : ParseSourceSpan | null ) { }
310+ public trackKeywordSpan : ParseSourceSpan , public contextVariables : ForLoopBlockContext ,
311+ public children : Node [ ] , public empty : ForLoopBlockEmpty | null , sourceSpan : ParseSourceSpan ,
312+ public mainBlockSpan : ParseSourceSpan , startSourceSpan : ParseSourceSpan ,
313+ endSourceSpan : ParseSourceSpan | null , nameSpan : ParseSourceSpan ) {
314+ super ( nameSpan , sourceSpan , startSourceSpan , endSourceSpan ) ;
315+ }
280316
281317 visit < Result > ( visitor : Visitor < Result > ) : Result {
282318 return visitor . visitForLoopBlock ( this ) ;
283319 }
284320}
285321
286- export class ForLoopBlockEmpty implements Node {
322+ export class ForLoopBlockEmpty extends BlockNode implements Node {
287323 constructor (
288- public children : Node [ ] , public sourceSpan : ParseSourceSpan ,
289- public startSourceSpan : ParseSourceSpan , public endSourceSpan : ParseSourceSpan | null ) { }
324+ public children : Node [ ] , sourceSpan : ParseSourceSpan , startSourceSpan : ParseSourceSpan ,
325+ endSourceSpan : ParseSourceSpan | null , nameSpan : ParseSourceSpan ) {
326+ super ( nameSpan , sourceSpan , startSourceSpan , endSourceSpan ) ;
327+ }
290328
291329 visit < Result > ( visitor : Visitor < Result > ) : Result {
292330 return visitor . visitForLoopBlockEmpty ( this ) ;
293331 }
294332}
295333
296- export class IfBlock implements Node {
334+ export class IfBlock extends BlockNode implements Node {
297335 constructor (
298- public branches : IfBlockBranch [ ] , public sourceSpan : ParseSourceSpan ,
299- public startSourceSpan : ParseSourceSpan , public endSourceSpan : ParseSourceSpan | null ) { }
336+ public branches : IfBlockBranch [ ] , sourceSpan : ParseSourceSpan ,
337+ startSourceSpan : ParseSourceSpan , endSourceSpan : ParseSourceSpan | null ,
338+ nameSpan : ParseSourceSpan ) {
339+ super ( nameSpan , sourceSpan , startSourceSpan , endSourceSpan ) ;
340+ }
300341
301342 visit < Result > ( visitor : Visitor < Result > ) : Result {
302343 return visitor . visitIfBlock ( this ) ;
303344 }
304345}
305346
306- export class IfBlockBranch implements Node {
347+ export class IfBlockBranch extends BlockNode implements Node {
307348 constructor (
308349 public expression : AST | null , public children : Node [ ] , public expressionAlias : Variable | null ,
309- public sourceSpan : ParseSourceSpan , public startSourceSpan : ParseSourceSpan ,
310- public endSourceSpan : ParseSourceSpan | null ) { }
350+ sourceSpan : ParseSourceSpan , startSourceSpan : ParseSourceSpan ,
351+ endSourceSpan : ParseSourceSpan | null , nameSpan : ParseSourceSpan ) {
352+ super ( nameSpan , sourceSpan , startSourceSpan , endSourceSpan ) ;
353+ }
311354
312355 visit < Result > ( visitor : Visitor < Result > ) : Result {
313356 return visitor . visitIfBlockBranch ( this ) ;
0 commit comments