@@ -3631,11 +3631,11 @@ namespace ts {
36313631 const hasJSDoc = hasPrecedingJSDocComment();
36323632 const modifiers = parseModifiers();
36333633 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 );
36353635 }
36363636
36373637 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 );
36393639 }
36403640
36413641 if (isIndexSignature()) {
@@ -5928,10 +5928,10 @@ namespace ts {
59285928 const modifiers = parseModifiers();
59295929
59305930 if (parseContextualModifier(SyntaxKind.GetKeyword)) {
5931- return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.GetAccessor);
5931+ return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.GetAccessor, SignatureFlags.None );
59325932 }
59335933 if (parseContextualModifier(SyntaxKind.SetKeyword)) {
5934- return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.SetAccessor);
5934+ return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.SetAccessor, SignatureFlags.None );
59355935 }
59365936
59375937 const asteriskToken = parseOptionalToken(SyntaxKind.AsteriskToken);
@@ -6701,11 +6701,16 @@ namespace ts {
67016701 }
67026702
67036703 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+ }
67076713 }
6708-
67096714 return parseFunctionBlock(flags, diagnosticMessage);
67106715 }
67116716
@@ -6972,12 +6977,12 @@ namespace ts {
69726977 return parsePropertyDeclaration(pos, hasJSDoc, decorators, modifiers, name, questionToken);
69736978 }
69746979
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 {
69766981 const name = parsePropertyName();
69776982 const typeParameters = parseTypeParameters();
69786983 const parameters = parseParameters(SignatureFlags.None);
69796984 const type = parseReturnType(SyntaxKind.ColonToken, /*isType*/ false);
6980- const body = parseFunctionBlockOrSemicolon(SignatureFlags.None );
6985+ const body = parseFunctionBlockOrSemicolon(flags );
69816986 const node = kind === SyntaxKind.GetAccessor
69826987 ? factory.createGetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, type, body)
69836988 : factory.createSetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, body);
@@ -7188,11 +7193,11 @@ namespace ts {
71887193 }
71897194
71907195 if (parseContextualModifier(SyntaxKind.GetKeyword)) {
7191- return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.GetAccessor);
7196+ return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.GetAccessor, SignatureFlags.None );
71927197 }
71937198
71947199 if (parseContextualModifier(SyntaxKind.SetKeyword)) {
7195- return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.SetAccessor);
7200+ return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, SyntaxKind.SetAccessor, SignatureFlags.None );
71967201 }
71977202
71987203 if (token() === SyntaxKind.ConstructorKeyword || token() === SyntaxKind.StringLiteral) {
0 commit comments