Skip to content

Commit 848ab4d

Browse files
authored
Merge pull request #71504 from kavon/ncgenerics-test-fixes-kavon-v6
Ncgenerics test fixes kavon v6
2 parents 1e09b22 + 12f9755 commit 848ab4d

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

lib/AST/Type.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3999,14 +3999,25 @@ CanType ProtocolCompositionType::getMinimalCanonicalType(
39993999
// represent the minimal composition.
40004000
auto sig = useDC->getGenericSignatureOfContext();
40014001
const auto Sig = Ctx.getOpenedExistentialSignature(CanTy, sig);
4002-
const auto &Reqs = Sig.getRequirements();
4002+
SmallVector<Requirement, 2> Reqs;
4003+
SmallVector<InverseRequirement, 2> Inverses;
4004+
Sig->getRequirementsWithInverses(Reqs, Inverses);
4005+
40034006
if (Reqs.size() == 1) {
40044007
return Reqs.front().getSecondType()->getCanonicalType();
40054008
}
40064009

40074010
// The set of inverses is already minimal.
40084011
auto MinimalInverses = Composition->getInverses();
40094012

4013+
#ifndef NDEBUG
4014+
// Check that the generic signature's inverses matches.
4015+
InvertibleProtocolSet genSigInverses;
4016+
for (InverseRequirement ireq : Inverses)
4017+
genSigInverses.insert(ireq.getKind());
4018+
assert(genSigInverses == MinimalInverses);
4019+
#endif
4020+
40104021
llvm::SmallVector<Type, 2> MinimalMembers;
40114022
bool MinimalHasExplicitAnyObject = false;
40124023
auto ifaceTy = Sig.getGenericParams().back();

test/Parse/inverses.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,4 @@ typealias Z5 = (~Int) -> Void // expected-error {{type 'Int' is not invertible}}
100100
typealias Z6 = ~() -> () // expected-error {{single argument function types require parentheses}}
101101
// expected-error@-1 {{type '()' is not invertible}}
102102
typealias Z7 = ~(Copyable & Hashable) // expected-error {{type 'Hashable' is not invertible}}
103-
typealias Z8 = ~Copyable & Hashable
103+
typealias Z8 = ~Copyable & Hashable // expected-error {{composition cannot contain '~Copyable' when another member requires 'Copyable'}}

test/SILOptimizer/llvm_arc.sil

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
sil_stage canonical
88

99
import Builtin
10+
import Swift
1011

1112
typealias AnyObject = Builtin.AnyObject
1213

0 commit comments

Comments
 (0)