mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Record depth/index of generic parameters.
Another baby step toward a proper canonical form for polymorphic function types: generic parameters will eventually be uniquable by their depth and index. Swift SVN r7380
This commit is contained in:
@@ -1022,18 +1022,8 @@ bool Serializer::writeCrossReference(const Decl *D) {
|
||||
kind = XRefKind::SwiftValue;
|
||||
|
||||
if (auto genericParam = dyn_cast<GenericTypeParamDecl>(D)) {
|
||||
DeclContext *DC = genericParam->getDeclContext();
|
||||
auto params = DC->getGenericParamsOfContext()->getParams();
|
||||
|
||||
auto iter = std::find_if(params.begin(), params.end(),
|
||||
[=](const GenericParam ¶m) {
|
||||
return param.getAsTypeParam() == genericParam;
|
||||
});
|
||||
assert(iter != params.end() && "generic param not in list");
|
||||
|
||||
// FIXME: Record the index in the GenericTypeParamDecl.
|
||||
kind = XRefKind::SwiftGenericParameter;
|
||||
typeID = std::distance(params.begin(), iter);
|
||||
typeID = genericParam->getIndex();
|
||||
}
|
||||
|
||||
if (kind == XRefKind::SwiftValue) {
|
||||
@@ -1232,6 +1222,8 @@ bool Serializer::writeDecl(const Decl *D) {
|
||||
GenericTypeParamDeclLayout::emitRecord(Out, ScratchRecord, abbrCode,
|
||||
addIdentifierRef(genericParam->getName()),
|
||||
addDeclRef(DC),
|
||||
genericParam->getDepth(),
|
||||
genericParam->getIndex(),
|
||||
addTypeRef(genericParam->getSuperclass()),
|
||||
addTypeRef(genericParam->getArchetype()));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user