1
+ /** @import { ArrowFunctionExpression, Expression, Identifier } from 'estree' */
2
+ /** @import { AwaitBlock, ConstTag, DebugTag, EachBlock, ExpressionTag, HtmlTag, IfBlock, KeyBlock, RenderTag, SnippetBlock } from '#compiler' */
3
+ /** @import { Parser } from '../index.js' */
1
4
import read_pattern from '../read/context.js' ;
2
5
import read_expression from '../read/expression.js' ;
3
6
import * as e from '../../../errors.js' ;
@@ -7,7 +10,7 @@ import { parse_expression_at } from '../acorn.js';
7
10
8
11
const regex_whitespace_with_closing_curly_brace = / ^ \s * } / ;
9
12
10
- /** @param {import('../index.js'). Parser } parser */
13
+ /** @param {Parser } parser */
11
14
export default function tag ( parser ) {
12
15
const start = parser . index ;
13
16
parser . index += 1 ;
@@ -29,7 +32,7 @@ export default function tag(parser) {
29
32
parser . allow_whitespace ( ) ;
30
33
parser . eat ( '}' , true ) ;
31
34
32
- /** @type {ReturnType<typeof parser.append<import('#compiler'). ExpressionTag>> } */
35
+ /** @type {ReturnType<typeof parser.append<ExpressionTag>> } */
33
36
parser . append ( {
34
37
type : 'ExpressionTag' ,
35
38
start,
@@ -42,15 +45,15 @@ export default function tag(parser) {
42
45
} ) ;
43
46
}
44
47
45
- /** @param {import('../index.js'). Parser } parser */
48
+ /** @param {Parser } parser */
46
49
function open ( parser ) {
47
50
let start = parser . index - 2 ;
48
51
while ( parser . template [ start ] !== '{' ) start -= 1 ;
49
52
50
53
if ( parser . eat ( 'if' ) ) {
51
54
parser . require_whitespace ( ) ;
52
55
53
- /** @type {ReturnType<typeof parser.append<import('#compiler'). IfBlock>> } */
56
+ /** @type {ReturnType<typeof parser.append<IfBlock>> } */
54
57
const block = parser . append ( {
55
58
type : 'IfBlock' ,
56
59
elseif : false ,
@@ -76,7 +79,7 @@ function open(parser) {
76
79
const template = parser . template ;
77
80
let end = parser . template . length ;
78
81
79
- /** @type {import('estree'). Expression | undefined } */
82
+ /** @type {Expression | undefined } */
80
83
let expression ;
81
84
82
85
// we have to do this loop because `{#each x as { y = z }}` fails to parse —
@@ -119,7 +122,7 @@ function open(parser) {
119
122
expression = walk ( expression , null , {
120
123
// @ts -expect-error
121
124
TSAsExpression ( node , context ) {
122
- if ( node . end === /** @type {import('estree'). Expression } */ ( expression ) . end ) {
125
+ if ( node . end === /** @type {Expression } */ ( expression ) . end ) {
123
126
assertion = node ;
124
127
end = node . expression . end ;
125
128
return node . expression ;
@@ -171,7 +174,7 @@ function open(parser) {
171
174
172
175
parser . eat ( '}' , true ) ;
173
176
174
- /** @type {ReturnType<typeof parser.append<import('#compiler'). EachBlock>> } */
177
+ /** @type {ReturnType<typeof parser.append<EachBlock>> } */
175
178
const block = parser . append ( {
176
179
type : 'EachBlock' ,
177
180
start,
@@ -195,7 +198,7 @@ function open(parser) {
195
198
const expression = read_expression ( parser ) ;
196
199
parser . allow_whitespace ( ) ;
197
200
198
- /** @type {ReturnType<typeof parser.append<import('#compiler'). AwaitBlock>> } */
201
+ /** @type {ReturnType<typeof parser.append<AwaitBlock>> } */
199
202
const block = parser . append ( {
200
203
type : 'AwaitBlock' ,
201
204
start,
@@ -249,7 +252,7 @@ function open(parser) {
249
252
250
253
parser . eat ( '}' , true ) ;
251
254
252
- /** @type {ReturnType<typeof parser.append<import('#compiler'). KeyBlock>> } */
255
+ /** @type {ReturnType<typeof parser.append<KeyBlock>> } */
253
256
const block = parser . append ( {
254
257
type : 'KeyBlock' ,
255
258
start,
@@ -293,14 +296,14 @@ function open(parser) {
293
296
const prelude = parser . template . slice ( 0 , params_start ) . replace ( / \S / g, ' ' ) ;
294
297
const params = parser . template . slice ( params_start , parser . index ) ;
295
298
296
- let function_expression = /** @type {import('estree'). ArrowFunctionExpression } */ (
299
+ let function_expression = /** @type {ArrowFunctionExpression } */ (
297
300
parse_expression_at ( prelude + `${ params } => {}` , parser . ts , params_start )
298
301
) ;
299
302
300
303
parser . allow_whitespace ( ) ;
301
304
parser . eat ( '}' , true ) ;
302
305
303
- /** @type {ReturnType<typeof parser.append<import('#compiler'). SnippetBlock>> } */
306
+ /** @type {ReturnType<typeof parser.append<SnippetBlock>> } */
304
307
const block = parser . append ( {
305
308
type : 'SnippetBlock' ,
306
309
start,
@@ -323,7 +326,7 @@ function open(parser) {
323
326
e . expected_block_type ( parser . index ) ;
324
327
}
325
328
326
- /** @param {import('../index.js'). Parser } parser */
329
+ /** @param {Parser } parser */
327
330
function next ( parser ) {
328
331
const start = parser . index - 1 ;
329
332
@@ -352,7 +355,7 @@ function next(parser) {
352
355
let elseif_start = start - 1 ;
353
356
while ( parser . template [ elseif_start ] !== '{' ) elseif_start -= 1 ;
354
357
355
- /** @type {ReturnType<typeof parser.append<import('#compiler'). IfBlock>> } */
358
+ /** @type {ReturnType<typeof parser.append<IfBlock>> } */
356
359
const child = parser . append ( {
357
360
start : elseif_start ,
358
361
end : - 1 ,
@@ -434,7 +437,7 @@ function next(parser) {
434
437
e . block_invalid_continuation_placement ( start ) ;
435
438
}
436
439
437
- /** @param {import('../index.js'). Parser } parser */
440
+ /** @param {Parser } parser */
438
441
function close ( parser ) {
439
442
const start = parser . index - 1 ;
440
443
@@ -448,7 +451,7 @@ function close(parser) {
448
451
while ( block . elseif ) {
449
452
block . end = parser . index ;
450
453
parser . stack . pop ( ) ;
451
- block = /** @type {import('#compiler'). IfBlock } */ ( parser . current ( ) ) ;
454
+ block = /** @type {IfBlock } */ ( parser . current ( ) ) ;
452
455
}
453
456
block . end = parser . index ;
454
457
parser . pop ( ) ;
@@ -482,7 +485,7 @@ function close(parser) {
482
485
parser . pop ( ) ;
483
486
}
484
487
485
- /** @param {import('../index.js'). Parser } parser */
488
+ /** @param {Parser } parser */
486
489
function special ( parser ) {
487
490
let start = parser . index ;
488
491
while ( parser . template [ start ] !== '{' ) start -= 1 ;
@@ -496,7 +499,7 @@ function special(parser) {
496
499
parser . allow_whitespace ( ) ;
497
500
parser . eat ( '}' , true ) ;
498
501
499
- /** @type {ReturnType<typeof parser.append<import('#compiler'). HtmlTag>> } */
502
+ /** @type {ReturnType<typeof parser.append<HtmlTag>> } */
500
503
parser . append ( {
501
504
type : 'HtmlTag' ,
502
505
start,
@@ -508,7 +511,7 @@ function special(parser) {
508
511
}
509
512
510
513
if ( parser . eat ( 'debug' ) ) {
511
- /** @type {import('estree'). Identifier[] } */
514
+ /** @type {Identifier[] } */
512
515
let identifiers ;
513
516
514
517
// Implies {@debug } which indicates "debug all"
@@ -519,8 +522,8 @@ function special(parser) {
519
522
520
523
identifiers =
521
524
expression . type === 'SequenceExpression'
522
- ? /** @type {import('estree'). Identifier[] } */ ( expression . expressions )
523
- : [ /** @type {import('estree'). Identifier } */ ( expression ) ] ;
525
+ ? /** @type {Identifier[] } */ ( expression . expressions )
526
+ : [ /** @type {Identifier } */ ( expression ) ] ;
524
527
525
528
identifiers . forEach (
526
529
/** @param {any } node */ ( node ) => {
@@ -534,7 +537,7 @@ function special(parser) {
534
537
parser . eat ( '}' , true ) ;
535
538
}
536
539
537
- /** @type {ReturnType<typeof parser.append<import('#compiler'). DebugTag>> } */
540
+ /** @type {ReturnType<typeof parser.append<DebugTag>> } */
538
541
parser . append ( {
539
542
type : 'DebugTag' ,
540
543
start,
@@ -567,7 +570,7 @@ function special(parser) {
567
570
568
571
parser . eat ( '}' , true ) ;
569
572
570
- /** @type {ReturnType<typeof parser.append<import('#compiler'). ConstTag>> } */
573
+ /** @type {ReturnType<typeof parser.append<ConstTag>> } */
571
574
parser . append ( {
572
575
type : 'ConstTag' ,
573
576
start,
@@ -598,7 +601,7 @@ function special(parser) {
598
601
parser . allow_whitespace ( ) ;
599
602
parser . eat ( '}' , true ) ;
600
603
601
- /** @type {ReturnType<typeof parser.append<import('#compiler'). RenderTag>> } */
604
+ /** @type {ReturnType<typeof parser.append<RenderTag>> } */
602
605
parser . append ( {
603
606
type : 'RenderTag' ,
604
607
start,
0 commit comments