[NFC] Thread DeclNameRef through most of the compiler

This huge commit contains as many of the mechanical changes as possible.
This commit is contained in:
Brent Royal-Gordon
2019-12-10 19:46:10 -08:00
parent da88512eda
commit addbe3e5ed
66 changed files with 505 additions and 464 deletions

View File

@@ -278,12 +278,13 @@ public:
/// Collect function (or subscript) members with the given \p name on \p baseTy.
static void collectPossibleCalleesByQualifiedLookup(
DeclContext &DC, Type baseTy, DeclBaseName name,
DeclContext &DC, Type baseTy, DeclNameRef name,
SmallVectorImpl<FunctionTypeAndDecl> &candidates) {
bool isOnMetaType = baseTy->is<AnyMetatypeType>();
SmallVector<ValueDecl *, 2> decls;
if (!DC.lookupQualified(baseTy->getMetatypeInstanceType(), name,
if (!DC.lookupQualified(baseTy->getMetatypeInstanceType(),
name.withoutArgumentLabels(),
NL_QualifiedDefault | NL_ProtocolMembers,
decls))
return;
@@ -341,7 +342,7 @@ static void collectPossibleCalleesByQualifiedLookup(
/// Collect function (or subscript) members with the given \p name on
/// \p baseExpr expression.
static void collectPossibleCalleesByQualifiedLookup(
DeclContext &DC, Expr *baseExpr, DeclBaseName name,
DeclContext &DC, Expr *baseExpr, DeclNameRef name,
SmallVectorImpl<FunctionTypeAndDecl> &candidates) {
ConcreteDeclRef ref = nullptr;
auto baseTyOpt = getTypeOfCompletionContextExpr(
@@ -388,11 +389,12 @@ static bool collectPossibleCalleesForApply(
}
} else if (auto *UDE = dyn_cast<UnresolvedDotExpr>(fnExpr)) {
collectPossibleCalleesByQualifiedLookup(
DC, UDE->getBase(), UDE->getName().getBaseName(), candidates);
DC, UDE->getBase(), UDE->getName(), candidates);
} else if (auto *DSCE = dyn_cast<DotSyntaxCallExpr>(fnExpr)) {
if (auto *DRE = dyn_cast<DeclRefExpr>(DSCE->getFn())) {
collectPossibleCalleesByQualifiedLookup(
DC, DSCE->getArg(), DRE->getDecl()->getBaseName(), candidates);
DC, DSCE->getArg(), DeclNameRef_(DRE->getDecl()->getFullName()),
candidates);
}
}
@@ -409,7 +411,7 @@ static bool collectPossibleCalleesForApply(
auto baseTy = AMT->getInstanceType();
if (baseTy->mayHaveMembers())
collectPossibleCalleesByQualifiedLookup(
DC, AMT, DeclBaseName::createConstructor(), candidates);
DC, AMT, DeclNameRef::createConstructor(), candidates);
}
}
@@ -430,7 +432,7 @@ static bool collectPossibleCalleesForSubscript(
}
} else {
collectPossibleCalleesByQualifiedLookup(DC, subscriptExpr->getBase(),
DeclBaseName::createSubscript(),
DeclNameRef::createSubscript(),
candidates);
}
return !candidates.empty();
@@ -442,7 +444,6 @@ static bool collectPossibleCalleesForUnresolvedMember(
DeclContext &DC, UnresolvedMemberExpr *unresolvedMemberExpr,
SmallVectorImpl<FunctionTypeAndDecl> &candidates) {
auto currModule = DC.getParentModule();
auto baseName = unresolvedMemberExpr->getName().getBaseName();
// Get the context of the expression itself.
ExprContextInfo contextInfo(&DC, unresolvedMemberExpr);
@@ -451,7 +452,8 @@ static bool collectPossibleCalleesForUnresolvedMember(
continue;
SmallVector<FunctionTypeAndDecl, 2> members;
collectPossibleCalleesByQualifiedLookup(DC, MetatypeType::get(expectedTy),
baseName, members);
unresolvedMemberExpr->getName(),
members);
for (auto member : members) {
if (isReferenceableByImplicitMemberExpr(currModule, &DC, expectedTy,
member.second))

View File

@@ -74,7 +74,7 @@ private:
bool passReference(ValueDecl *D, Type Ty, SourceLoc Loc, SourceRange Range,
ReferenceMetaData Data);
bool passReference(ValueDecl *D, Type Ty, DeclNameLoc Loc, ReferenceMetaData Data);
bool passReference(ModuleEntity Mod, std::pair<DeclName, SourceLoc> IdLoc);
bool passReference(ModuleEntity Mod, std::pair<DeclNameRef, SourceLoc> IdLoc);
bool passSubscriptReference(ValueDecl *D, SourceLoc Loc,
ReferenceMetaData Data, bool IsOpenBracket);
@@ -668,7 +668,7 @@ passReference(ValueDecl *D, Type Ty, SourceLoc BaseNameLoc, SourceRange Range,
}
bool SemaAnnotator::passReference(ModuleEntity Mod,
std::pair<DeclName, SourceLoc> IdLoc) {
std::pair<DeclNameRef, SourceLoc> IdLoc) {
if (IdLoc.second.isInvalid())
return true;
unsigned NameLen = IdLoc.first.getBaseIdentifier().getLength();