@@ -3800,10 +3800,14 @@ export class Parser extends DiagnosticEmitter {
38003800 return Node . createStringLiteralExpression ( tn . readString ( ) , tn . range ( startPos , tn . pos ) ) ;
38013801 }
38023802 case Token . INTEGERLITERAL : {
3803- return Node . createIntegerLiteralExpression ( tn . readInteger ( ) , tn . range ( startPos , tn . pos ) ) ;
3803+ let value = tn . readInteger ( ) ;
3804+ tn . checkForIdentifierStartAfterNumericLiteral ( ) ;
3805+ return Node . createIntegerLiteralExpression ( value , tn . range ( startPos , tn . pos ) ) ;
38043806 }
38053807 case Token . FLOATLITERAL : {
3806- return Node . createFloatLiteralExpression ( tn . readFloat ( ) , tn . range ( startPos , tn . pos ) ) ;
3808+ let value = tn . readFloat ( ) ;
3809+ tn . checkForIdentifierStartAfterNumericLiteral ( ) ;
3810+ return Node . createFloatLiteralExpression ( value , tn . range ( startPos , tn . pos ) ) ;
38073811 }
38083812 // RegexpLiteralExpression
38093813 // note that this also continues on invalid ones so the surrounding AST remains intact
@@ -4207,10 +4211,12 @@ export class Parser extends DiagnosticEmitter {
42074211 }
42084212 case Token . INTEGERLITERAL : {
42094213 tn . readInteger ( ) ;
4214+ tn . checkForIdentifierStartAfterNumericLiteral ( ) ;
42104215 break ;
42114216 }
42124217 case Token . FLOATLITERAL : {
42134218 tn . readFloat ( ) ;
4219+ tn . checkForIdentifierStartAfterNumericLiteral ( ) ;
42144220 break ;
42154221 }
42164222 case Token . OPENBRACE : {
@@ -4255,10 +4261,12 @@ export class Parser extends DiagnosticEmitter {
42554261 }
42564262 case Token . INTEGERLITERAL : {
42574263 tn . readInteger ( ) ;
4264+ tn . checkForIdentifierStartAfterNumericLiteral ( ) ;
42584265 break ;
42594266 }
42604267 case Token . FLOATLITERAL : {
42614268 tn . readFloat ( ) ;
4269+ tn . checkForIdentifierStartAfterNumericLiteral ( ) ;
42624270 break ;
42634271 }
42644272 }
0 commit comments