Skip to content

Commit 683d6c7

Browse files
author
Andy
authored
Add helper functions for using unescapeLeadingUnderscores (#18793)
* Add helper functions for using `unescapeLeadingUnderscores` * More cleanup
1 parent 8e4c559 commit 683d6c7

17 files changed

+109
-106
lines changed

src/compiler/binder.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ namespace ts {
244244
}
245245

246246
Debug.assert(isWellKnownSymbolSyntactically(nameExpression));
247-
return getPropertyNameForKnownSymbolName(unescapeLeadingUnderscores((<PropertyAccessExpression>nameExpression).name.escapedText));
247+
return getPropertyNameForKnownSymbolName(idText((<PropertyAccessExpression>nameExpression).name));
248248
}
249249
return getEscapedTextOfIdentifierOrLiteral(<Identifier | LiteralExpression>name);
250250
}
@@ -1777,7 +1777,7 @@ namespace ts {
17771777
// otherwise report generic error message.
17781778
const span = getErrorSpanForNode(file, name);
17791779
file.bindDiagnostics.push(createFileDiagnostic(file, span.start, span.length,
1780-
getStrictModeEvalOrArgumentsMessage(contextNode), unescapeLeadingUnderscores(identifier.escapedText)));
1780+
getStrictModeEvalOrArgumentsMessage(contextNode), idText(identifier)));
17811781
}
17821782
}
17831783
}
@@ -2431,7 +2431,7 @@ namespace ts {
24312431
if (node.name) {
24322432
node.name.parent = node;
24332433
}
2434-
file.bindDiagnostics.push(createDiagnosticForNode(symbolExport.declarations[0], Diagnostics.Duplicate_identifier_0, unescapeLeadingUnderscores(prototypeSymbol.escapedName)));
2434+
file.bindDiagnostics.push(createDiagnosticForNode(symbolExport.declarations[0], Diagnostics.Duplicate_identifier_0, symbolName(prototypeSymbol)));
24352435
}
24362436
symbol.exports.set(prototypeSymbol.escapedName, prototypeSymbol);
24372437
prototypeSymbol.parent = symbol;

src/compiler/checker.ts

Lines changed: 49 additions & 54 deletions
Large diffs are not rendered by default.

