mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Simplify enum emit.
This commit is contained in:
+24
-24
@@ -3656,7 +3656,7 @@ module ts {
|
||||
write(") {");
|
||||
increaseIndent();
|
||||
scopeEmitStart(node);
|
||||
emitEnumMemberDeclarations(isConstEnum);
|
||||
emitLines(node.members);
|
||||
decreaseIndent();
|
||||
writeLine();
|
||||
emitToken(SyntaxKind.CloseBraceToken, node.members.end);
|
||||
@@ -3678,31 +3678,29 @@ module ts {
|
||||
write(";");
|
||||
}
|
||||
emitTrailingComments(node);
|
||||
}
|
||||
|
||||
function emitEnumMemberDeclarations(isConstEnum: boolean) {
|
||||
forEach(node.members, member => {
|
||||
writeLine();
|
||||
emitLeadingComments(member);
|
||||
emitStart(member);
|
||||
write(resolver.getLocalNameOfContainer(node));
|
||||
write("[");
|
||||
write(resolver.getLocalNameOfContainer(node));
|
||||
write("[");
|
||||
emitExpressionForPropertyName(member.name);
|
||||
write("] = ");
|
||||
if (member.initializer && !isConstEnum) {
|
||||
emit(member.initializer);
|
||||
}
|
||||
else {
|
||||
write(resolver.getEnumMemberValue(member).toString());
|
||||
}
|
||||
write("] = ");
|
||||
emitExpressionForPropertyName(member.name);
|
||||
emitEnd(member);
|
||||
write(";");
|
||||
emitTrailingComments(member);
|
||||
});
|
||||
function emitEnumMember(node: EnumMember) {
|
||||
var enumParent = <EnumDeclaration>node.parent;
|
||||
emitLeadingComments(node);
|
||||
emitStart(node);
|
||||
write(resolver.getLocalNameOfContainer(enumParent));
|
||||
write("[");
|
||||
write(resolver.getLocalNameOfContainer(enumParent));
|
||||
write("[");
|
||||
emitExpressionForPropertyName(node.name);
|
||||
write("] = ");
|
||||
if (node.initializer && !isConst(enumParent)) {
|
||||
emit(node.initializer);
|
||||
}
|
||||
else {
|
||||
write(resolver.getEnumMemberValue(node).toString());
|
||||
}
|
||||
write("] = ");
|
||||
emitExpressionForPropertyName(node.name);
|
||||
emitEnd(node);
|
||||
write(";");
|
||||
emitTrailingComments(node);
|
||||
}
|
||||
|
||||
function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration: ModuleDeclaration): ModuleDeclaration {
|
||||
@@ -4099,6 +4097,8 @@ module ts {
|
||||
return emitInterfaceDeclaration(<InterfaceDeclaration>node);
|
||||
case SyntaxKind.EnumDeclaration:
|
||||
return emitEnumDeclaration(<EnumDeclaration>node);
|
||||
case SyntaxKind.EnumMember:
|
||||
return emitEnumMember(<EnumMember>node);
|
||||
case SyntaxKind.ModuleDeclaration:
|
||||
return emitModuleDeclaration(<ModuleDeclaration>node);
|
||||
case SyntaxKind.ImportDeclaration:
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
//// [sourceMapValidationEnums.js.map]
|
||||
{"version":3,"file":"sourceMapValidationEnums.js","sourceRoot":"","sources":["sourceMapValidationEnums.ts"],"names":["e","e2","e3"],"mappings":"AAAA,IAAK,CAIJ;AAJD,WAAK,CAAC;IACFA,mBAACA;IACDA,mBAACA;IACDA,mBAACA;AACLA,CAACA,EAJI,CAAC,KAAD,CAAC,QAIL;AACD,IAAK,EAKJ;AALD,WAAK,EAAE;IACHC,aAAIA,EAAEA,OAAAA;IACNA,aAAIA,EAAEA,OAAAA;IACNA,sBAACA;IACDA,wBAAEA;AACNA,CAACA,EALI,EAAE,KAAF,EAAE,QAKN;AACD,IAAK,EACJ;AADD,WAAK,EAAE;AACPC,CAACA,EADI,EAAE,KAAF,EAAE,QACN"}
|
||||
{"version":3,"file":"sourceMapValidationEnums.js","sourceRoot":"","sources":["sourceMapValidationEnums.ts"],"names":["e","e2","e3"],"mappings":"AAAA,IAAK,CAIJ;AAJD,WAAK,CAAC;IACFA,mBAACA,CAAAA;IACDA,mBAACA,CAAAA;IACDA,mBAACA,CAAAA;AACLA,CAACA,EAJI,CAAC,KAAD,CAAC,QAIL;AACD,IAAK,EAKJ;AALD,WAAK,EAAE;IACHC,aAAIA,EAAEA,OAAAA,CAAAA;IACNA,aAAIA,EAAEA,OAAAA,CAAAA;IACNA,sBAACA,CAAAA;IACDA,wBAAEA,CAAAA;AACNA,CAACA,EALI,EAAE,KAAF,EAAE,QAKN;AACD,IAAK,EACJ;AADD,WAAK,EAAE;AACPC,CAACA,EADI,EAAE,KAAF,EAAE,QACN"}
|
||||
@@ -39,31 +39,40 @@ sourceFile:sourceMapValidationEnums.ts
|
||||
>>> e[e["x"] = 0] = "x";
|
||||
1->^^^^
|
||||
2 > ^^^^^^^^^^^^^^^^^^^
|
||||
3 > ^^->
|
||||
3 > ^
|
||||
4 > ^->
|
||||
1-> {
|
||||
>
|
||||
2 > x
|
||||
3 >
|
||||
1->Emitted(3, 5) Source(2, 5) + SourceIndex(0) name (e)
|
||||
2 >Emitted(3, 24) Source(2, 6) + SourceIndex(0) name (e)
|
||||
3 >Emitted(3, 25) Source(2, 6) + SourceIndex(0) name (e)
|
||||
---
|
||||
>>> e[e["y"] = 1] = "y";
|
||||
1->^^^^
|
||||
2 > ^^^^^^^^^^^^^^^^^^^
|
||||
3 > ^^->
|
||||
3 > ^
|
||||
4 > ^->
|
||||
1->,
|
||||
>
|
||||
2 > y
|
||||
3 >
|
||||
1->Emitted(4, 5) Source(3, 5) + SourceIndex(0) name (e)
|
||||
2 >Emitted(4, 24) Source(3, 6) + SourceIndex(0) name (e)
|
||||
3 >Emitted(4, 25) Source(3, 6) + SourceIndex(0) name (e)
|
||||
---
|
||||
>>> e[e["x"] = 2] = "x";
|
||||
1->^^^^
|
||||
2 > ^^^^^^^^^^^^^^^^^^^
|
||||
3 > ^
|
||||
1->,
|
||||
>
|
||||
2 > x
|
||||
3 >
|
||||
1->Emitted(5, 5) Source(4, 5) + SourceIndex(0) name (e)
|
||||
2 >Emitted(5, 24) Source(4, 6) + SourceIndex(0) name (e)
|
||||
3 >Emitted(5, 25) Source(4, 6) + SourceIndex(0) name (e)
|
||||
---
|
||||
>>>})(e || (e = {}));
|
||||
1 >
|
||||
@@ -128,51 +137,63 @@ sourceFile:sourceMapValidationEnums.ts
|
||||
2 > ^^^^^^^^^^^^^
|
||||
3 > ^^
|
||||
4 > ^^^^^^^
|
||||
5 > ^^->
|
||||
5 > ^
|
||||
6 > ^->
|
||||
1-> {
|
||||
>
|
||||
2 > x =
|
||||
3 > 10
|
||||
4 >
|
||||
5 >
|
||||
1->Emitted(9, 5) Source(7, 5) + SourceIndex(0) name (e2)
|
||||
2 >Emitted(9, 18) Source(7, 9) + SourceIndex(0) name (e2)
|
||||
3 >Emitted(9, 20) Source(7, 11) + SourceIndex(0) name (e2)
|
||||
4 >Emitted(9, 27) Source(7, 11) + SourceIndex(0) name (e2)
|
||||
5 >Emitted(9, 28) Source(7, 11) + SourceIndex(0) name (e2)
|
||||
---
|
||||
>>> e2[e2["y"] = 10] = "y";
|
||||
1->^^^^
|
||||
2 > ^^^^^^^^^^^^^
|
||||
3 > ^^
|
||||
4 > ^^^^^^^
|
||||
5 > ^^->
|
||||
5 > ^
|
||||
6 > ^->
|
||||
1->,
|
||||
>
|
||||
2 > y =
|
||||
3 > 10
|
||||
4 >
|
||||
5 >
|
||||
1->Emitted(10, 5) Source(8, 5) + SourceIndex(0) name (e2)
|
||||
2 >Emitted(10, 18) Source(8, 9) + SourceIndex(0) name (e2)
|
||||
3 >Emitted(10, 20) Source(8, 11) + SourceIndex(0) name (e2)
|
||||
4 >Emitted(10, 27) Source(8, 11) + SourceIndex(0) name (e2)
|
||||
5 >Emitted(10, 28) Source(8, 11) + SourceIndex(0) name (e2)
|
||||
---
|
||||
>>> e2[e2["z"] = 11] = "z";
|
||||
1->^^^^
|
||||
2 > ^^^^^^^^^^^^^^^^^^^^^^
|
||||
3 > ^^^^->
|
||||
3 > ^
|
||||
4 > ^^^->
|
||||
1->,
|
||||
>
|
||||
2 > z
|
||||
3 >
|
||||
1->Emitted(11, 5) Source(9, 5) + SourceIndex(0) name (e2)
|
||||
2 >Emitted(11, 27) Source(9, 6) + SourceIndex(0) name (e2)
|
||||
3 >Emitted(11, 28) Source(9, 6) + SourceIndex(0) name (e2)
|
||||
---
|
||||
>>> e2[e2["x2"] = 12] = "x2";
|
||||
1->^^^^
|
||||
2 > ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
3 > ^
|
||||
1->,
|
||||
>
|
||||
2 > x2
|
||||
3 >
|
||||
1->Emitted(12, 5) Source(10, 5) + SourceIndex(0) name (e2)
|
||||
2 >Emitted(12, 29) Source(10, 7) + SourceIndex(0) name (e2)
|
||||
3 >Emitted(12, 30) Source(10, 7) + SourceIndex(0) name (e2)
|
||||
---
|
||||
>>>})(e2 || (e2 = {}));
|
||||
1 >
|
||||
|
||||
Reference in New Issue
Block a user