@@ -30,12 +30,12 @@ function expectSyntaxError(text: string) {
30
30
describe ( 'Lexer' , ( ) => {
31
31
it ( 'disallows uncommon control characters' , ( ) => {
32
32
expectSyntaxError ( '\u0007' ) . to . deep . equal ( {
33
- message : 'Syntax Error: Cannot contain the invalid character "\\u0007" .' ,
33
+ message : 'Syntax Error: Invalid character: U+0007 .' ,
34
34
locations : [ { line : 1 , column : 1 } ] ,
35
35
} ) ;
36
36
} ) ;
37
37
38
- it ( 'accepts BOM header' , ( ) => {
38
+ it ( 'ignores BOM header' , ( ) => {
39
39
expect ( lexOne ( '\uFEFF foo' ) ) . to . contain ( {
40
40
kind : TokenKind . NAME ,
41
41
start : 2 ,
@@ -139,6 +139,13 @@ describe('Lexer', () => {
139
139
value : 'foo' ,
140
140
} ) ;
141
141
142
+ expect ( lexOne ( '\t\tfoo\t\t' ) ) . to . contain ( {
143
+ kind : TokenKind . NAME ,
144
+ start : 2 ,
145
+ end : 5 ,
146
+ value : 'foo' ,
147
+ } ) ;
148
+
142
149
expect (
143
150
lexOne ( `
144
151
#comment
@@ -167,7 +174,7 @@ describe('Lexer', () => {
167
174
caughtError = error ;
168
175
}
169
176
expect ( String ( caughtError ) ) . to . equal ( dedent `
170
- Syntax Error: Cannot parse the unexpected character "?".
177
+ Syntax Error: Unexpected character: "?".
171
178
172
179
GraphQL request:3:5
173
180
2 |
@@ -187,7 +194,7 @@ describe('Lexer', () => {
187
194
caughtError = error ;
188
195
}
189
196
expect ( String ( caughtError ) ) . to . equal ( dedent `
190
- Syntax Error: Cannot parse the unexpected character "?".
197
+ Syntax Error: Unexpected character: "?".
191
198
192
199
foo.js:13:6
193
200
12 |
@@ -206,7 +213,7 @@ describe('Lexer', () => {
206
213
caughtError = error ;
207
214
}
208
215
expect ( String ( caughtError ) ) . to . equal ( dedent `
209
- Syntax Error: Cannot parse the unexpected character "?".
216
+ Syntax Error: Unexpected character: "?".
210
217
211
218
foo.js:1:5
212
219
1 | ?
@@ -294,13 +301,13 @@ describe('Lexer', () => {
294
301
295
302
expectSyntaxError ( '"contains unescaped \u0007 control char"' ) . to . deep . equal (
296
303
{
297
- message : 'Syntax Error: Invalid character within String: "\\u0007" .' ,
304
+ message : 'Syntax Error: Invalid character within String: U+0007 .' ,
298
305
locations : [ { line : 1 , column : 21 } ] ,
299
306
} ,
300
307
) ;
301
308
302
309
expectSyntaxError ( '"null-byte is not \u0000 end of file"' ) . to . deep . equal ( {
303
- message : 'Syntax Error: Invalid character within String: "\\u0000" .' ,
310
+ message : 'Syntax Error: Invalid character within String: U+0000 .' ,
304
311
locations : [ { line : 1 , column : 19 } ] ,
305
312
} ) ;
306
313
@@ -315,38 +322,38 @@ describe('Lexer', () => {
315
322
} ) ;
316
323
317
324
expectSyntaxError ( '"bad \\z esc"' ) . to . deep . equal ( {
318
- message : 'Syntax Error: Invalid character escape sequence: \\z.' ,
319
- locations : [ { line : 1 , column : 7 } ] ,
325
+ message : 'Syntax Error: Invalid character escape sequence: " \\z" .' ,
326
+ locations : [ { line : 1 , column : 6 } ] ,
320
327
} ) ;
321
328
322
329
expectSyntaxError ( '"bad \\x esc"' ) . to . deep . equal ( {
323
- message : 'Syntax Error: Invalid character escape sequence: \\x.' ,
324
- locations : [ { line : 1 , column : 7 } ] ,
330
+ message : 'Syntax Error: Invalid character escape sequence: " \\x" .' ,
331
+ locations : [ { line : 1 , column : 6 } ] ,
325
332
} ) ;
326
333
327
334
expectSyntaxError ( '"bad \\u1 esc"' ) . to . deep . equal ( {
328
- message : 'Syntax Error: Invalid character escape sequence: \\u1 es.' ,
329
- locations : [ { line : 1 , column : 7 } ] ,
335
+ message : 'Syntax Error: Invalid Unicode escape sequence: " \\u1 es" .' ,
336
+ locations : [ { line : 1 , column : 6 } ] ,
330
337
} ) ;
331
338
332
339
expectSyntaxError ( '"bad \\u0XX1 esc"' ) . to . deep . equal ( {
333
- message : 'Syntax Error: Invalid character escape sequence: \\u0XX1.' ,
334
- locations : [ { line : 1 , column : 7 } ] ,
340
+ message : 'Syntax Error: Invalid Unicode escape sequence: " \\u0XX1" .' ,
341
+ locations : [ { line : 1 , column : 6 } ] ,
335
342
} ) ;
336
343
337
344
expectSyntaxError ( '"bad \\uXXXX esc"' ) . to . deep . equal ( {
338
- message : 'Syntax Error: Invalid character escape sequence: \\uXXXX.' ,
339
- locations : [ { line : 1 , column : 7 } ] ,
345
+ message : 'Syntax Error: Invalid Unicode escape sequence: " \\uXXXX" .' ,
346
+ locations : [ { line : 1 , column : 6 } ] ,
340
347
} ) ;
341
348
342
349
expectSyntaxError ( '"bad \\uFXXX esc"' ) . to . deep . equal ( {
343
- message : 'Syntax Error: Invalid character escape sequence: \\uFXXX.' ,
344
- locations : [ { line : 1 , column : 7 } ] ,
350
+ message : 'Syntax Error: Invalid Unicode escape sequence: " \\uFXXX" .' ,
351
+ locations : [ { line : 1 , column : 6 } ] ,
345
352
} ) ;
346
353
347
354
expectSyntaxError ( '"bad \\uXXXF esc"' ) . to . deep . equal ( {
348
- message : 'Syntax Error: Invalid character escape sequence: \\uXXXF.' ,
349
- locations : [ { line : 1 , column : 7 } ] ,
355
+ message : 'Syntax Error: Invalid Unicode escape sequence: " \\uXXXF" .' ,
356
+ locations : [ { line : 1 , column : 6 } ] ,
350
357
} ) ;
351
358
} ) ;
352
359
@@ -482,14 +489,14 @@ describe('Lexer', () => {
482
489
expectSyntaxError (
483
490
'"""contains unescaped \u0007 control char"""' ,
484
491
) . to . deep . equal ( {
485
- message : 'Syntax Error: Invalid character within String: "\\u0007" .' ,
492
+ message : 'Syntax Error: Invalid character within String: U+0007 .' ,
486
493
locations : [ { line : 1 , column : 23 } ] ,
487
494
} ) ;
488
495
489
496
expectSyntaxError (
490
497
'"""null-byte is not \u0000 end of file"""' ,
491
498
) . to . deep . equal ( {
492
- message : 'Syntax Error: Invalid character within String: "\\u0000" .' ,
499
+ message : 'Syntax Error: Invalid character within String: U+0000 .' ,
493
500
locations : [ { line : 1 , column : 21 } ] ,
494
501
} ) ;
495
502
} ) ;
@@ -625,7 +632,7 @@ describe('Lexer', () => {
625
632
} ) ;
626
633
627
634
expectSyntaxError ( '+1' ) . to . deep . equal ( {
628
- message : 'Syntax Error: Cannot parse the unexpected character "+".' ,
635
+ message : 'Syntax Error: Unexpected character: "+".' ,
629
636
locations : [ { line : 1 , column : 1 } ] ,
630
637
} ) ;
631
638
@@ -650,7 +657,7 @@ describe('Lexer', () => {
650
657
} ) ;
651
658
652
659
expectSyntaxError ( '.123' ) . to . deep . equal ( {
653
- message : 'Syntax Error: Cannot parse the unexpected character ".".' ,
660
+ message : 'Syntax Error: Unexpected character: ".".' ,
654
661
locations : [ { line : 1 , column : 1 } ] ,
655
662
} ) ;
656
663
@@ -674,6 +681,11 @@ describe('Lexer', () => {
674
681
locations : [ { line : 1 , column : 5 } ] ,
675
682
} ) ;
676
683
684
+ expectSyntaxError ( '1.0e"' ) . to . deep . equal ( {
685
+ message : "Syntax Error: Invalid number, expected digit but got: '\"'." ,
686
+ locations : [ { line : 1 , column : 5 } ] ,
687
+ } ) ;
688
+
677
689
expectSyntaxError ( '1.2e3e' ) . to . deep . equal ( {
678
690
message : 'Syntax Error: Invalid number, expected digit but got: "e".' ,
679
691
locations : [ { line : 1 , column : 6 } ] ,
@@ -708,7 +720,7 @@ describe('Lexer', () => {
708
720
locations : [ { line : 1 , column : 2 } ] ,
709
721
} ) ;
710
722
expectSyntaxError ( '1\u00DF' ) . to . deep . equal ( {
711
- message : 'Syntax Error: Cannot parse the unexpected character "\\u00DF" .' ,
723
+ message : 'Syntax Error: Unexpected character: U+00DF .' ,
712
724
locations : [ { line : 1 , column : 2 } ] ,
713
725
} ) ;
714
726
expectSyntaxError ( '1.23f' ) . to . deep . equal ( {
@@ -816,22 +828,27 @@ describe('Lexer', () => {
816
828
817
829
it ( 'lex reports useful unknown character error' , ( ) => {
818
830
expectSyntaxError ( '..' ) . to . deep . equal ( {
819
- message : 'Syntax Error: Cannot parse the unexpected character ".".' ,
831
+ message : 'Syntax Error: Unexpected character: ".".' ,
820
832
locations : [ { line : 1 , column : 1 } ] ,
821
833
} ) ;
822
834
823
835
expectSyntaxError ( '?' ) . to . deep . equal ( {
824
- message : 'Syntax Error: Cannot parse the unexpected character "?".' ,
836
+ message : 'Syntax Error: Unexpected character: "?".' ,
825
837
locations : [ { line : 1 , column : 1 } ] ,
826
838
} ) ;
827
839
828
- expectSyntaxError ( '\u203B' ) . to . deep . equal ( {
829
- message : 'Syntax Error: Cannot parse the unexpected character "\\u203B".' ,
840
+ expectSyntaxError ( '\u00AA' ) . to . deep . equal ( {
841
+ message : 'Syntax Error: Unexpected character: U+00AA.' ,
842
+ locations : [ { line : 1 , column : 1 } ] ,
843
+ } ) ;
844
+
845
+ expectSyntaxError ( '\u0AAA' ) . to . deep . equal ( {
846
+ message : 'Syntax Error: Unexpected character: U+0AAA.' ,
830
847
locations : [ { line : 1 , column : 1 } ] ,
831
848
} ) ;
832
849
833
- expectSyntaxError ( '\u200b ' ) . to . deep . equal ( {
834
- message : 'Syntax Error: Cannot parse the unexpected character "\\u200B" .' ,
850
+ expectSyntaxError ( '\u203B ' ) . to . deep . equal ( {
851
+ message : 'Syntax Error: Unexpected character: U+203B .' ,
835
852
locations : [ { line : 1 , column : 1 } ] ,
836
853
} ) ;
837
854
} ) ;
@@ -894,6 +911,31 @@ describe('Lexer', () => {
894
911
TokenKind . EOF ,
895
912
] ) ;
896
913
} ) ;
914
+
915
+ it ( 'lexes comments' , ( ) => {
916
+ expect ( lexOne ( '# Comment' ) . prev ) . to . contain ( {
917
+ kind : TokenKind . COMMENT ,
918
+ start : 0 ,
919
+ end : 9 ,
920
+ value : ' Comment' ,
921
+ } ) ;
922
+ expect ( lexOne ( '# Comment\nAnother line' ) . prev ) . to . contain ( {
923
+ kind : TokenKind . COMMENT ,
924
+ start : 0 ,
925
+ end : 9 ,
926
+ value : ' Comment' ,
927
+ } ) ;
928
+ expect ( lexOne ( '# Comment\r\nAnother line' ) . prev ) . to . contain ( {
929
+ kind : TokenKind . COMMENT ,
930
+ start : 0 ,
931
+ end : 9 ,
932
+ value : ' Comment' ,
933
+ } ) ;
934
+ expectSyntaxError ( '# \u0007' ) . to . deep . equal ( {
935
+ message : 'Syntax Error: Invalid character: U+0007.' ,
936
+ locations : [ { line : 1 , column : 3 } ] ,
937
+ } ) ;
938
+ } ) ;
897
939
} ) ;
898
940
899
941
describe ( 'isPunctuatorTokenKind' , ( ) => {
0 commit comments