@@ -567,6 +567,20 @@ describe('lexer', () => {
567567 expectStringToken ( tokens [ 8 ] , 29 , 33 , '!!!' , StringTokenKind . TemplateLiteralEnd ) ;
568568 } ) ;
569569
570+ it ( 'should tokenize a template literal in an literal object value' , ( ) => {
571+ const tokens : Token [ ] = lex ( '{foo: `${name}`}' ) ;
572+ expect ( tokens . length ) . toBe ( 9 ) ;
573+ expectCharacterToken ( tokens [ 0 ] , 0 , 1 , '{' ) ;
574+ expectIdentifierToken ( tokens [ 1 ] , 1 , 4 , 'foo' ) ;
575+ expectCharacterToken ( tokens [ 2 ] , 4 , 5 , ':' ) ;
576+ expectStringToken ( tokens [ 3 ] , 6 , 7 , '' , StringTokenKind . TemplateLiteralPart ) ;
577+ expectOperatorToken ( tokens [ 4 ] , 7 , 9 , '${' ) ;
578+ expectIdentifierToken ( tokens [ 5 ] , 9 , 13 , 'name' ) ;
579+ expectOperatorToken ( tokens [ 6 ] , 13 , 14 , '}' ) ;
580+ expectStringToken ( tokens [ 7 ] , 14 , 15 , '' , StringTokenKind . TemplateLiteralEnd ) ;
581+ expectCharacterToken ( tokens [ 8 ] , 15 , 16 , '}' ) ;
582+ } ) ;
583+
570584 it ( 'should produce an error if a template literal is not terminated' , ( ) => {
571585 expectErrorToken (
572586 lex ( '`hello' ) [ 0 ] ,
0 commit comments