mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-29 16:29:19 -05:00
Move grammar checking : computedPropertyName; there is still error from grammar check on ambient context and generator
This commit is contained in:
@@ -5357,6 +5357,14 @@ module ts {
|
||||
var properties: SymbolTable = {};
|
||||
var contextualType = getContextualType(node);
|
||||
var typeFlags: TypeFlags;
|
||||
|
||||
// Grammar checking for computedPropertyName
|
||||
forEach(node.properties, property => {
|
||||
if (property.name && property.name.kind === SyntaxKind.ComputedPropertyName) {
|
||||
checkGrammarComputedPropertyName(<ComputedPropertyName>property.name);
|
||||
}
|
||||
});
|
||||
|
||||
for (var id in members) {
|
||||
if (hasProperty(members, id)) {
|
||||
var member = members[id];
|
||||
@@ -5405,6 +5413,7 @@ module ts {
|
||||
properties[member.name] = member;
|
||||
}
|
||||
}
|
||||
|
||||
var stringIndexType = getIndexType(IndexKind.String);
|
||||
var numberIndexType = getIndexType(IndexKind.Number);
|
||||
var result = createAnonymousType(node.symbol, properties, emptyArray, emptyArray, stringIndexType, numberIndexType);
|
||||
@@ -9990,6 +9999,15 @@ module ts {
|
||||
}
|
||||
}
|
||||
|
||||
function checkGrammarComputedPropertyName(node: ComputedPropertyName): void {
|
||||
if (compilerOptions.target < ScriptTarget.ES6) {
|
||||
grammarErrorOnNode(node, Diagnostics.Computed_property_names_are_only_available_when_targeting_ECMAScript_6_and_higher);
|
||||
}
|
||||
else if (node.expression.kind === SyntaxKind.BinaryExpression && (<BinaryExpression>node.expression).operator === SyntaxKind.CommaToken) {
|
||||
grammarErrorOnNode(node.expression, Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name);
|
||||
}
|
||||
}
|
||||
|
||||
function hasParseDiagnostics(sourceFile: SourceFile): boolean {
|
||||
return sourceFile.parseDiagnostics.length > 0;
|
||||
}
|
||||
|
||||
@@ -4638,7 +4638,7 @@ module ts {
|
||||
//case SyntaxKind.BindingElement: return checkBindingElement(<BindingElement>node);
|
||||
//case SyntaxKind.CatchClause: return checkCatchClause(<CatchClause>node);
|
||||
//case SyntaxKind.ClassDeclaration: return checkClassDeclaration(<ClassDeclaration>node);
|
||||
case SyntaxKind.ComputedPropertyName: return checkComputedPropertyName(<ComputedPropertyName>node);
|
||||
//case SyntaxKind.ComputedPropertyName: return checkComputedPropertyName(<ComputedPropertyName>node);
|
||||
case SyntaxKind.Constructor: return checkConstructor(<ConstructorDeclaration>node);
|
||||
case SyntaxKind.DeleteExpression: return checkDeleteExpression(<DeleteExpression> node);
|
||||
case SyntaxKind.ElementAccessExpression: return checkElementAccessExpression(<ElementAccessExpression>node);
|
||||
|
||||
Reference in New Issue
Block a user