Skip to content

Commit aa91aa7

Browse files
Remove IndexMemberDeclaration, we can just use IndexSignature instead.
Conflicts: src/services/syntax/SyntaxGenerator.js.map
1 parent 749501e commit aa91aa7

12 files changed

Lines changed: 37 additions & 93 deletions

src/services/syntax/SyntaxGenerator.js

Lines changed: 2 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/services/syntax/SyntaxGenerator.js.map

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/services/syntax/parser.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1360,8 +1360,8 @@ module TypeScript.Parser {
13601360
if (isConstructorDeclaration()) {
13611361
return parseConstructorDeclaration(modifiers);
13621362
}
1363-
else if (isIndexMemberDeclaration()) {
1364-
return parseIndexMemberDeclaration(modifiers);
1363+
else if (isIndexSignature(/*peekIndex:*/ 0)) {
1364+
return parseIndexSignature(modifiers);
13651365
}
13661366
else if (isAccessor(inErrorRecovery)) {
13671367
return parseAccessor(modifiers);
@@ -1442,12 +1442,6 @@ module TypeScript.Parser {
14421442
return isIndexSignature(/*peekIndex:*/ 0);
14431443
}
14441444

1445-
function parseIndexMemberDeclaration(modifiers: ISyntaxToken[]): IndexMemberDeclarationSyntax {
1446-
return new IndexMemberDeclarationSyntax(contextFlags,
1447-
modifiers,
1448-
parseIndexSignature());
1449-
}
1450-
14511445
function isFunctionDeclaration(modifierCount: number): boolean {
14521446
return peekToken(modifierCount).kind === SyntaxKind.FunctionKeyword;
14531447
}
@@ -1593,7 +1587,7 @@ module TypeScript.Parser {
15931587
return parseConstructSignature();
15941588
}
15951589
else if (isIndexSignature(/*tokenIndex:*/ 0)) {
1596-
return parseIndexSignature();
1590+
return parseIndexSignature(/*modifiers:*/ []);
15971591
}
15981592
else if (isMethodOrPropertySignature(inErrorRecovery)) {
15991593
var propertyName = parsePropertyName();
@@ -1618,8 +1612,9 @@ module TypeScript.Parser {
16181612
parseCallSignatureWithSemicolonOrComma(/*requireCompleteTypeParameterList:*/ false, /*yieldAndGeneratorParameterContext:*/ false, /*asyncContext:*/ false));
16191613
}
16201614

1621-
function parseIndexSignature(): IndexSignatureSyntax {
1615+
function parseIndexSignature(modifiers: ISyntaxToken[]): IndexSignatureSyntax {
16221616
return new IndexSignatureSyntax(contextFlags,
1617+
modifiers,
16231618
eatToken(SyntaxKind.OpenBracketToken),
16241619
parseSeparatedSyntaxList<ParameterSyntax>(ListParsingState.IndexSignature_Parameters),
16251620
eatToken(SyntaxKind.CloseBracketToken),

src/services/syntax/prettyPrinter.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,7 @@ module TypeScript.PrettyPrinter {
600600
}
601601

602602
public visitIndexSignature(node: IndexSignatureSyntax): void {
603+
this.appendSpaceList(node.modifiers);
603604
this.appendToken(node.openBracketToken);
604605
this.appendSeparatorSpaceList(node.parameters)
605606
this.appendToken(node.closeBracketToken);
@@ -692,12 +693,6 @@ module TypeScript.PrettyPrinter {
692693
this.appendBody(node.body);
693694
}
694695

695-
public visitIndexMemberDeclaration(node: IndexMemberDeclarationSyntax): void {
696-
this.appendSpaceList(node.modifiers);
697-
this.ensureSpace();
698-
visitNodeOrToken(this, node.indexSignature);
699-
}
700-
701696
public visitMemberFunctionDeclaration(node: MemberFunctionDeclarationSyntax): void {
702697
this.appendSpaceList(node.modifiers);
703698
this.ensureSpace();

src/services/syntax/syntaxGenerator.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -555,8 +555,9 @@ var definitions:ITypeDefinition[] = [
555555
<any>{
556556
name: 'IndexSignatureSyntax',
557557
baseType: 'ISyntaxNode',
558-
interfaces: ['ITypeMemberSyntax'],
558+
interfaces: ['ITypeMemberSyntax', 'IClassElementSyntax'],
559559
children: [
560+
<any>{ name: 'modifiers', isList: true, elementType: 'ISyntaxToken' },
560561
<any>{ name: 'openBracketToken', isToken: true },
561562
<any>{ name: 'parameters', isSeparatedList: true, elementType: 'ParameterSyntax' },
562563
<any>{ name: 'closeBracketToken', isToken: true },
@@ -717,16 +718,6 @@ var definitions:ITypeDefinition[] = [
717718
],
718719
isTypeScriptSpecific: true
719720
},
720-
<any>{
721-
name: 'IndexMemberDeclarationSyntax',
722-
baseType: 'ISyntaxNode',
723-
interfaces: ['IClassElementSyntax'],
724-
children: [
725-
<any>{ name: 'modifiers', isList: true, elementType: 'ISyntaxToken' },
726-
<any>{ name: 'indexSignature', type: 'IndexSignatureSyntax' }
727-
],
728-
isTypeScriptSpecific: true
729-
},
730721
<any>{
731722
name: 'ThrowStatementSyntax',
732723
baseType: 'ISyntaxNode',

src/services/syntax/syntaxInterfaces.generated.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -174,12 +174,6 @@ module TypeScript {
174174
}
175175
export interface ConstructorDeclarationConstructor { new (data: number, modifiers: ISyntaxToken[], constructorKeyword: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken): ConstructorDeclarationSyntax }
176176

177-
export interface IndexMemberDeclarationSyntax extends ISyntaxNode, IClassElementSyntax {
178-
modifiers: ISyntaxToken[];
179-
indexSignature: IndexSignatureSyntax;
180-
}
181-
export interface IndexMemberDeclarationConstructor { new (data: number, modifiers: ISyntaxToken[], indexSignature: IndexSignatureSyntax): IndexMemberDeclarationSyntax }
182-
183177
export interface GetAccessorSyntax extends ISyntaxNode, IAccessorSyntax {
184178
modifiers: ISyntaxToken[];
185179
getKeyword: ISyntaxToken;
@@ -220,14 +214,15 @@ module TypeScript {
220214
}
221215
export interface ConstructSignatureConstructor { new (data: number, newKeyword: ISyntaxToken, callSignature: CallSignatureSyntax): ConstructSignatureSyntax }
222216

223-
export interface IndexSignatureSyntax extends ISyntaxNode, ITypeMemberSyntax {
217+
export interface IndexSignatureSyntax extends ISyntaxNode, ITypeMemberSyntax, IClassElementSyntax {
218+
modifiers: ISyntaxToken[];
224219
openBracketToken: ISyntaxToken;
225220
parameters: ISeparatedSyntaxList<ParameterSyntax>;
226221
closeBracketToken: ISyntaxToken;
227222
typeAnnotation: TypeAnnotationSyntax;
228223
semicolonOrCommaToken: ISyntaxToken;
229224
}
230-
export interface IndexSignatureConstructor { new (data: number, openBracketToken: ISyntaxToken, parameters: ISeparatedSyntaxList<ParameterSyntax>, closeBracketToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken): IndexSignatureSyntax }
225+
export interface IndexSignatureConstructor { new (data: number, modifiers: ISyntaxToken[], openBracketToken: ISyntaxToken, parameters: ISeparatedSyntaxList<ParameterSyntax>, closeBracketToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken): IndexSignatureSyntax }
231226

232227
export interface MethodSignatureSyntax extends ISyntaxNode, ITypeMemberSyntax {
233228
propertyName: IPropertyNameSyntax;

src/services/syntax/syntaxKind.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,6 @@ module TypeScript {
182182
MemberFunctionDeclaration,
183183
MemberVariableDeclaration,
184184
ConstructorDeclaration,
185-
IndexMemberDeclaration,
186185

187186
// ClassElement and PropertyAssignment
188187
GetAccessor,

src/services/syntax/syntaxNodes.concrete.generated.ts

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -475,22 +475,6 @@ module TypeScript {
475475
}
476476
}
477477

478-
export var IndexMemberDeclarationSyntax: IndexMemberDeclarationConstructor = <any>function(data: number, modifiers: ISyntaxToken[], indexSignature: IndexSignatureSyntax) {
479-
if (data) { this.__data = data; }
480-
this.modifiers = modifiers,
481-
this.indexSignature = indexSignature,
482-
modifiers.parent = this,
483-
indexSignature.parent = this;
484-
};
485-
IndexMemberDeclarationSyntax.prototype.kind = SyntaxKind.IndexMemberDeclaration;
486-
IndexMemberDeclarationSyntax.prototype.childCount = 2;
487-
IndexMemberDeclarationSyntax.prototype.childAt = function(index: number): ISyntaxElement {
488-
switch (index) {
489-
case 0: return this.modifiers;
490-
case 1: return this.indexSignature;
491-
}
492-
}
493-
494478
export var GetAccessorSyntax: GetAccessorConstructor = <any>function(data: number, modifiers: ISyntaxToken[], getKeyword: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) {
495479
if (data) { this.__data = data; }
496480
this.modifiers = modifiers,
@@ -601,28 +585,31 @@ module TypeScript {
601585
}
602586
}
603587

604-
export var IndexSignatureSyntax: IndexSignatureConstructor = <any>function(data: number, openBracketToken: ISyntaxToken, parameters: ISeparatedSyntaxList<ParameterSyntax>, closeBracketToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken) {
588+
export var IndexSignatureSyntax: IndexSignatureConstructor = <any>function(data: number, modifiers: ISyntaxToken[], openBracketToken: ISyntaxToken, parameters: ISeparatedSyntaxList<ParameterSyntax>, closeBracketToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken) {
605589
if (data) { this.__data = data; }
590+
this.modifiers = modifiers,
606591
this.openBracketToken = openBracketToken,
607592
this.parameters = parameters,
608593
this.closeBracketToken = closeBracketToken,
609594
this.typeAnnotation = typeAnnotation,
610595
this.semicolonOrCommaToken = semicolonOrCommaToken,
596+
modifiers.parent = this,
611597
openBracketToken.parent = this,
612598
parameters.parent = this,
613599
closeBracketToken.parent = this,
614600
typeAnnotation && (typeAnnotation.parent = this),
615601
semicolonOrCommaToken && (semicolonOrCommaToken.parent = this);
616602
};
617603
IndexSignatureSyntax.prototype.kind = SyntaxKind.IndexSignature;
618-
IndexSignatureSyntax.prototype.childCount = 5;
604+
IndexSignatureSyntax.prototype.childCount = 6;
619605
IndexSignatureSyntax.prototype.childAt = function(index: number): ISyntaxElement {
620606
switch (index) {
621-
case 0: return this.openBracketToken;
622-
case 1: return this.parameters;
623-
case 2: return this.closeBracketToken;
624-
case 3: return this.typeAnnotation;
625-
case 4: return this.semicolonOrCommaToken;
607+
case 0: return this.modifiers;
608+
case 1: return this.openBracketToken;
609+
case 2: return this.parameters;
610+
case 3: return this.closeBracketToken;
611+
case 4: return this.typeAnnotation;
612+
case 5: return this.semicolonOrCommaToken;
626613
}
627614
}
628615

src/services/syntax/syntaxTree.ts

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,8 @@ module TypeScript {
369369

370370
public visitIndexSignature(node: IndexSignatureSyntax): void {
371371
if (this.checkIndexSignatureParameter(node) ||
372-
this.checkForCommaInsteadOfSemicolon(node.semicolonOrCommaToken)) {
372+
this.checkForCommaInsteadOfSemicolon(node.semicolonOrCommaToken) ||
373+
this.checkIndexSignatureModifiers(node)) {
373374
return;
374375
}
375376

@@ -624,15 +625,7 @@ module TypeScript {
624625
return false;
625626
}
626627

627-
public visitIndexMemberDeclaration(node: IndexMemberDeclarationSyntax): void {
628-
if (this.checkIndexMemberModifiers(node)) {
629-
return;
630-
}
631-
632-
super.visitIndexMemberDeclaration(node);
633-
}
634-
635-
private checkIndexMemberModifiers(node: IndexMemberDeclarationSyntax): boolean {
628+
private checkIndexSignatureModifiers(node: IndexSignatureSyntax): boolean {
636629
if (node.modifiers.length > 0) {
637630
return this.pushDiagnostic(node.modifiers[0], DiagnosticCode.Modifiers_cannot_appear_here);
638631
}
@@ -658,7 +651,7 @@ module TypeScript {
658651
public visitGetAccessor(node: GetAccessorSyntax): void {
659652
if (this.checkForAccessorDeclarationInAmbientContext(node) ||
660653
this.checkEcmaScriptVersionIsAtLeast(node.getKeyword, ts.ScriptTarget.ES5, DiagnosticCode.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher) ||
661-
this.checkForDisallowedModifiers(node.modifiers) ||
654+
this.checkForDisallowedModifiersInBlockOrObjectLitera(node.modifiers) ||
662655
this.checkClassElementModifiers(node.modifiers) ||
663656
this.checkForDisallowedAccessorTypeParameters(node.callSignature) ||
664657
this.checkGetAccessorParameter(node) ||
@@ -749,7 +742,7 @@ module TypeScript {
749742
public visitSetAccessor(node: SetAccessorSyntax): void {
750743
if (this.checkForAccessorDeclarationInAmbientContext(node) ||
751744
this.checkEcmaScriptVersionIsAtLeast(node.setKeyword, ts.ScriptTarget.ES5, DiagnosticCode.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher) ||
752-
this.checkForDisallowedModifiers(node.modifiers) ||
745+
this.checkForDisallowedModifiersInBlockOrObjectLitera(node.modifiers) ||
753746
this.checkClassElementModifiers(node.modifiers) ||
754747
this.checkForDisallowedAccessorTypeParameters(node.callSignature) ||
755748
this.checkForDisallowedSetAccessorTypeAnnotation(node) ||
@@ -1432,7 +1425,7 @@ module TypeScript {
14321425
return false;
14331426
}
14341427

1435-
private checkForDisallowedModifiers(modifiers: ISyntaxToken[]): boolean {
1428+
private checkForDisallowedModifiersInBlockOrObjectLitera(modifiers: ISyntaxToken[]): boolean {
14361429
if (this.inBlock || this.inObjectLiteralExpression) {
14371430
if (modifiers.length > 0) {
14381431
return this.pushDiagnostic(modifiers[0], DiagnosticCode.Modifiers_cannot_appear_here);
@@ -1444,7 +1437,7 @@ module TypeScript {
14441437

14451438
public visitFunctionDeclaration(node: FunctionDeclarationSyntax): void {
14461439
if (this.checkForDisallowedDeclareModifier(node.modifiers) ||
1447-
this.checkForDisallowedModifiers(node.modifiers) ||
1440+
this.checkForDisallowedModifiersInBlockOrObjectLitera(node.modifiers) ||
14481441
this.checkForRequiredDeclareModifier(node, node.identifier, node.modifiers) ||
14491442
this.checkModuleElementModifiers(node.modifiers) ||
14501443
this.checkForDisallowedEvalOrArguments(node, node.identifier) ||
@@ -1490,7 +1483,7 @@ module TypeScript {
14901483

14911484
public visitVariableStatement(node: VariableStatementSyntax): void {
14921485
if (this.checkForDisallowedDeclareModifier(node.modifiers) ||
1493-
this.checkForDisallowedModifiers(node.modifiers) ||
1486+
this.checkForDisallowedModifiersInBlockOrObjectLitera(node.modifiers) ||
14941487
this.checkForRequiredDeclareModifier(node, node.variableDeclaration.varConstOrLetKeyword, node.modifiers) ||
14951488
this.checkModuleElementModifiers(node.modifiers) ||
14961489
this.checkForDisallowedAsyncModifier(node.modifiers)) {

src/services/syntax/syntaxUtilities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ module TypeScript {
100100
if (element) {
101101
switch (element.kind) {
102102
case SyntaxKind.ConstructorDeclaration:
103-
case SyntaxKind.IndexMemberDeclaration:
103+
case SyntaxKind.IndexSignature:
104104
case SyntaxKind.MemberFunctionDeclaration:
105105
case SyntaxKind.GetAccessor:
106106
case SyntaxKind.SetAccessor:

0 commit comments

Comments
 (0)