Skip to content

Commit b740a45

Browse files
Merge pull request #84185 from nate-chandler/rdar159211502
[SILVerifier] Ease this over-strict verification.
2 parents 0063c3c + 9bbfb21 commit b740a45

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

lib/SIL/Verifier/SILVerifier.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4167,8 +4167,9 @@ class SILVerifier : public SILVerifierBase<SILVerifier> {
41674167

41684168
auto lookupType = AMI->getLookupType();
41694169
if (getLocalArchetypeOf(lookupType) || lookupType->hasDynamicSelfType()) {
4170-
require(AMI->getTypeDependentOperands().size() == 1,
4171-
"Must have a type dependent operand for the opened archetype");
4170+
require(!AMI->getTypeDependentOperands().empty(),
4171+
"Must have at least one type-dependent operand when there's a "
4172+
"local archetype or dynamic self.");
41724173
verifyLocalArchetype(AMI, lookupType);
41734174
} else {
41744175
require(AMI->getTypeDependentOperands().empty() || lookupType->hasLocalArchetype(),
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// RUN: %target-build-swift %s -O -Xfrontend -sil-verify-all
2+
3+
protocol PA<I> {
4+
associatedtype I: P
5+
func get() -> I
6+
}
7+
8+
protocol P {
9+
var pa: any PA<Self> { get }
10+
}
11+
12+
func f(_ p: any P) {
13+
p.pa.get()
14+
}

0 commit comments

Comments
 (0)