Skip to content

Commit 1fce960

Browse files
committed
Demangler: expand defaults in SILBoxType's sig.
1 parent 41e2c85 commit 1fce960

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

lib/AST/ASTDemangler.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -842,16 +842,22 @@ Type ASTBuilder::createSILBoxTypeWithLayout(
842842
ArrayRef<BuiltSubstitution> Substitutions,
843843
ArrayRef<BuiltRequirement> Requirements) {
844844
SmallVector<Type, 4> replacements;
845-
SmallVector<GenericTypeParamType *, 4> genericTypeParams;
845+
SmallVector<GenericTypeParamType *, 2> genericTypeParams;
846846
for (const auto &s : Substitutions) {
847847
if (auto *t = dyn_cast_or_null<GenericTypeParamType>(s.first.getPointer()))
848848
genericTypeParams.push_back(t);
849849
replacements.push_back(s.second);
850850
}
851851

852852
GenericSignature signature;
853-
if (!genericTypeParams.empty())
854-
signature = GenericSignature::get(genericTypeParams, Requirements);
853+
if (!genericTypeParams.empty()) {
854+
SmallVector<BuiltRequirement, 2> RequirementsVec(Requirements);
855+
signature = swift::buildGenericSignature(Ctx,
856+
signature,
857+
genericTypeParams,
858+
std::move(RequirementsVec),
859+
/*allowInverses=*/true);
860+
}
855861
SmallVector<SILField, 4> silFields;
856862
for (auto field: fields)
857863
silFields.emplace_back(field.getPointer()->getCanonicalType(),

lib/AST/RequirementMachine/RequirementMachineRequests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,7 @@ AbstractGenericSignatureRequest::evaluate(
565565

566566
// If there are no added requirements, we can form the signature directly
567567
// with the added parameters.
568-
if (addedRequirements.empty()) {
568+
if (addedRequirements.empty() && !allowInverses) {
569569
auto result = GenericSignature::get(genericParams,
570570
baseSignature.getRequirements());
571571
return GenericSignatureWithError(result, GenericSignatureErrors());

0 commit comments

Comments
 (0)