diff --git a/src/compiler/transformers/es2017.ts b/src/compiler/transformers/es2017.ts index ade1d41b010..66f10db0991 100644 --- a/src/compiler/transformers/es2017.ts +++ b/src/compiler/transformers/es2017.ts @@ -46,7 +46,7 @@ namespace ts { /** Whether the async function contains an element access on super (`super[x]`). */ let hasSuperElementAccess: boolean; /** A set of node IDs for generated super accessors (variable statements). */ - const substitutedSuperAccessors: boolean[] = []; + const substitutedSuperAccessors = new Set(); let contextFlags: ContextFlags = 0; @@ -503,7 +503,7 @@ namespace ts { enableSubstitutionForAsyncMethodsWithSuper(); if (capturedSuperProperties.size) { const variableStatement = createSuperAccessVariableStatement(factory, resolver, node, capturedSuperProperties); - substitutedSuperAccessors[getNodeId(variableStatement)] = true; + substitutedSuperAccessors.add(variableStatement); insertStatementsAfterStandardPrologue(statements, [variableStatement]); } } @@ -613,7 +613,7 @@ namespace ts { } } // Disable substitution in the generated super accessor itself. - else if (enabledSubstitutions && substitutedSuperAccessors[getNodeId(node)]) { + else if (enabledSubstitutions && substitutedSuperAccessors.has(node)) { const savedEnclosingSuperContainerFlags = enclosingSuperContainerFlags; enclosingSuperContainerFlags = 0; previousOnEmitNode(hint, node, emitCallback); diff --git a/src/compiler/transformers/es2018.ts b/src/compiler/transformers/es2018.ts index 846fd992ff2..f18c0964f61 100644 --- a/src/compiler/transformers/es2018.ts +++ b/src/compiler/transformers/es2018.ts @@ -70,7 +70,7 @@ namespace ts { /** Whether the async function contains an element access on super (`super[x]`). */ let hasSuperElementAccess: boolean; /** A set of node IDs for generated super accessors. */ - const substitutedSuperAccessors: boolean[] = []; + const substitutedSuperAccessors = new Set(); return chainBundle(context, transformSourceFile); @@ -972,7 +972,7 @@ namespace ts { if (emitSuperHelpers) { enableSubstitutionForAsyncMethodsWithSuper(); const variableStatement = createSuperAccessVariableStatement(factory, resolver, node, capturedSuperProperties); - substitutedSuperAccessors[getNodeId(variableStatement)] = true; + substitutedSuperAccessors.add(variableStatement); insertStatementsAfterStandardPrologue(statements, [variableStatement]); } @@ -1087,7 +1087,7 @@ namespace ts { } } // Disable substitution in the generated super accessor itself. - else if (enabledSubstitutions && substitutedSuperAccessors[getNodeId(node)]) { + else if (enabledSubstitutions && substitutedSuperAccessors.has(node)) { const savedEnclosingSuperContainerFlags = enclosingSuperContainerFlags; enclosingSuperContainerFlags = 0 as NodeCheckFlags; previousOnEmitNode(hint, node, emitCallback);