File tree Expand file tree Collapse file tree 2 files changed +35
-3
lines changed
compiler/qsc_qasm3/src/lex Expand file tree Collapse file tree 2 files changed +35
-3
lines changed Original file line number Diff line number Diff line change @@ -373,9 +373,13 @@ impl<'a> Lexer<'a> {
373
373
Err ( NumberLexError :: Incomplete ) => unreachable ! ( ) ,
374
374
}
375
375
}
376
- Some ( 'e' ) => match self . exp ( ) {
376
+ Some ( 'e' | 'E' ) => match self . exp ( ) {
377
377
Ok ( ( ) ) => Ok ( Number :: Float ) ,
378
- Err ( _) => todo ! ( ) ,
378
+ Err ( NumberLexError :: None ) => unreachable ! ( "we know there is an `e`" ) ,
379
+ Err ( NumberLexError :: Incomplete ) => {
380
+ unreachable ! ( "this only applies when lexing binary, octal, or hex" )
381
+ }
382
+ Err ( err) => Err ( err) ,
379
383
} ,
380
384
None | Some ( _) => Ok ( Number :: Float ) ,
381
385
}
@@ -415,7 +419,7 @@ impl<'a> Lexer<'a> {
415
419
self . chars . next ( ) ;
416
420
self . mid_dot ( c1)
417
421
}
418
- Some ( 'e' ) => match self . exp ( ) {
422
+ Some ( 'e' | 'E' ) => match self . exp ( ) {
419
423
Ok ( ( ) ) => Ok ( Number :: Float ) ,
420
424
Err ( NumberLexError :: None ) => unreachable ! ( ) ,
421
425
Err ( _) => Err ( NumberLexError :: EndsInUnderscore ) ,
Original file line number Diff line number Diff line change @@ -798,6 +798,34 @@ fn incomplete_exp() {
798
798
) ;
799
799
}
800
800
801
+ #[ test]
802
+ fn incomplete_exp2 ( ) {
803
+ check (
804
+ "0.e3_" ,
805
+ & expect ! [ [ r#"
806
+ [
807
+ Token {
808
+ kind: Unknown,
809
+ offset: 0,
810
+ },
811
+ ]
812
+ "# ] ] ,
813
+ ) ;
814
+ check (
815
+ "1e" ,
816
+ & expect ! [ [ r#"
817
+ [
818
+ Token {
819
+ kind: Number(
820
+ Float,
821
+ ),
822
+ offset: 0,
823
+ },
824
+ ]
825
+ "# ] ] ,
826
+ ) ;
827
+ }
828
+
801
829
#[ test]
802
830
fn leading_zero_point ( ) {
803
831
check (
You can’t perform that action at this time.
0 commit comments