Skip to content

await an expression with surrogate characters raises a SyntaxError #39929

@Mesteery

Description

@Mesteery

Version

16.8.0

Platform

No response

Subsystem

repl

What steps will reproduce the bug?

$ node
Welcome to Node.js v16.8.0.
Type ".help" for more information.
> await '😀😀😀' // or
> await '😀😀😀'; // or
> await '😀😀😀';;

How often does it reproduce? Is there a required condition?

All the time, as long as there is a top level await with one or more surrogate chars with a semicolon, or at least 3 surrogate chars.

What is the expected behavior?

> await '😀😀😀'
'😀😀😀'

What do you see instead?

> await '😀😀😀'
 }))()
 ^

Uncaught SyntaxError: Unexpected token '}'

> await '😀😀😀';
(async () => { return (await '😀😀😀';
                                     ^

Uncaught SyntaxError: Unexpected token ';'

> await '😀😀😀';;
undefined

Additional information

This is obviously reproducible with a more complex expression (for example await new buffer.Blob(['aaa', Buffer.from('èèee😁😁😁aaa')]).text().

Metadata

Metadata

Assignees

No one assigned

    Labels

    confirmed-bugIssues with confirmed bugs.replIssues and PRs related to the REPL subsystem.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions