Skip to content

Commit d572e13

Browse files
authored
Merge pull request #38051 from ahoppen/pr-5.5/enum-unresolved-dot-arg-label
[5.5][IDE] Complete enum argument labels in unresolved member completions
2 parents 699e57b + d8a7b9e commit d572e13

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

lib/IDE/ExprContextAnalysis.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,8 @@ static void collectPossibleCalleesByQualifiedLookup(
456456
llvm::DenseMap<std::pair<char, CanType>, size_t> known;
457457
auto *baseNominal = baseInstanceTy->getAnyNominal();
458458
for (auto *VD : decls) {
459-
if ((!isa<AbstractFunctionDecl>(VD) && !isa<SubscriptDecl>(VD)) ||
459+
if ((!isa<AbstractFunctionDecl>(VD) && !isa<SubscriptDecl>(VD) &&
460+
!isa<EnumElementDecl>(VD)) ||
460461
VD->shouldHideFromEditor())
461462
continue;
462463
if (!isMemberDeclApplied(&DC, baseInstanceTy, VD))
@@ -479,6 +480,11 @@ static void collectPossibleCalleesByQualifiedLookup(
479480
} else if (isa<SubscriptDecl>(VD)) {
480481
if (isOnMetaType != VD->isStatic())
481482
continue;
483+
} else if (isa<EnumElementDecl>(VD)) {
484+
if (!isOnMetaType)
485+
continue;
486+
declaredMemberType =
487+
declaredMemberType->castTo<AnyFunctionType>()->getResult();
482488
}
483489
}
484490

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=COMPLETE | %FileCheck %s
2+
3+
enum DragState {
4+
case inactive
5+
case dragging(translation: Int)
6+
}
7+
8+
func foo() {
9+
var state = DragState.inactive
10+
state = .dragging(#^COMPLETE^#
11+
}
12+
13+
// CHECK: Begin completions, 1 item
14+
// CHECK: Pattern/CurrModule/Flair[ArgLabels]/TypeRelation[Identical]: ['(']{#translation: Int#}[')'][#DragState#];
15+
// CHECK: End completions

0 commit comments

Comments
 (0)