Skip to content

Commit 0acc15f

Browse files
committed
Fix SILVerifier assert for witness_method with dynamic self type
1 parent 3ecc3d4 commit 0acc15f

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

lib/SIL/Verifier/SILVerifier.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3020,15 +3020,15 @@ class SILVerifier : public SILVerifierBase<SILVerifier> {
30203020
"requirement Self parameter must conform to called protocol");
30213021

30223022
auto lookupType = AMI->getLookupType();
3023-
if (getOpenedArchetypeOf(lookupType)) {
3023+
if (getOpenedArchetypeOf(lookupType) || isa<DynamicSelfType>(lookupType)) {
30243024
require(AMI->getTypeDependentOperands().size() == 1,
30253025
"Must have a type dependent operand for the opened archetype");
30263026
verifyOpenedArchetype(AMI, lookupType);
30273027
} else {
30283028
require(AMI->getTypeDependentOperands().empty(),
30293029
"Should not have an operand for the opened existential");
30303030
}
3031-
if (!isa<ArchetypeType>(lookupType)) {
3031+
if (!isa<ArchetypeType>(lookupType) && !isa<DynamicSelfType>(lookupType)) {
30323032
require(AMI->getConformance().isConcrete(),
30333033
"concrete type lookup requires concrete conformance");
30343034
auto conformance = AMI->getConformance().getConcrete();

0 commit comments

Comments
 (0)