@@ -118,16 +118,22 @@ export class Element implements Node {
118
118
}
119
119
120
120
export 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 ) { }
122
124
123
125
visit < Result > ( visitor : Visitor < Result > ) : Result {
124
126
return visitor . visitDeferredTrigger ( this ) ;
125
127
}
126
128
}
127
129
128
130
export 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 ) ;
131
137
}
132
138
}
133
139
@@ -136,54 +142,75 @@ export class IdleDeferredTrigger extends DeferredTrigger {}
136
142
export class ImmediateDeferredTrigger extends DeferredTrigger { }
137
143
138
144
export 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 ) ;
141
149
}
142
150
}
143
151
144
152
export 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 ) ;
147
157
}
148
158
}
149
159
150
160
export 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 ) ;
153
165
}
154
166
}
155
167
156
168
export 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 ) ;
159
173
}
160
174
}
161
175
162
- export class DeferredBlockPlaceholder implements Node {
176
+ export class BlockNode {
163
177
constructor (
164
- public children : Node [ ] , public minimumTime : number | null , public sourceSpan : ParseSourceSpan ,
178
+ public nameSpan : ParseSourceSpan , public sourceSpan : ParseSourceSpan ,
165
179
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
+ }
166
189
167
190
visit < Result > ( visitor : Visitor < Result > ) : Result {
168
191
return visitor . visitDeferredBlockPlaceholder ( this ) ;
169
192
}
170
193
}
171
194
172
- export class DeferredBlockLoading implements Node {
195
+ export class DeferredBlockLoading extends BlockNode implements Node {
173
196
constructor (
174
197
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
+ }
177
202
178
203
visit < Result > ( visitor : Visitor < Result > ) : Result {
179
204
return visitor . visitDeferredBlockLoading ( this ) ;
180
205
}
181
206
}
182
207
183
- export class DeferredBlockError implements Node {
208
+ export class DeferredBlockError extends BlockNode implements Node {
184
209
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
+ }
187
214
188
215
visit < Result > ( visitor : Visitor < Result > ) : Result {
189
216
return visitor . visitDeferredBlockError ( this ) ;
@@ -200,7 +227,7 @@ export interface DeferredBlockTriggers {
200
227
viewport ?: ViewportDeferredTrigger ;
201
228
}
202
229
203
- export class DeferredBlock implements Node {
230
+ export class DeferredBlock extends BlockNode implements Node {
204
231
readonly triggers : Readonly < DeferredBlockTriggers > ;
205
232
readonly prefetchTriggers : Readonly < DeferredBlockTriggers > ;
206
233
private readonly definedTriggers : ( keyof DeferredBlockTriggers ) [ ] ;
@@ -210,8 +237,9 @@ export class DeferredBlock implements Node {
210
237
public children : Node [ ] , triggers : DeferredBlockTriggers ,
211
238
prefetchTriggers : DeferredBlockTriggers , public placeholder : DeferredBlockPlaceholder | null ,
212
239
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 ) ;
215
243
this . triggers = triggers ;
216
244
this . prefetchTriggers = prefetchTriggers ;
217
245
// We cache the keys since we know that they won't change and we
@@ -239,25 +267,31 @@ export class DeferredBlock implements Node {
239
267
}
240
268
}
241
269
242
- export class SwitchBlock implements Node {
270
+ export class SwitchBlock extends BlockNode implements Node {
243
271
constructor (
244
272
public expression : AST , public cases : SwitchBlockCase [ ] ,
245
273
/**
246
274
* These blocks are only captured to allow for autocompletion in the language service. They
247
275
* aren't meant to be processed in any other way.
248
276
*/
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
+ }
251
282
252
283
visit < Result > ( visitor : Visitor < Result > ) : Result {
253
284
return visitor . visitSwitchBlock ( this ) ;
254
285
}
255
286
}
256
287
257
- export class SwitchBlockCase implements Node {
288
+ export class SwitchBlockCase extends BlockNode implements Node {
258
289
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
+ }
261
295
262
296
visit < Result > ( visitor : Visitor < Result > ) : Result {
263
297
return visitor . visitSwitchBlockCase ( this ) ;
@@ -270,44 +304,53 @@ export class SwitchBlockCase implements Node {
270
304
export type ForLoopBlockContext =
271
305
Record < '$index' | '$first' | '$last' | '$even' | '$odd' | '$count' , Variable > ;
272
306
273
- export class ForLoopBlock implements Node {
307
+ export class ForLoopBlock extends BlockNode implements Node {
274
308
constructor (
275
309
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
+ }
280
316
281
317
visit < Result > ( visitor : Visitor < Result > ) : Result {
282
318
return visitor . visitForLoopBlock ( this ) ;
283
319
}
284
320
}
285
321
286
- export class ForLoopBlockEmpty implements Node {
322
+ export class ForLoopBlockEmpty extends BlockNode implements Node {
287
323
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
+ }
290
328
291
329
visit < Result > ( visitor : Visitor < Result > ) : Result {
292
330
return visitor . visitForLoopBlockEmpty ( this ) ;
293
331
}
294
332
}
295
333
296
- export class IfBlock implements Node {
334
+ export class IfBlock extends BlockNode implements Node {
297
335
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
+ }
300
341
301
342
visit < Result > ( visitor : Visitor < Result > ) : Result {
302
343
return visitor . visitIfBlock ( this ) ;
303
344
}
304
345
}
305
346
306
- export class IfBlockBranch implements Node {
347
+ export class IfBlockBranch extends BlockNode implements Node {
307
348
constructor (
308
349
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
+ }
311
354
312
355
visit < Result > ( visitor : Visitor < Result > ) : Result {
313
356
return visitor . visitIfBlockBranch ( this ) ;
0 commit comments