Skip to content

Commit d711c6d

Browse files
committed
AST: Add a GenericParamList::lookUpGenericParam() method
1 parent fec67d6 commit d711c6d

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

include/swift/AST/Decl.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,6 +1334,10 @@ class GenericParamList final :
13341334
SWIFT_DEBUG_DUMP;
13351335

13361336
bool walk(ASTWalker &walker);
1337+
1338+
/// Finds a generic parameter declaration by name. This should only
1339+
/// be used from the SIL parser.
1340+
GenericTypeParamDecl *lookUpGenericParam(Identifier name) const;
13371341
};
13381342

13391343
/// A trailing where clause.

lib/AST/Decl.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -960,6 +960,21 @@ void GenericParamList::setDeclContext(DeclContext *dc) {
960960
param->setDeclContext(dc);
961961
}
962962

963+
GenericTypeParamDecl *GenericParamList::lookUpGenericParam(
964+
Identifier name) const {
965+
for (const auto *innerParams = this;
966+
innerParams != nullptr;
967+
innerParams = innerParams->getOuterParameters()) {
968+
for (auto *paramDecl : *innerParams) {
969+
if (name == paramDecl->getName()) {
970+
return const_cast<GenericTypeParamDecl *>(paramDecl);
971+
}
972+
}
973+
}
974+
975+
return nullptr;
976+
}
977+
963978
TrailingWhereClause::TrailingWhereClause(
964979
SourceLoc whereLoc,
965980
ArrayRef<RequirementRepr> requirements)

0 commit comments

Comments
 (0)