diff --git a/src/services/services.ts b/src/services/services.ts
index 018f322ac41..82f19d1797c 100644
--- a/src/services/services.ts
+++ b/src/services/services.ts
@@ -2403,7 +2403,7 @@ module ts {
case SyntaxKind.CommaToken:
return containingNodeKind === SyntaxKind.VariableDeclaration ||
containingNodeKind === SyntaxKind.VariableStatement ||
- containingNodeKind === SyntaxKind.EnumDeclaration || // enum { foo, |
+ containingNodeKind === SyntaxKind.EnumDeclaration || // enum a { foo, |
isFunction(containingNodeKind);
case SyntaxKind.OpenParenToken:
@@ -2411,8 +2411,12 @@ module ts {
isFunction(containingNodeKind);
case SyntaxKind.OpenBraceToken:
- return containingNodeKind === SyntaxKind.EnumDeclaration; // enum { |
- // containingNodeKind === SyntaxKind.InterfaceDeclaration;
+ return containingNodeKind === SyntaxKind.EnumDeclaration || // enum a { |
+ containingNodeKind === SyntaxKind.InterfaceDeclaration; // interface a { |
+
+ case SyntaxKind.SemicolonToken:
+ return containingNodeKind === SyntaxKind.Property &&
+ previousToken.parent.parent.kind === SyntaxKind.InterfaceDeclaration; // interface a { f; |
case SyntaxKind.PublicKeyword:
case SyntaxKind.PrivateKeyword:
diff --git a/tests/cases/fourslash/completionListAtIdentifierDefinitionLocations_interfaceMembers.ts b/tests/cases/fourslash/completionListAtIdentifierDefinitionLocations_interfaceMembers.ts
new file mode 100644
index 00000000000..266b0b78c9c
--- /dev/null
+++ b/tests/cases/fourslash/completionListAtIdentifierDefinitionLocations_interfaceMembers.ts
@@ -0,0 +1,10 @@
+///
+
+////var aa = 1;
+
+////interface a { /*interfaceValue1*/
+
+test.markers().forEach((m) => {
+ goTo.position(m.position, m.fileName);
+ verify.completionListIsEmpty();
+});
diff --git a/tests/cases/fourslash/completionListAtIdentifierDefinitionLocations_interfaceMembers2.ts b/tests/cases/fourslash/completionListAtIdentifierDefinitionLocations_interfaceMembers2.ts
new file mode 100644
index 00000000000..82a30325948
--- /dev/null
+++ b/tests/cases/fourslash/completionListAtIdentifierDefinitionLocations_interfaceMembers2.ts
@@ -0,0 +1,10 @@
+///
+
+////var aa = 1;
+
+////interface a { f/*interfaceValue2*/
+
+test.markers().forEach((m) => {
+ goTo.position(m.position, m.fileName);
+ verify.completionListIsEmpty();
+});
diff --git a/tests/cases/fourslash/completionListAtIdentifierDefinitionLocations_interfaceMembers3.ts b/tests/cases/fourslash/completionListAtIdentifierDefinitionLocations_interfaceMembers3.ts
new file mode 100644
index 00000000000..ed640dd3f1a
--- /dev/null
+++ b/tests/cases/fourslash/completionListAtIdentifierDefinitionLocations_interfaceMembers3.ts
@@ -0,0 +1,10 @@
+///
+
+////var aa = 1;
+
+////interface a { f; /*interfaceValue3*/
+
+test.markers().forEach((m) => {
+ goTo.position(m.position, m.fileName);
+ verify.completionListIsEmpty();
+});