mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-23 17:30:04 -05:00
don't generate temp variables for computed property names in enums
This commit is contained in:
@@ -1268,7 +1268,7 @@ namespace ts {
|
||||
//
|
||||
|
||||
const prefix = getClassMemberPrefix(node, member);
|
||||
const memberName = getExpressionForPropertyName(member);
|
||||
const memberName = getExpressionForPropertyName(member, /*generateNameForComputedPropertyName*/ true);
|
||||
const descriptor = languageVersion > ScriptTarget.ES3
|
||||
? member.kind === SyntaxKind.PropertyDeclaration
|
||||
// We emit `void 0` here to indicate to `__decorate` that it can invoke `Object.defineProperty` directly, but that it
|
||||
@@ -1742,10 +1742,12 @@ namespace ts {
|
||||
*
|
||||
* @param member The member whose name should be converted into an expression.
|
||||
*/
|
||||
function getExpressionForPropertyName(member: ClassElement | EnumMember): Expression {
|
||||
function getExpressionForPropertyName(member: ClassElement | EnumMember, generateNameForComputedPropertyName: boolean): Expression {
|
||||
const name = member.name;
|
||||
if (isComputedPropertyName(name)) {
|
||||
return getGeneratedNameForNode(name);
|
||||
return generateNameForComputedPropertyName
|
||||
? getGeneratedNameForNode(name)
|
||||
: (<ComputedPropertyName>name).expression;
|
||||
}
|
||||
else if (isIdentifier(name)) {
|
||||
return createLiteral(name.text);
|
||||
@@ -2329,7 +2331,10 @@ namespace ts {
|
||||
* @param member The enum member node.
|
||||
*/
|
||||
function transformEnumMember(member: EnumMember): Statement {
|
||||
const name = getExpressionForPropertyName(member);
|
||||
// enums don't support computed properties
|
||||
// we pass false as 'generateNameForComputedPropertyName' for a backward compatibility purposes
|
||||
// old emitter always generate 'expression' part of the name as-is.
|
||||
const name = getExpressionForPropertyName(member, /*generateNameForComputedPropertyName*/ false);
|
||||
return createStatement(
|
||||
createAssignment(
|
||||
createElementAccess(
|
||||
|
||||
@@ -80,7 +80,7 @@ z[3].toExponential();
|
||||
z[4].toExponential();
|
||||
var X;
|
||||
(function (X) {
|
||||
X[X["1"] = 1] = "1";
|
||||
X[X[1] = 1] = 1;
|
||||
X[X[2] = 2] = 2;
|
||||
X[X["3"] = 3] = "3";
|
||||
X[X["4"] = 4] = "4";
|
||||
|
||||
Reference in New Issue
Block a user