@@ -11563,7 +11563,7 @@ module ts {
11563
11563
}
11564
11564
11565
11565
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);
11567
11567
if (symbol) {
11568
11568
// Whan an identifier resolves to a parented symbol, it references an exported entity from
11569
11569
// another declaration of the same internal module.
@@ -11687,6 +11687,7 @@ module ts {
11687
11687
/** Serializes an EntityName (with substitutions) to an appropriate JS constructor value. Used by the __metadata decorator. */
11688
11688
function serializeEntityName(node: EntityName, getGeneratedNameForNode: (Node: Node) => string, fallbackPath?: string[]): string {
11689
11689
if (node.kind === SyntaxKind.Identifier) {
11690
+ getResolvedSymbol(<Identifier>node);
11690
11691
var substitution = getExpressionNameSubstitution(<Identifier>node, getGeneratedNameForNode);
11691
11692
var text = substitution || (<Identifier>node).text;
11692
11693
if (fallbackPath) {
@@ -11706,15 +11707,15 @@ module ts {
11706
11707
}
11707
11708
11708
11709
/** 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) + "'" ;
11711
11712
if (node.typeArguments) {
11712
11713
text += ', typeArguments: [';
11713
11714
node.typeArguments.forEach(function(node, i) {
11714
11715
if (i) {
11715
11716
text += ', ';
11716
11717
}
11717
- text += serializeEntityName((<TypeReferenceNode> node).typeName , getGeneratedNameForNode);
11718
+ text += serializeTypeNode( node, getGeneratedNameForNode);
11718
11719
});
11719
11720
text += ']';
11720
11721
}
@@ -11743,7 +11744,12 @@ module ts {
11743
11744
return "Boolean";
11744
11745
}
11745
11746
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
+ }
11747
11753
}
11748
11754
else if (type.flags & TypeFlags.StringLike) {
11749
11755
return "String";
@@ -11761,7 +11767,7 @@ module ts {
11761
11767
}
11762
11768
else if (type.symbol && type.symbol.valueDeclaration) {
11763
11769
if (compilerOptions.emitVerboseMetadata) {
11764
- return serializeEntity (node, getGeneratedNameForNode);
11770
+ return serializeEntityFull (node, getGeneratedNameForNode);
11765
11771
}
11766
11772
else {
11767
11773
return serializeEntityName(node.typeName, getGeneratedNameForNode);
0 commit comments