diff --git a/tests/cases/fourslash/completionListInClosedFunction01.ts b/tests/cases/fourslash/completionListInClosedFunction01.ts
new file mode 100644
index 00000000000..7c9c2a20139
--- /dev/null
+++ b/tests/cases/fourslash/completionListInClosedFunction01.ts
@@ -0,0 +1,12 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// /*1*/
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInClosedFunction02.ts b/tests/cases/fourslash/completionListInClosedFunction02.ts
new file mode 100644
index 00000000000..a2ae8a9da83
--- /dev/null
+++ b/tests/cases/fourslash/completionListInClosedFunction02.ts
@@ -0,0 +1,18 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string, c: typeof /*1*/) {
+//// }
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c"); // questionable
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInClosedFunction03.ts b/tests/cases/fourslash/completionListInClosedFunction03.ts
new file mode 100644
index 00000000000..b1a10a4a4b2
--- /dev/null
+++ b/tests/cases/fourslash/completionListInClosedFunction03.ts
@@ -0,0 +1,19 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string, c: typeof x = /*1*/) {
+////
+//// }
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c"); // questionable
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInClosedFunction04.ts b/tests/cases/fourslash/completionListInClosedFunction04.ts
new file mode 100644
index 00000000000..fcc7d070eb7
--- /dev/null
+++ b/tests/cases/fourslash/completionListInClosedFunction04.ts
@@ -0,0 +1,19 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = /*1*/, c: typeof x = "hello") {
+////
+//// }
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c"); // definitely questionable
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInClosedFunction05.ts b/tests/cases/fourslash/completionListInClosedFunction05.ts
new file mode 100644
index 00000000000..7ec3985caf0
--- /dev/null
+++ b/tests/cases/fourslash/completionListInClosedFunction05.ts
@@ -0,0 +1,21 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = /*1*/
+//// }
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c");
+
+verify.memberListContains("v"); // questionable
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInClosedFunction06.ts b/tests/cases/fourslash/completionListInClosedFunction06.ts
new file mode 100644
index 00000000000..f1aed3ad1a4
--- /dev/null
+++ b/tests/cases/fourslash/completionListInClosedFunction06.ts
@@ -0,0 +1,14 @@
+///
+
+////interface MyType {
+////}
+////
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = (x: /*1*/);
+//// }
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("MyType");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInClosedFunction07.ts b/tests/cases/fourslash/completionListInClosedFunction07.ts
new file mode 100644
index 00000000000..13b9f5787de
--- /dev/null
+++ b/tests/cases/fourslash/completionListInClosedFunction07.ts
@@ -0,0 +1,25 @@
+///
+
+////interface MyType {
+////}
+////
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = (p: MyType) => /*1*/;
+//// }
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c");
+
+verify.memberListContains("v");
+verify.memberListContains("p");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInClosedObjectTypeLiteralInSignature01.ts b/tests/cases/fourslash/completionListInClosedObjectTypeLiteralInSignature01.ts
new file mode 100644
index 00000000000..5e7d8b30484
--- /dev/null
+++ b/tests/cases/fourslash/completionListInClosedObjectTypeLiteralInSignature01.ts
@@ -0,0 +1,16 @@
+///
+
+////interface I {
+//// [s: string]: TString;
+//// [s: number]: TNumber;
+////}
+////
+////declare function foo(obj: I): { str: T/*1*/ }
+
+goTo.marker("1");
+
+verify.memberListContains("I");
+verify.memberListContains("TString");
+verify.memberListContains("TNumber");
+verify.not.memberListContains("foo");
+verify.not.memberListContains("obj");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInClosedObjectTypeLiteralInSignature02.ts b/tests/cases/fourslash/completionListInClosedObjectTypeLiteralInSignature02.ts
new file mode 100644
index 00000000000..ee0e1e8b90c
--- /dev/null
+++ b/tests/cases/fourslash/completionListInClosedObjectTypeLiteralInSignature02.ts
@@ -0,0 +1,16 @@
+///
+
+////interface I {
+//// [s: string]: TString;
+//// [s: number]: TNumber;
+////}
+////
+////declare function foo(obj: I): { str: TStr/*1*/ }
+
+goTo.marker("1");
+
+verify.memberListContains("I");
+verify.memberListContains("TString");
+verify.not.memberListContains("TNumber");
+verify.not.memberListContains("foo");
+verify.not.memberListContains("obj");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInClosedObjectTypeLiteralInSignature03.ts b/tests/cases/fourslash/completionListInClosedObjectTypeLiteralInSignature03.ts
new file mode 100644
index 00000000000..cdc4e9effff
--- /dev/null
+++ b/tests/cases/fourslash/completionListInClosedObjectTypeLiteralInSignature03.ts
@@ -0,0 +1,16 @@
+///
+
+////interface I {
+//// [s: string]: TString;
+//// [s: number]: TNumber;
+////}
+////
+////declare function foo(obj: I): { str: TString/*1*/ }
+
+goTo.marker("1");
+
+verify.memberListContains("I");
+verify.memberListContains("TString");
+verify.not.memberListContains("TNumber");
+verify.not.memberListContains("foo");
+verify.not.memberListContains("obj");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInClosedObjectTypeLiteralInSignature04.ts b/tests/cases/fourslash/completionListInClosedObjectTypeLiteralInSignature04.ts
new file mode 100644
index 00000000000..a45d98ad4df
--- /dev/null
+++ b/tests/cases/fourslash/completionListInClosedObjectTypeLiteralInSignature04.ts
@@ -0,0 +1,16 @@
+///
+
+////interface I {
+//// [s: string]: TString;
+//// [s: number]: TNumber;
+////}
+////
+////declare function foo(obj: I): { /*1*/ }
+
+goTo.marker("1");
+
+verify.not.memberListContains("I");
+verify.not.memberListContains("TString");
+verify.not.memberListContains("TNumber");
+verify.not.memberListContains("foo");
+verify.not.memberListContains("obj");
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction01.ts b/tests/cases/fourslash/completionListInUnclosedFunction01.ts
new file mode 100644
index 00000000000..4d33d1220f7
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction01.ts
@@ -0,0 +1,12 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// /*1*/
+////
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction02.ts b/tests/cases/fourslash/completionListInUnclosedFunction02.ts
new file mode 100644
index 00000000000..c0c79e94433
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction02.ts
@@ -0,0 +1,16 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string, c: typeof /*1*/
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c"); // questionable
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction03.ts b/tests/cases/fourslash/completionListInUnclosedFunction03.ts
new file mode 100644
index 00000000000..d8b3a0a132f
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction03.ts
@@ -0,0 +1,17 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string, c: typeof /*1*/
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c"); // questionable
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction04.ts b/tests/cases/fourslash/completionListInUnclosedFunction04.ts
new file mode 100644
index 00000000000..e56978732c2
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction04.ts
@@ -0,0 +1,16 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string, c: typeof x = /*1*/
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c"); // questionable
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction05.ts b/tests/cases/fourslash/completionListInUnclosedFunction05.ts
new file mode 100644
index 00000000000..748a334f860
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction05.ts
@@ -0,0 +1,17 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string, c: typeof x = /*1*/
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c"); // questionable
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction06.ts b/tests/cases/fourslash/completionListInUnclosedFunction06.ts
new file mode 100644
index 00000000000..3ceaff78039
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction06.ts
@@ -0,0 +1,17 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = /*1*/, c: typeof x = "hello"
+////
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c"); // definitely questionable
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction07.ts b/tests/cases/fourslash/completionListInUnclosedFunction07.ts
new file mode 100644
index 00000000000..6968a878a77
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction07.ts
@@ -0,0 +1,17 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = /*1*/, c: typeof x = "hello"
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c"); // definitely questionable
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction08.ts b/tests/cases/fourslash/completionListInUnclosedFunction08.ts
new file mode 100644
index 00000000000..5e8b15941c1
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction08.ts
@@ -0,0 +1,19 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = /*1*/
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c");
+
+verify.memberListContains("v"); // questionable
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction09.ts b/tests/cases/fourslash/completionListInUnclosedFunction09.ts
new file mode 100644
index 00000000000..0171ef96342
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction09.ts
@@ -0,0 +1,20 @@
+///
+
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = /*1*/
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c");
+
+verify.memberListContains("v"); // questionable
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction10.ts b/tests/cases/fourslash/completionListInUnclosedFunction10.ts
new file mode 100644
index 00000000000..1d0162b600b
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction10.ts
@@ -0,0 +1,12 @@
+///
+
+////interface MyType {
+////}
+////
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = (p: /*1*/
+
+goTo.marker("1");
+
+verify.memberListContains("MyType");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction11.ts b/tests/cases/fourslash/completionListInUnclosedFunction11.ts
new file mode 100644
index 00000000000..1d0162b600b
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction11.ts
@@ -0,0 +1,12 @@
+///
+
+////interface MyType {
+////}
+////
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = (p: /*1*/
+
+goTo.marker("1");
+
+verify.memberListContains("MyType");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction12.ts b/tests/cases/fourslash/completionListInUnclosedFunction12.ts
new file mode 100644
index 00000000000..b0e36b2fb8a
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction12.ts
@@ -0,0 +1,13 @@
+///
+
+////interface MyType {
+////}
+////
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = (p: /*1*/
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("MyType");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction13.ts b/tests/cases/fourslash/completionListInUnclosedFunction13.ts
new file mode 100644
index 00000000000..8e1334941ad
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction13.ts
@@ -0,0 +1,14 @@
+///
+
+////interface MyType {
+////}
+////
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = (p: /*1*/
+//// }
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("MyType");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction14.ts b/tests/cases/fourslash/completionListInUnclosedFunction14.ts
new file mode 100644
index 00000000000..412fcd86670
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction14.ts
@@ -0,0 +1,25 @@
+///
+
+////interface MyType {
+////}
+////
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = (p: MyType) => /*1*/
+//// }
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c");
+
+verify.memberListContains("v");
+verify.memberListContains("p");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction15.ts b/tests/cases/fourslash/completionListInUnclosedFunction15.ts
new file mode 100644
index 00000000000..73a59795396
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction15.ts
@@ -0,0 +1,24 @@
+///
+
+////interface MyType {
+////}
+////
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = (p: MyType) => /*1*/
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c");
+
+verify.memberListContains("v");
+verify.memberListContains("p");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction16.ts b/tests/cases/fourslash/completionListInUnclosedFunction16.ts
new file mode 100644
index 00000000000..4ec5f41df53
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction16.ts
@@ -0,0 +1,23 @@
+///
+
+////interface MyType {
+////}
+////
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = (p: MyType) => /*1*/
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c");
+
+verify.memberListContains("v");
+verify.memberListContains("p");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction17.ts b/tests/cases/fourslash/completionListInUnclosedFunction17.ts
new file mode 100644
index 00000000000..8cded845673
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction17.ts
@@ -0,0 +1,23 @@
+///
+
+////interface MyType {
+////}
+////
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = (p: MyType) => y + /*1*/
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c");
+
+verify.memberListContains("v");
+verify.memberListContains("p");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction18.ts b/tests/cases/fourslash/completionListInUnclosedFunction18.ts
new file mode 100644
index 00000000000..182694d73d2
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction18.ts
@@ -0,0 +1,24 @@
+///
+
+////interface MyType {
+////}
+////
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = (p: MyType) => y + /*1*/
+////}
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c");
+
+verify.memberListContains("v");
+verify.memberListContains("p");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedFunction19.ts b/tests/cases/fourslash/completionListInUnclosedFunction19.ts
new file mode 100644
index 00000000000..6f49f270250
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedFunction19.ts
@@ -0,0 +1,23 @@
+///
+
+////interface MyType {
+////}
+////
+////function foo(x: string, y: number, z: boolean) {
+//// function bar(a: number, b: string = "hello", c: typeof x = "hello") {
+//// var v = (p: MyType) => { return y + /*1*/
+
+goTo.marker("1");
+
+verify.memberListContains("foo");
+verify.memberListContains("x");
+verify.memberListContains("y");
+verify.memberListContains("z");
+
+verify.memberListContains("bar");
+verify.memberListContains("a");
+verify.memberListContains("b");
+verify.memberListContains("c");
+
+verify.memberListContains("v");
+verify.memberListContains("p");
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionListInUnclosedObjectTypeLiteralInSignature01.ts b/tests/cases/fourslash/completionListInUnclosedObjectTypeLiteralInSignature01.ts
new file mode 100644
index 00000000000..888c6eeed0c
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedObjectTypeLiteralInSignature01.ts
@@ -0,0 +1,16 @@
+///
+
+////interface I {
+//// [s: string]: TString;
+//// [s: number]: TNumber;
+////}
+////
+////declare function foo(obj: I): { str: T/*1*/
+
+goTo.marker("1");
+
+verify.memberListContains("I");
+verify.memberListContains("TString");
+verify.memberListContains("TNumber");
+verify.not.memberListContains("foo");
+verify.not.memberListContains("obj");
diff --git a/tests/cases/fourslash/completionListInUnclosedObjectTypeLiteralInSignature02.ts b/tests/cases/fourslash/completionListInUnclosedObjectTypeLiteralInSignature02.ts
new file mode 100644
index 00000000000..15372ccea0d
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedObjectTypeLiteralInSignature02.ts
@@ -0,0 +1,16 @@
+///
+
+////interface I {
+//// [s: string]: TString;
+//// [s: number]: TNumber;
+////}
+////
+////declare function foo(obj: I): { str: TStr/*1*/
+
+goTo.marker("1");
+
+verify.memberListContains("I");
+verify.memberListContains("TString");
+verify.not.memberListContains("TNumber");
+verify.not.memberListContains("foo");
+verify.not.memberListContains("obj");
diff --git a/tests/cases/fourslash/completionListInUnclosedObjectTypeLiteralInSignature03.ts b/tests/cases/fourslash/completionListInUnclosedObjectTypeLiteralInSignature03.ts
new file mode 100644
index 00000000000..22821eb1084
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedObjectTypeLiteralInSignature03.ts
@@ -0,0 +1,16 @@
+///
+
+////interface I {
+//// [s: string]: TString;
+//// [s: number]: TNumber;
+////}
+////
+////declare function foo(obj: I): { str: TString/*1*/
+
+goTo.marker("1");
+
+verify.memberListContains("I");
+verify.memberListContains("TString");
+verify.not.memberListContains("TNumber");
+verify.not.memberListContains("foo");
+verify.not.memberListContains("obj");
diff --git a/tests/cases/fourslash/completionListInUnclosedObjectTypeLiteralInSignature04.ts b/tests/cases/fourslash/completionListInUnclosedObjectTypeLiteralInSignature04.ts
new file mode 100644
index 00000000000..c7f53e0e0df
--- /dev/null
+++ b/tests/cases/fourslash/completionListInUnclosedObjectTypeLiteralInSignature04.ts
@@ -0,0 +1,16 @@
+///
+
+////interface I {
+//// [s: string]: TString;
+//// [s: number]: TNumber;
+////}
+////
+////declare function foo(obj: I): { /*1*/
+
+goTo.marker("1");
+
+verify.not.memberListContains("I");
+verify.not.memberListContains("TString");
+verify.not.memberListContains("TNumber");
+verify.not.memberListContains("foo");
+verify.not.memberListContains("obj");