Skip to content

Commit 9a37b0a

Browse files
authored
Merge pull request #20031 from DougGregor/parenthesized-type-ref-5.0
[Name lookup] Look through parentheses when finding type references.
2 parents e2fbdb0 + 3adfe2b commit 9a37b0a

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

lib/AST/NameLookup.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2440,6 +2440,15 @@ directReferencesForTypeRepr(Evaluator &evaluator,
24402440
case TypeReprKind::Dictionary:
24412441
return { 1, ctx.getDictionaryDecl()};
24422442

2443+
case TypeReprKind::Tuple: {
2444+
auto tupleRepr = cast<TupleTypeRepr>(typeRepr);
2445+
if (tupleRepr->isParenType()) {
2446+
return directReferencesForTypeRepr(evaluator, ctx,
2447+
tupleRepr->getElementType(0), dc);
2448+
}
2449+
return { };
2450+
}
2451+
24432452
case TypeReprKind::Error:
24442453
case TypeReprKind::Function:
24452454
case TypeReprKind::InOut:
@@ -2448,7 +2457,6 @@ directReferencesForTypeRepr(Evaluator &evaluator,
24482457
case TypeReprKind::Protocol:
24492458
case TypeReprKind::Shared:
24502459
case TypeReprKind::SILBox:
2451-
case TypeReprKind::Tuple:
24522460
return { };
24532461

24542462
case TypeReprKind::Fixed:

test/decl/protocol/inherited.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// RUN: %target-typecheck-verify-swift
2+
3+
// Allow inheritance from parenthesized protocol names.
4+
protocol DefaultItem {}
5+
6+
extension DefaultItem {
7+
var isEnabled: Bool { return true }
8+
}
9+
10+
protocol Item: (DefaultItem) {}
11+
12+
func test(item: Item) {
13+
_ = item.isEnabled
14+
}

0 commit comments

Comments
 (0)