Skip to content

Commit 36805e8

Browse files
authored
Fix emit for reference to exported enum (microsoft#438)
1 parent 22c2a99 commit 36805e8

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

internal/binder/referenceresolver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ func (r *referenceResolver) GetReferencedExportContainer(node *ast.IdentifierNod
153153
// we prefix depends on the kind of entity. SymbolFlags.ExportHasLocal encompasses all the
154154
// kinds that we do NOT prefix.
155155
exportSymbol := r.getMergedSymbol(symbol.ExportSymbol)
156-
if !prefixLocals && exportSymbol.Flags&(ast.SymbolFlagsExportHasLocal|ast.SymbolFlagsVariable) == 0 {
156+
if !prefixLocals && exportSymbol.Flags&ast.SymbolFlagsExportHasLocal != 0 && exportSymbol.Flags&ast.SymbolFlagsVariable == 0 {
157157
return nil
158158
}
159159
symbol = exportSymbol

internal/transformers/commonjsmodule.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1897,7 +1897,7 @@ func (tx *CommonJSModuleTransformer) visitIdentifier(node *ast.IdentifierNode) *
18971897

18981898
// Visits an identifier in an expression position that might reference an imported or exported symbol.
18991899
func (tx *CommonJSModuleTransformer) visitExpressionIdentifier(node *ast.IdentifierNode) *ast.Node {
1900-
if info := tx.emitContext.GetAutoGenerateInfo(node); !(info != nil && info.Flags.HasAllowNameSubstitution()) &&
1900+
if info := tx.emitContext.GetAutoGenerateInfo(node); !(info != nil && !info.Flags.HasAllowNameSubstitution()) &&
19011901
!isHelperName(tx.emitContext, node) &&
19021902
!isLocalName(tx.emitContext, node) &&
19031903
!isDeclarationNameOfEnumOrNamespace(tx.emitContext, node) {

internal/transformers/commonjsmodule_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -936,6 +936,19 @@ exports.a = void 0;
936936
exports.a = 0;
937937
exports.a;`,
938938
},
939+
{
940+
title: "Identifier#3 (from enum)",
941+
input: `export enum E { A }
942+
E.A`,
943+
output: `"use strict";
944+
Object.defineProperty(exports, "__esModule", { value: true });
945+
exports.E = void 0;
946+
var E;
947+
(function (E) {
948+
E[E["A"] = 0] = "A";
949+
})(E || (exports.E = E = {}));
950+
E.A;`,
951+
},
939952

940953
{
941954
title: "Other",

0 commit comments

Comments
 (0)