diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index a32022f9aee..cb7260f6d80 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -167,9 +167,9 @@ namespace ts.Completions.StringCompletions { case SyntaxKind.LiteralType: { const grandParent = walkUpParentheses(parent.parent); switch (grandParent.kind) { + case SyntaxKind.ExpressionWithTypeArguments: case SyntaxKind.TypeReference: { - const typeReference = grandParent as TypeReferenceNode; - const typeArgument = findAncestor(parent, n => n.parent === typeReference) as LiteralTypeNode; + const typeArgument = findAncestor(parent, n => n.parent === grandParent) as LiteralTypeNode; if (typeArgument) { return { kind: StringLiteralCompletionKind.Types, types: getStringLiteralTypes(typeChecker.getTypeArgumentConstraint(typeArgument)), isNewIdentifier: false }; } diff --git a/tests/cases/fourslash/completionsAtTypeArguments.ts b/tests/cases/fourslash/completionsAtTypeArguments.ts new file mode 100644 index 00000000000..5b37a9b4e97 --- /dev/null +++ b/tests/cases/fourslash/completionsAtTypeArguments.ts @@ -0,0 +1,11 @@ +/// + +////interface I { +//// a: string; +//// b: number; +////} + +////type T1 = Pick; +////interface T2 extends Pick {} + +verify.completions({ marker: ["1", "2"], exact: ["a", "b"] });