@@ -7487,7 +7487,7 @@ module ts {
7487
7487
7488
7488
function checkPropertyDeclaration(node: PropertyDeclaration) {
7489
7489
// Grammar checking
7490
- checkGrammarModifiers(node) || checkGrammarProperty(node);
7490
+ checkGrammarModifiers(node) || checkGrammarProperty(node) || checkGrammarComputedPropertyName(node.name) ;
7491
7491
7492
7492
checkVariableLikeDeclaration(node);
7493
7493
}
@@ -10771,8 +10771,8 @@ module ts {
10771
10771
}
10772
10772
}
10773
10773
10774
- function checkGrammarForDisallowedComputedProperty (node: DeclarationName, message: DiagnosticMessage) {
10775
- if (node.kind === SyntaxKind.ComputedPropertyName) {
10774
+ function checkGrammarForNonSymbolComputedProperty (node: DeclarationName, message: DiagnosticMessage) {
10775
+ if (node.kind === SyntaxKind.ComputedPropertyName && !isWellKnownSymbolSyntactically((<ComputedPropertyName>node).expression) ) {
10776
10776
return grammarErrorOnNode(node, message);
10777
10777
}
10778
10778
}
@@ -10803,17 +10803,17 @@ module ts {
10803
10803
// and accessors are not allowed in ambient contexts in general,
10804
10804
// so this error only really matters for methods.
10805
10805
if (isInAmbientContext(node)) {
10806
- return checkGrammarForDisallowedComputedProperty (node.name, Diagnostics.A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_Symbol);
10806
+ return checkGrammarForNonSymbolComputedProperty (node.name, Diagnostics.A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_Symbol);
10807
10807
}
10808
10808
else if (!node.body) {
10809
- return checkGrammarForDisallowedComputedProperty (node.name, Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_Symbol);
10809
+ return checkGrammarForNonSymbolComputedProperty (node.name, Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_Symbol);
10810
10810
}
10811
10811
}
10812
10812
else if (node.parent.kind === SyntaxKind.InterfaceDeclaration) {
10813
- return checkGrammarForDisallowedComputedProperty (node.name, Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_Symbol);
10813
+ return checkGrammarForNonSymbolComputedProperty (node.name, Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_Symbol);
10814
10814
}
10815
10815
else if (node.parent.kind === SyntaxKind.TypeLiteral) {
10816
- return checkGrammarForDisallowedComputedProperty (node.name, Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_Symbol);
10816
+ return checkGrammarForNonSymbolComputedProperty (node.name, Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_Symbol);
10817
10817
}
10818
10818
}
10819
10819
@@ -11084,17 +11084,17 @@ module ts {
11084
11084
function checkGrammarProperty(node: PropertyDeclaration) {
11085
11085
if (node.parent.kind === SyntaxKind.ClassDeclaration) {
11086
11086
if (checkGrammarForInvalidQuestionMark(node, node.questionToken, Diagnostics.A_class_member_cannot_be_declared_optional) ||
11087
- checkGrammarForDisallowedComputedProperty (node.name, Diagnostics.A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_Symbol)) {
11087
+ checkGrammarForNonSymbolComputedProperty (node.name, Diagnostics.A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_Symbol)) {
11088
11088
return true;
11089
11089
}
11090
11090
}
11091
11091
else if (node.parent.kind === SyntaxKind.InterfaceDeclaration) {
11092
- if (checkGrammarForDisallowedComputedProperty (node.name, Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_Symbol)) {
11092
+ if (checkGrammarForNonSymbolComputedProperty (node.name, Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_Symbol)) {
11093
11093
return true;
11094
11094
}
11095
11095
}
11096
11096
else if (node.parent.kind === SyntaxKind.TypeLiteral) {
11097
- if (checkGrammarForDisallowedComputedProperty (node.name, Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_Symbol)) {
11097
+ if (checkGrammarForNonSymbolComputedProperty (node.name, Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_Symbol)) {
11098
11098
return true;
11099
11099
}
11100
11100
}
0 commit comments