Skip to content

Commit 3337d7b

Browse files
committed
[CodeCompletion] Avoid re-typechcking pre-checked expressions
in expression context analysis. They are simply not necessary. rdar://problem/60982638
1 parent 32bd377 commit 3337d7b

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

lib/IDE/ExprContextAnalysis.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -393,12 +393,16 @@ static void collectPossibleCalleesByQualifiedLookup(
393393
tyExpr->setType(nullptr);
394394
}
395395

396-
auto baseTyOpt = getTypeOfCompletionContextExpr(
397-
DC.getASTContext(), &DC, CompletionTypeCheckKind::Normal, baseExpr, ref);
398-
if (!baseTyOpt)
399-
return;
400-
401-
auto baseTy = (*baseTyOpt)->getWithoutSpecifierType();
396+
Type baseTy = baseExpr->getType();
397+
if (!baseTy || baseTy->is<ErrorType>()) {
398+
auto baseTyOpt = getTypeOfCompletionContextExpr(
399+
DC.getASTContext(), &DC, CompletionTypeCheckKind::Normal, baseExpr,
400+
ref);
401+
if (!baseTyOpt)
402+
return;
403+
baseTy = *baseTyOpt;
404+
}
405+
baseTy = baseTy->getWithoutSpecifierType();
402406
if (!baseTy->getMetatypeInstanceType()->mayHaveMembers())
403407
return;
404408

0 commit comments

Comments
 (0)