src/compiler/emitter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2766,7 +2766,7 @@ namespace ts {
27662766
return generateName(node);
27672767
}
27682768
else if (isIdentifier(node) && (nodeIsSynthesized(node) || !node.parent)) {
2769-
return unescapeLeadingUnderscores(node.escapedText);
2769+
return idText(node);
27702770
}
27712771
else if (node.kind === SyntaxKind.StringLiteral && (<StringLiteral>node).textSourceNode) {
27722772
return getTextOfNode((<StringLiteral>node).textSourceNode, includeTrivia);
@@ -2986,7 +2986,7 @@ namespace ts {
29862986
case GeneratedIdentifierKind.Loop:
29872987
return makeTempVariableName(TempFlags._i);
29882988
case GeneratedIdentifierKind.Unique:
2989-
return makeUniqueName(unescapeLeadingUnderscores(name.escapedText));
2989+
return makeUniqueName(idText(name));
29902990
}
29912991

29922992
Debug.fail("Unsupported GeneratedIdentifierKind.");

src/compiler/factory.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ namespace ts {
126126

127127
export function updateIdentifier(node: Identifier, typeArguments: NodeArray<TypeNode> | undefined): Identifier {
128128
return node.typeArguments !== typeArguments
129-
? updateNode(createIdentifier(unescapeLeadingUnderscores(node.escapedText), typeArguments), node)
129+
? updateNode(createIdentifier(idText(node), typeArguments), node)
130130
: node;
131131
}
132132

@@ -2951,12 +2951,12 @@ namespace ts {
29512951
function createJsxFactoryExpressionFromEntityName(jsxFactory: EntityName, parent: JsxOpeningLikeElement): Expression {
29522952
if (isQualifiedName(jsxFactory)) {
29532953
const left = createJsxFactoryExpressionFromEntityName(jsxFactory.left, parent);
2954-
const right = createIdentifier(unescapeLeadingUnderscores(jsxFactory.right.escapedText));
2954+
const right = createIdentifier(idText(jsxFactory.right));
29552955
right.escapedText = jsxFactory.right.escapedText;
29562956
return createPropertyAccess(left, right);
29572957
}
29582958
else {
2959-
return createReactNamespace(unescapeLeadingUnderscores(jsxFactory.escapedText), parent);
2959+
return createReactNamespace(idText(jsxFactory), parent);
29602960
}
29612961
}
29622962

src/compiler/transformers/destructuring.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ namespace ts {
418418
return createElementAccess(value, argumentExpression);
419419
}
420420
else {
421-
const name = createIdentifier(unescapeLeadingUnderscores(propertyName.escapedText));
421+
const name = createIdentifier(idText(propertyName));
422422
return createPropertyAccess(value, name);
423423
}
424424
}

src/compiler/transformers/es2015.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ namespace ts {
609609
// - break/continue is non-labeled and located in non-converted loop/switch statement
610610
const jump = node.kind === SyntaxKind.BreakStatement ? Jump.Break : Jump.Continue;
611611
const canUseBreakOrContinue =
612-
(node.label && convertedLoopState.labels && convertedLoopState.labels.get(unescapeLeadingUnderscores(node.label.escapedText))) ||
612+
(node.label && convertedLoopState.labels && convertedLoopState.labels.get(idText(node.label))) ||
613613
(!node.label && (convertedLoopState.allowedNonLabeledJumps & jump));
614614

615615
if (!canUseBreakOrContinue) {
@@ -628,11 +628,11 @@ namespace ts {
628628
else {
629629
if (node.kind === SyntaxKind.BreakStatement) {
630630
labelMarker = `break-${node.label.escapedText}`;
631-
setLabeledJump(convertedLoopState, /*isBreak*/ true, unescapeLeadingUnderscores(node.label.escapedText), labelMarker);
631+
setLabeledJump(convertedLoopState, /*isBreak*/ true, idText(node.label), labelMarker);
632632
}
633633
else {
634634
labelMarker = `continue-${node.label.escapedText}`;
635-
setLabeledJump(convertedLoopState, /*isBreak*/ false, unescapeLeadingUnderscores(node.label.escapedText), labelMarker);
635+
setLabeledJump(convertedLoopState, /*isBreak*/ false, idText(node.label), labelMarker);
636636
}
637637
}
638638
let returnExpression: Expression = createLiteral(labelMarker);
@@ -2187,11 +2187,11 @@ namespace ts {
21872187
}
21882188

21892189
function recordLabel(node: LabeledStatement) {
2190-
convertedLoopState.labels.set(unescapeLeadingUnderscores(node.label.escapedText), true);
2190+
convertedLoopState.labels.set(idText(node.label), true);
21912191
}
21922192

21932193
function resetLabel(node: LabeledStatement) {
2194-
convertedLoopState.labels.set(unescapeLeadingUnderscores(node.label.escapedText), false);
2194+
convertedLoopState.labels.set(idText(node.label), false);
21952195
}
21962196

21972197
function visitLabeledStatement(node: LabeledStatement): VisitResult<Statement> {
@@ -3004,7 +3004,7 @@ namespace ts {
30043004
else {
30053005
loopParameters.push(createParameter(/*decorators*/ undefined, /*modifiers*/ undefined, /*dotDotDotToken*/ undefined, name));
30063006
if (resolver.getNodeCheckFlags(decl) & NodeCheckFlags.NeedsLoopOutParameter) {
3007-
const outParamName = createUniqueName("out_" + unescapeLeadingUnderscores(name.escapedText));
3007+
const outParamName = createUniqueName("out_" + idText(name));
30083008
loopOutParameters.push({ originalName: name, outParamName });
30093009
}
30103010
}

src/compiler/transformers/es2017.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ namespace ts {
363363
function substitutePropertyAccessExpression(node: PropertyAccessExpression) {
364364
if (node.expression.kind === SyntaxKind.SuperKeyword) {
365365
return createSuperAccessInAsyncMethod(
366-
createLiteral(unescapeLeadingUnderscores(node.name.escapedText)),
366+
createLiteral(idText(node.name)),
367367
node
368368
);
369369
}

src/compiler/transformers/es5.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ namespace ts {
111111
* @param name An Identifier
112112
*/
113113
function trySubstituteReservedName(name: Identifier) {
114-
const token = name.originalKeywordKind || (nodeIsSynthesized(name) ? stringToToken(unescapeLeadingUnderscores(name.escapedText)) : undefined);
114+
const token = name.originalKeywordKind || (nodeIsSynthesized(name) ? stringToToken(idText(name)) : undefined);
115115
if (token >= SyntaxKind.FirstReservedWord && token <= SyntaxKind.LastReservedWord) {
116116
return setTextRange(createLiteral(name), name);
117117
}

src/compiler/transformers/esnext.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -790,7 +790,7 @@ namespace ts {
790790
function substitutePropertyAccessExpression(node: PropertyAccessExpression) {
791791
if (node.expression.kind === SyntaxKind.SuperKeyword) {
792792
return createSuperAccessInAsyncMethod(
793-
createLiteral(unescapeLeadingUnderscores(node.name.escapedText)),
793+
createLiteral(idText(node.name)),
794794
node
795795
);
796796
}

src/compiler/transformers/generators.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1634,7 +1634,7 @@ namespace ts {
16341634
}
16351635

16361636
function transformAndEmitContinueStatement(node: ContinueStatement): void {
1637-
const label = findContinueTarget(node.label ? unescapeLeadingUnderscores(node.label.escapedText) : undefined);
1637+
const label = findContinueTarget(node.label ? idText(node.label) : undefined);
16381638
if (label > 0) {
16391639
emitBreak(label, /*location*/ node);
16401640
}
@@ -1646,7 +1646,7 @@ namespace ts {
16461646

16471647
function visitContinueStatement(node: ContinueStatement): Statement {
16481648
if (inStatementContainingYield) {
1649-
const label = findContinueTarget(node.label && unescapeLeadingUnderscores(node.label.escapedText));
1649+
const label = findContinueTarget(node.label && idText(node.label));
16501650
if (label > 0) {
16511651
return createInlineBreak(label, /*location*/ node);
16521652
}
@@ -1656,7 +1656,7 @@ namespace ts {
16561656
}
16571657

16581658
function transformAndEmitBreakStatement(node: BreakStatement): void {
1659-
const label = findBreakTarget(node.label ? unescapeLeadingUnderscores(node.label.escapedText) : undefined);
1659+
const label = findBreakTarget(node.label ? idText(node.label) : undefined);
16601660
if (label > 0) {
16611661
emitBreak(label, /*location*/ node);
16621662
}
@@ -1668,7 +1668,7 @@ namespace ts {
16681668

16691669
function visitBreakStatement(node: BreakStatement): Statement {
16701670
if (inStatementContainingYield) {
1671-
const label = findBreakTarget(node.label && unescapeLeadingUnderscores(node.label.escapedText));
1671+
const label = findBreakTarget(node.label && idText(node.label));
16721672
if (label > 0) {
16731673
return createInlineBreak(label, /*location*/ node);
16741674
}
@@ -1847,7 +1847,7 @@ namespace ts {
18471847
// /*body*/
18481848
// .endlabeled
18491849
// .mark endLabel
1850-
beginLabeledBlock(unescapeLeadingUnderscores(node.label.escapedText));
1850+
beginLabeledBlock(idText(node.label));
18511851
transformAndEmitEmbeddedStatement(node.statement);
18521852
endLabeledBlock();
18531853
}
@@ -1858,7 +1858,7 @@ namespace ts {
18581858

18591859
function visitLabeledStatement(node: LabeledStatement) {
18601860
if (inStatementContainingYield) {
1861-
beginScriptLabeledBlock(unescapeLeadingUnderscores(node.label.escapedText));
1861+
beginScriptLabeledBlock(idText(node.label));
18621862
}
18631863

18641864
node = visitEachChild(node, visitor, context);
@@ -1959,7 +1959,7 @@ namespace ts {
19591959
}
19601960

19611961
function substituteExpressionIdentifier(node: Identifier) {
1962-
if (!isGeneratedIdentifier(node) && renamedCatchVariables && renamedCatchVariables.has(unescapeLeadingUnderscores(node.escapedText))) {
1962+
if (!isGeneratedIdentifier(node) && renamedCatchVariables && renamedCatchVariables.has(idText(node))) {
19631963
const original = getOriginalNode(node);
19641964
if (isIdentifier(original) && original.parent) {
19651965
const declaration = resolver.getReferencedValueDeclaration(original);
@@ -2128,7 +2128,7 @@ namespace ts {
21282128
hoistVariableDeclaration(variable.name);
21292129
}
21302130
else {
2131-
const text = unescapeLeadingUnderscores((<Identifier>variable.name).escapedText);
2131+
const text = idText(<Identifier>variable.name);
21322132
name = declareLocal(text);
21332133
if (!renamedCatchVariables) {
21342134
renamedCatchVariables = createMap<boolean>();

src/compiler/transformers/jsx.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ namespace ts {
253253
else {
254254
const name = (<JsxOpeningLikeElement>node).tagName;
255255
if (isIdentifier(name) && isIntrinsicJsxName(name.escapedText)) {
256-
return createLiteral(unescapeLeadingUnderscores(name.escapedText));
256+
return createLiteral(idText(name));
257257
}
258258
else {
259259
return createExpressionFromEntityName(name);
@@ -268,11 +268,12 @@ namespace ts {
268268
*/
269269
function getAttributeName(node: JsxAttribute): StringLiteral | Identifier {
270270
const name = node.name;
271-
if (/^[A-Za-z_]\w*$/.test(unescapeLeadingUnderscores(name.escapedText))) {
271+
const text = idText(name);
272+
if (/^[A-Za-z_]\w*$/.test(text)) {
272273
return name;
273274
}
274275
else {
275-
return createLiteral(unescapeLeadingUnderscores(name.escapedText));
276+
return createLiteral(text);
276277
}
277278
}
278279

src/compiler/transformers/module/module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1231,7 +1231,7 @@ namespace ts {
12311231
*/
12321232
function appendExportsOfDeclaration(statements: Statement[] | undefined, decl: Declaration): Statement[] | undefined {
12331233
const name = getDeclarationName(decl);
1234-
const exportSpecifiers = currentModuleInfo.exportSpecifiers.get(unescapeLeadingUnderscores(name.escapedText));
1234+
const exportSpecifiers = currentModuleInfo.exportSpecifiers.get(idText(name));
12351235
if (exportSpecifiers) {
12361236
for (const exportSpecifier of exportSpecifiers) {
12371237
statements = appendExportStatement(statements, exportSpecifier.name, name, /*location*/ exportSpecifier.name);

src/compiler/transformers/module/system.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ namespace ts {
353353
// write name of indirectly exported entry, i.e. 'export {x} from ...'
354354
exportedNames.push(
355355
createPropertyAssignment(
356-
createLiteral(unescapeLeadingUnderscores((element.name || element.propertyName).escapedText)),
356+
createLiteral(idText(element.name || element.propertyName)),
357357
createTrue()
358358
)
359359
);
@@ -504,10 +504,10 @@ namespace ts {
504504
for (const e of (<ExportDeclaration>entry).exportClause.elements) {
505505
properties.push(
506506
createPropertyAssignment(
507-
createLiteral(unescapeLeadingUnderscores(e.name.escapedText)),
507+
createLiteral(idText(e.name)),
508508
createElementAccess(
509509
parameterName,
510-
createLiteral(unescapeLeadingUnderscores((e.propertyName || e.name).escapedText))
510+
createLiteral(idText(e.propertyName || e.name))
511511
)
512512
)
513513
);
@@ -1028,7 +1028,7 @@ namespace ts {
10281028
let excludeName: string;
10291029
if (exportSelf) {
10301030
statements = appendExportStatement(statements, decl.name, getLocalName(decl));
1031-
excludeName = unescapeLeadingUnderscores(decl.name.escapedText);
1031+
excludeName = idText(decl.name);
10321032
}
10331033

10341034
statements = appendExportsOfDeclaration(statements, decl, excludeName);
@@ -1080,7 +1080,7 @@ namespace ts {
10801080
}
10811081

10821082
const name = getDeclarationName(decl);
1083-
const exportSpecifiers = moduleInfo.exportSpecifiers.get(unescapeLeadingUnderscores(name.escapedText));
1083+
const exportSpecifiers = moduleInfo.exportSpecifiers.get(idText(name));
10841084
if (exportSpecifiers) {
10851085
for (const exportSpecifier of exportSpecifiers) {
10861086
if (exportSpecifier.name.escapedText !== excludeName) {

src/compiler/transformers/ts.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2038,7 +2038,7 @@ namespace ts {
20382038
: (<ComputedPropertyName>name).expression;
20392039
}
20402040
else if (isIdentifier(name)) {
2041-
return createLiteral(unescapeLeadingUnderscores(name.escapedText));
2041+
return createLiteral(idText(name));
20422042
}
20432043
else {
20442044
return getSynthesizedClone(name);
@@ -3240,7 +3240,7 @@ namespace ts {
32403240
function getClassAliasIfNeeded(node: ClassDeclaration) {
32413241
if (resolver.getNodeCheckFlags(node) & NodeCheckFlags.ClassWithConstructorReference) {
32423242
enableSubstitutionForClassAliases();
3243-
const classAlias = createUniqueName(node.name && !isGeneratedIdentifier(node.name) ? unescapeLeadingUnderscores(node.name.escapedText) : "default");
3243+
const classAlias = createUniqueName(node.name && !isGeneratedIdentifier(node.name) ? idText(node.name) : "default");
32443244
classAliases[getOriginalNodeId(node)] = classAlias;
32453245
hoistVariableDeclaration(classAlias);
32463246
return classAlias;

0 commit comments

Comments
 (0)