mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-23 07:07:09 -05:00
handle non-qualified names, add 'propagateEnumConstants' command line option
This commit is contained in:
@@ -7452,6 +7452,8 @@ module ts {
|
||||
}
|
||||
return undefined;
|
||||
case SyntaxKind.BinaryExpression:
|
||||
if (!program.getCompilerOptions().propagateEnumConstants) return undefined;
|
||||
|
||||
var left = evalConstant((<BinaryExpression>e).left);
|
||||
if (left === undefined) return undefined;
|
||||
var right = evalConstant((<BinaryExpression>e).right);
|
||||
@@ -7467,12 +7469,20 @@ module ts {
|
||||
return undefined;
|
||||
case SyntaxKind.NumericLiteral:
|
||||
return +(<LiteralExpression>e).text;
|
||||
case SyntaxKind.Identifier:
|
||||
case SyntaxKind.PropertyAccess:
|
||||
var refSymbol = resolveEntityName(member, e, SymbolFlags.EnumMember, /*suppressErrors*/ true);
|
||||
if (!program.getCompilerOptions().propagateEnumConstants) return undefined;
|
||||
|
||||
var refSymbol =
|
||||
e.kind === SyntaxKind.Identifier
|
||||
? resolveName(member, (<Identifier>e).text, SymbolFlags.EnumMember, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined)
|
||||
: resolveEntityName(member, e, SymbolFlags.EnumMember, /*suppressErrors*/ true);
|
||||
|
||||
if (!refSymbol) return undefined;
|
||||
var refDecl = <EnumMember>refSymbol.valueDeclaration;
|
||||
// self references are not permitted
|
||||
if (member === refDecl) return undefined;
|
||||
// non-qualified names are permitted only to members defined in the same enum
|
||||
if (member === refDecl || (e.kind === SyntaxKind.Identifier && refDecl.parent !== member.parent)) return undefined;
|
||||
// enumMemberValue might be undefined if corresponding enum value was not yet computed and it is ok to return undefined in this case
|
||||
return <number>getNodeLinks(refDecl).enumMemberValue;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ module ts {
|
||||
type: "boolean",
|
||||
},
|
||||
{
|
||||
name: "emitBOM",
|
||||
name: "emitBOM",
|
||||
type: "boolean"
|
||||
},
|
||||
{
|
||||
@@ -102,7 +102,7 @@ module ts {
|
||||
{
|
||||
name: "target",
|
||||
shortName: "t",
|
||||
type: { "es3": ScriptTarget.ES3, "es5": ScriptTarget.ES5 , "es6": ScriptTarget.ES6 },
|
||||
type: { "es3": ScriptTarget.ES3, "es5": ScriptTarget.ES5, "es6": ScriptTarget.ES6 },
|
||||
description: Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental,
|
||||
paramType: Diagnostics.VERSION,
|
||||
error: Diagnostics.Argument_for_target_option_must_be_es3_es5_or_es6
|
||||
@@ -118,6 +118,11 @@ module ts {
|
||||
shortName: "w",
|
||||
type: "boolean",
|
||||
description: Diagnostics.Watch_input_files,
|
||||
},
|
||||
{
|
||||
name: "propagateEnumConstants",
|
||||
type: "boolean",
|
||||
description: Diagnostics.Propagate_constant_values_in_enum_member_initializers
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
@@ -369,6 +369,7 @@ module ts {
|
||||
Specify_module_code_generation_Colon_commonjs_or_amd: { code: 6016, category: DiagnosticCategory.Message, key: "Specify module code generation: 'commonjs' or 'amd'" },
|
||||
Print_this_message: { code: 6017, category: DiagnosticCategory.Message, key: "Print this message." },
|
||||
Print_the_compiler_s_version: { code: 6019, category: DiagnosticCategory.Message, key: "Print the compiler's version." },
|
||||
Propagate_constant_values_in_enum_member_initializers: { code: 6020, category: DiagnosticCategory.Message, key: "Propagate constant values in enum member initializers." },
|
||||
Syntax_Colon_0: { code: 6023, category: DiagnosticCategory.Message, key: "Syntax: {0}" },
|
||||
options: { code: 6024, category: DiagnosticCategory.Message, key: "options" },
|
||||
file: { code: 6025, category: DiagnosticCategory.Message, key: "file" },
|
||||
|
||||
@@ -1476,6 +1476,10 @@
|
||||
"category": "Message",
|
||||
"code": 6019
|
||||
},
|
||||
"Propagate constant values in enum member initializers.": {
|
||||
"category": "Message",
|
||||
"code": 6020
|
||||
},
|
||||
"Syntax: {0}": {
|
||||
"category": "Message",
|
||||
"code": 6023
|
||||
|
||||
@@ -1093,6 +1093,7 @@ module ts {
|
||||
target?: ScriptTarget;
|
||||
version?: boolean;
|
||||
watch?: boolean;
|
||||
propagateEnumConstants?: boolean;
|
||||
[option: string]: any;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user