Skip to content

Commit eef2c12

Browse files
committed
dev
1 parent c6a960e commit eef2c12

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/compiler/checker.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11563,7 +11563,7 @@ module ts {
1156311563
}
1156411564

1156511565
function getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (Node: Node) => string): string {
11566-
let symbol = getResolvedSymbol(node) || (isDeclarationName(node) ? getSymbolOfNode(node.parent) : undefined);
11566+
let symbol = getNodeLinks(node).resolvedSymbol || (isDeclarationName(node) ? getSymbolOfNode(node.parent) : undefined);
1156711567
if (symbol) {
1156811568
// Whan an identifier resolves to a parented symbol, it references an exported entity from
1156911569
// another declaration of the same internal module.
@@ -11687,6 +11687,7 @@ module ts {
1168711687
/** Serializes an EntityName (with substitutions) to an appropriate JS constructor value. Used by the __metadata decorator. */
1168811688
function serializeEntityName(node: EntityName, getGeneratedNameForNode: (Node: Node) => string, fallbackPath?: string[]): string {
1168911689
if (node.kind === SyntaxKind.Identifier) {
11690+
getResolvedSymbol(<Identifier>node);
1169011691
var substitution = getExpressionNameSubstitution(<Identifier>node, getGeneratedNameForNode);
1169111692
var text = substitution || (<Identifier>node).text;
1169211693
if (fallbackPath) {
@@ -11706,15 +11707,15 @@ module ts {
1170611707
}
1170711708

1170811709
/** Serializes an Entity. Used by the __metadata decorator. */
11709-
function serializeEntity(node: TypeReferenceNode, getGeneratedNameForNode: (Node: Node) => string): string {
11710-
var text = "{kind: " + serializeEntityName(node.typeName, getGeneratedNameForNode);
11710+
function serializeEntityFull(node: TypeReferenceNode, getGeneratedNameForNode: (Node: Node) => string): string {
11711+
var text = "{kind: '" + serializeEntityName(node.typeName, getGeneratedNameForNode) + "'";
1171111712
if (node.typeArguments) {
1171211713
text += ', typeArguments: [';
1171311714
node.typeArguments.forEach(function(node, i) {
1171411715
if (i) {
1171511716
text += ', ';
1171611717
}
11717-
text += serializeEntityName((<TypeReferenceNode>node).typeName, getGeneratedNameForNode);
11718+
text += serializeTypeNode(node, getGeneratedNameForNode);
1171811719
});
1171911720
text += ']';
1172011721
}
@@ -11743,7 +11744,12 @@ module ts {
1174311744
return "Boolean";
1174411745
}
1174511746
else if (type.flags & TypeFlags.NumberLike) {
11746-
return "Number";
11747+
if (compilerOptions.emitVerboseMetadata && type.flags & TypeFlags.Enum) {
11748+
return 'function Enum(){return ' + serializeEntityName(node.typeName, getGeneratedNameForNode) + '}';
11749+
}
11750+
else {
11751+
return "Number";
11752+
}
1174711753
}
1174811754
else if (type.flags & TypeFlags.StringLike) {
1174911755
return "String";
@@ -11761,7 +11767,7 @@ module ts {
1176111767
}
1176211768
else if (type.symbol && type.symbol.valueDeclaration) {
1176311769
if (compilerOptions.emitVerboseMetadata) {
11764-
return serializeEntity(node, getGeneratedNameForNode);
11770+
return serializeEntityFull(node, getGeneratedNameForNode);
1176511771
}
1176611772
else {
1176711773
return serializeEntityName(node.typeName, getGeneratedNameForNode);

0 commit comments

Comments
 (0)