Skip to content

Commit f29e03e

Browse files
authored
autocomplete works for const assertion. (microsoft#39412)
* fix 39384 * add test
1 parent 9a5c007 commit f29e03e

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

src/compiler/checker.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23425,7 +23425,7 @@ namespace ts {
2342523425
return getContextualTypeForArgument(<CallExpression | NewExpression>parent, node);
2342623426
case SyntaxKind.TypeAssertionExpression:
2342723427
case SyntaxKind.AsExpression:
23428-
return isConstTypeReference((<AssertionExpression>parent).type) ? undefined : getTypeFromTypeNode((<AssertionExpression>parent).type);
23428+
return isConstTypeReference((<AssertionExpression>parent).type) ? tryFindWhenConstTypeReference(<AssertionExpression>parent) : getTypeFromTypeNode((<AssertionExpression>parent).type);
2342923429
case SyntaxKind.BinaryExpression:
2343023430
return getContextualTypeForBinaryOperand(node, contextFlags);
2343123431
case SyntaxKind.PropertyAssignment:
@@ -23458,6 +23458,13 @@ namespace ts {
2345823458
return getContextualJsxElementAttributesType(<JsxOpeningLikeElement>parent, contextFlags);
2345923459
}
2346023460
return undefined;
23461+
23462+
function tryFindWhenConstTypeReference(node: Expression) {
23463+
if(isCallLikeExpression(node.parent)){
23464+
return getContextualTypeForArgument(node.parent, node);
23465+
}
23466+
return undefined;
23467+
}
2346123468
}
2346223469

2346323470
function getInferenceContext(node: Node) {
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
////type T = {
4+
//// a: 1;
5+
//// b: 2;
6+
////}
7+
////function F(x: T) {
8+
////}
9+
////F({/*1*/} as const)
10+
11+
verify.completions({
12+
marker: "1",
13+
exact: [
14+
{ name: "a", text: "(property) a: 1" },
15+
{ name: "b", text: "(property) b: 2" },
16+
],
17+
});

0 commit comments

Comments
 (0)