Repository navigation
Lift Template Literal Restriction on Backslashes #12700
Description
Activity
- addedES NextNew featurers for ECMAScript (a.k.a. ESNext)New featurers for ECMAScript (a.k.a. ESNext)
on Dec 6, 2016 This was bumped to stage 4 in 2017-03. It is slated for inclusion in ES2018
https://github.com/tc39/proposals/blob/master/finished-proposals.md
Interested in this😉
Reacted by Daniel RosenwasserDanielRosenwasser commented
on Apr 28, 2018 MemberAuthorMore actionsWenlu Wang (@Kingwl) In implementing it, or using it? 😃
Reacted by Wenlu Wangrelated #5291
should we re-implement EscapeSequence in the scanner ?DanielRosenwasser commented
on Apr 28, 2018 MemberAuthorMore actionsshould we re-implement EscapeSequence in the scanner ?
I don't know why that'd be necessary, I think you just need to potentially thread through some extra context when you're scanning these things (which is what the ECMAScript spec does in the grammar now). But I might've missed something, so feel free to send the PR and we can iterate on it!
DanielRosenwasser commented
on Apr 28, 2018 MemberAuthorMore actionsBy the way, template emit now uses a helper, so the proposed emit is a little different.
Should the new grammar be always used or what options are needed?
more than 90 baseline changedWe have just hit this issue upgrading from 2.4.1 to 2.6.1.
glamorous.h3({
'&::after': {
content:"\\00BB"
}
})
Before it output chevrons, after the upgrade it output x000BB.seems could fixed in this change
how could i know that template is tagged in,scanner? i have no idea😓
DanielRosenwasser commented
on Apr 30, 2018 MemberAuthorMore actionsI think you'll have to actually add a rescan method on the scanner (e.g.
rescanTaggedTemplateHeador something).ahhh,
reScanis work, but the error which first time scan are preserved,
how could i remove those incorrect error- locked as resolved and limited conversation to collaborators
on Oct 21, 2025
Overview
Everyone loves LATEX so ESNext will likely allow tagged template strings to contain backslashes on any sequence - even ones that look like they might contain an invalid Unicode escapes.
In other words, something like
is now valid, whereas previously it would be considered an error.
Reference: https://tc39.github.io/proposal-template-literal-revision/
As of this writing, the linked proposal is at Stage 3.
Notes
This restriction lift doesn't apply to untagged template strings. For example:
Because there is no appropriate representation for a "cooked" string that contains one of these escapes, the returned value at a position on the top-level array will be
undefined, but the raw representation will be available. For example:// Prints 'true' twice.
tag
\unicode and \u{55}Proposed Emit
Input:
Output: