Skip to content

Commit dbf5782

Browse files
committed
[GSB] Provide a root potential archetype for requirement-signature sources.
1 parent f7bc907 commit dbf5782

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

include/swift/AST/GenericSignatureBuilder.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -617,8 +617,8 @@ class GenericSignatureBuilder::RequirementSource : public llvm::FoldingSetNode {
617617
/// Retrieve a requirement source representing the requirement signature
618618
/// computation for a protocol.
619619
static const RequirementSource *forRequirementSignature(
620-
GenericSignatureBuilder &builder,
621-
ProtocolDecl *protocol);
620+
PotentialArchetype *root,
621+
ProtocolDecl *protocol);
622622

623623
/// Retrieve a requirement source for nested type name matches.
624624
static const RequirementSource *forNestedTypeNameMatch(

lib/AST/Decl.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3104,9 +3104,10 @@ void ProtocolDecl::computeRequirementSignature() {
31043104
GenericSignatureBuilder builder(getASTContext(),
31053105
LookUpConformanceInModule(module));
31063106
builder.addGenericParameter(selfType);
3107-
builder.addRequirement(requirement,
3108-
GenericSignatureBuilder::RequirementSource
3109-
::forRequirementSignature(builder, this));
3107+
builder.addRequirement(
3108+
requirement,
3109+
GenericSignatureBuilder::RequirementSource
3110+
::forRequirementSignature(builder.resolveArchetype(selfType), this));
31103111
builder.finalize(SourceLoc(), { selfType });
31113112

31123113
RequirementSignature = builder.getGenericSignature();

lib/AST/GenericSignatureBuilder.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,10 @@ const RequirementSource *RequirementSource::forInferred(
278278
}
279279

280280
const RequirementSource *RequirementSource::forRequirementSignature(
281-
GenericSignatureBuilder &builder,
281+
PotentialArchetype *root,
282282
ProtocolDecl *protocol) {
283+
auto &builder = *root->getBuilder();
284+
// FIXME: Store the root
283285
REQUIREMENT_SOURCE_FACTORY_BODY(RequirementSignatureSelf, nullptr, protocol);
284286
}
285287

0 commit comments

Comments
 (0)