@@ -243,6 +243,19 @@ export async function doParse(iterator: string, options: ParserOptions = {}): Pr
243
243
244
244
if ( item . hint != null && BadTokensTypes . includes ( item . hint ) ) {
245
245
246
+ const node : Token = getTokenType ( item . token , item . hint ) ;
247
+
248
+ errors . push ( {
249
+ action : 'drop' ,
250
+ message : 'Bad token' ,
251
+ syntax : null ,
252
+ node,
253
+ location : {
254
+ src,
255
+ sta : item . sta ,
256
+ end : item . end
257
+ }
258
+ } ) ;
246
259
// bad token
247
260
continue ;
248
261
}
@@ -310,7 +323,12 @@ export async function doParse(iterator: string, options: ParserOptions = {}): Pr
310
323
errors . push ( {
311
324
action : 'drop' ,
312
325
message : 'invalid block' ,
313
- rawTokens : tokens . slice ( )
326
+ rawTokens : tokens . slice ( ) ,
327
+ location : {
328
+ src,
329
+ sta : tokens [ 0 ] . sta ,
330
+ end : tokens [ tokens . length - 1 ] . end
331
+ }
314
332
} ) ;
315
333
}
316
334
}
@@ -563,6 +581,7 @@ function parseNode(results: TokenizeResult[], context: AstRuleList | AstInvalidR
563
581
errors . push ( {
564
582
action : 'drop' ,
565
583
message : `CDOCOMM not allowed here ${ JSON . stringify ( tokens [ i ] , null , 1 ) } ` ,
584
+ node : tokens [ i ] ,
566
585
location
567
586
} ) ;
568
587
continue ;
@@ -607,7 +626,7 @@ function parseNode(results: TokenizeResult[], context: AstRuleList | AstInvalidR
607
626
608
627
if ( tokens [ 0 ] ?. typ == EnumToken . AtRuleTokenType ) {
609
628
610
- const atRule : AtRuleToken = < AtRuleToken > tokens . shift ( ) ;
629
+ const atRule : AtRuleToken = tokens . shift ( ) as AtRuleToken ;
611
630
const location : Location = < Location > map . get ( atRule ) ;
612
631
613
632
// @ts -ignore
@@ -637,7 +656,8 @@ function parseNode(results: TokenizeResult[], context: AstRuleList | AstInvalidR
637
656
// @ts -ignore
638
657
[ 'charset' , 'layer' , 'import' ] . includes ( ( < AstInvalidAtRule > context . chi [ i ] ) . nam as string ) ) ) {
639
658
640
- errors . push ( { action : 'drop' , message : 'invalid @import' , location} ) ;
659
+ // @ts -ignore
660
+ errors . push ( { action : 'drop' , message : 'invalid @import' , location, rawTokens : [ atRule , ...tokens ] } ) ;
641
661
return null ;
642
662
}
643
663
}
@@ -742,7 +762,7 @@ function parseNode(results: TokenizeResult[], context: AstRuleList | AstInvalidR
742
762
action : 'drop' ,
743
763
message : '@charset must have only one space' ,
744
764
// @ts -ignore
745
- location
765
+ location, rawTokens : [ atRule , ... tokens ]
746
766
} ) ;
747
767
748
768
return null ;
@@ -841,6 +861,7 @@ function parseNode(results: TokenizeResult[], context: AstRuleList | AstInvalidR
841
861
errors . push ( {
842
862
action : 'drop' ,
843
863
message : valid . error + ' - "' + tokens . reduce ( ( acc , curr ) => acc + renderToken ( curr , { minify : false } ) , '' ) + '"' ,
864
+ node,
844
865
// @ts -ignore
845
866
location : { src, ...( map . get ( valid . node ) ?? location ) }
846
867
} ) ;
@@ -980,6 +1001,7 @@ function parseNode(results: TokenizeResult[], context: AstRuleList | AstInvalidR
980
1001
errors . push ( {
981
1002
action : 'drop' ,
982
1003
message : valid . error + ' - "' + tokens . reduce ( ( acc , curr ) => acc + renderToken ( curr , { minify : false } ) , '' ) + '"' ,
1004
+ node,
983
1005
// @ts -ignore
984
1006
location
985
1007
} ) ;
@@ -1922,7 +1944,8 @@ export function parseTokens(tokens: Token[], options: ParseTokenOptions = {}): T
1922
1944
if ( ( slice . charAt ( 0 ) != '-' || ( slice . charAt ( 0 ) == '-' && isIdentStart ( slice . charCodeAt ( 1 ) ) ) ) && isIdent ( slice ) ) {
1923
1945
Object . assign ( val , { typ : EnumToken . IdenTokenType , val : slice } ) ;
1924
1946
}
1925
- } else if ( val . typ == EnumToken . LiteralTokenType && ( val as LiteralToken ) . val == '|' ) {
1947
+ } else
1948
+ if ( val . typ == EnumToken . LiteralTokenType && ( val as LiteralToken ) . val == '|' ) {
1926
1949
1927
1950
let upper : number = m ;
1928
1951
let lower : number = m ;
0 commit comments