@@ -3631,11 +3631,11 @@ namespace ts {
3631
3631
const hasJSDoc = hasPrecedingJSDocComment();
3632
3632
const modifiers = parseModifiers();
3633
3633
if (parseContextualModifier(SyntaxKind.GetKeyword)) {
3634
- return parseAccessorDeclaration(pos, hasJSDoc, /*decorators*/ undefined, modifiers, SyntaxKind.GetAccessor);
3634
+ return parseAccessorDeclaration(pos, hasJSDoc, /*decorators*/ undefined, modifiers, SyntaxKind.GetAccessor, SignatureFlags.Type );
3635
3635
}
3636
3636
3637
3637
if (parseContextualModifier(SyntaxKind.SetKeyword)) {
3638
- return parseAccessorDeclaration(pos, hasJSDoc, /*decorators*/ undefined, modifiers, SyntaxKind.SetAccessor);
3638
+ return parseAccessorDeclaration(pos, hasJSDoc, /*decorators*/ undefined, modifiers, SyntaxKind.SetAccessor, SignatureFlags.Type );
3639
3639
}
3640
3640
3641
3641
if (isIndexSignature()) {
@@ -5928,10 +5928,10 @@ namespace ts {
5928
5928
const modifiers = parseModifiers();
5929
5929
5930
5930
if (parseContextualModifier(SyntaxKind.GetKeyword)) {
5931
- return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.GetAccessor);
5931
+ return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.GetAccessor, SignatureFlags.None );
5932
5932
}
5933
5933
if (parseContextualModifier(SyntaxKind.SetKeyword)) {
5934
- return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.SetAccessor);
5934
+ return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.SetAccessor, SignatureFlags.None );
5935
5935
}
5936
5936
5937
5937
const asteriskToken = parseOptionalToken(SyntaxKind.AsteriskToken);
@@ -6701,11 +6701,16 @@ namespace ts {
6701
6701
}
6702
6702
6703
6703
function parseFunctionBlockOrSemicolon(flags: SignatureFlags, diagnosticMessage?: DiagnosticMessage): Block | undefined {
6704
- if (token() !== SyntaxKind.OpenBraceToken && canParseSemicolon()) {
6705
- parseSemicolon();
6706
- return;
6704
+ if (token() !== SyntaxKind.OpenBraceToken) {
6705
+ if (flags & SignatureFlags.Type) {
6706
+ parseTypeMemberSemicolon();
6707
+ return;
6708
+ }
6709
+ if (canParseSemicolon()) {
6710
+ parseSemicolon();
6711
+ return;
6712
+ }
6707
6713
}
6708
-
6709
6714
return parseFunctionBlock(flags, diagnosticMessage);
6710
6715
}
6711
6716
@@ -6972,12 +6977,12 @@ namespace ts {
6972
6977
return parsePropertyDeclaration(pos, hasJSDoc, decorators, modifiers, name, questionToken);
6973
6978
}
6974
6979
6975
- function parseAccessorDeclaration(pos: number, hasJSDoc: boolean, decorators: NodeArray<Decorator> | undefined, modifiers: NodeArray<Modifier> | undefined, kind: AccessorDeclaration["kind"]): AccessorDeclaration {
6980
+ function parseAccessorDeclaration(pos: number, hasJSDoc: boolean, decorators: NodeArray<Decorator> | undefined, modifiers: NodeArray<Modifier> | undefined, kind: AccessorDeclaration["kind"], flags: SignatureFlags ): AccessorDeclaration {
6976
6981
const name = parsePropertyName();
6977
6982
const typeParameters = parseTypeParameters();
6978
6983
const parameters = parseParameters(SignatureFlags.None);
6979
6984
const type = parseReturnType(SyntaxKind.ColonToken, /*isType*/ false);
6980
- const body = parseFunctionBlockOrSemicolon(SignatureFlags.None );
6985
+ const body = parseFunctionBlockOrSemicolon(flags );
6981
6986
const node = kind === SyntaxKind.GetAccessor
6982
6987
? factory.createGetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, type, body)
6983
6988
: factory.createSetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, body);
@@ -7188,11 +7193,11 @@ namespace ts {
7188
7193
}
7189
7194
7190
7195
if (parseContextualModifier(SyntaxKind.GetKeyword)) {
7191
- return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.GetAccessor);
7196
+ return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.GetAccessor, SignatureFlags.None );
7192
7197
}
7193
7198
7194
7199
if (parseContextualModifier(SyntaxKind.SetKeyword)) {
7195
- return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.SetAccessor);
7200
+ return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.SetAccessor, SignatureFlags.None );
7196
7201
}
7197
7202
7198
7203
if (token() === SyntaxKind.ConstructorKeyword || token() === SyntaxKind.StringLiteral) {
0 commit comments