Skip to content

Commit a1c2745

Browse files
authored
Merge pull request #76505 from DougGregor/qualify-freestanding-macro-name
Provide macro module name in MacroExpansionExpr creation
2 parents 8fe0fd1 + 05e8140 commit a1c2745

File tree

5 files changed

+20
-10
lines changed

5 files changed

+20
-10
lines changed

include/swift/AST/Expr.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6481,8 +6481,10 @@ class MacroExpansionExpr final : public Expr,
64816481
}
64826482

64836483
static MacroExpansionExpr *
6484-
create(DeclContext *dc, SourceLoc sigilLoc, DeclNameRef macroName,
6485-
DeclNameLoc macroNameLoc, SourceLoc leftAngleLoc,
6484+
create(DeclContext *dc, SourceLoc sigilLoc,
6485+
DeclNameRef moduleName, DeclNameLoc moduleNameLoc,
6486+
DeclNameRef macroName, DeclNameLoc macroNameLoc,
6487+
SourceLoc leftAngleLoc,
64866488
ArrayRef<TypeRepr *> genericArgs, SourceLoc rightAngleLoc,
64876489
ArgumentList *argList, MacroRoles roles, bool isImplicit = false,
64886490
Type ty = Type());

lib/AST/Expr.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2783,17 +2783,19 @@ TypeJoinExpr::forBranchesOfSingleValueStmtExpr(ASTContext &ctx, Type joinType,
27832783
}
27842784

27852785
MacroExpansionExpr *MacroExpansionExpr::create(
2786-
DeclContext *dc, SourceLoc sigilLoc, DeclNameRef macroName,
2787-
DeclNameLoc macroNameLoc, SourceLoc leftAngleLoc,
2786+
DeclContext *dc, SourceLoc sigilLoc,
2787+
DeclNameRef moduleName, DeclNameLoc moduleNameLoc,
2788+
DeclNameRef macroName, DeclNameLoc macroNameLoc,
2789+
SourceLoc leftAngleLoc,
27882790
ArrayRef<TypeRepr *> genericArgs, SourceLoc rightAngleLoc,
27892791
ArgumentList *argList, MacroRoles roles, bool isImplicit,
27902792
Type ty
27912793
) {
27922794
ASTContext &ctx = dc->getASTContext();
27932795
MacroExpansionInfo *info = new (ctx) MacroExpansionInfo{
27942796
sigilLoc,
2795-
/*moduleName*/ DeclNameRef(),
2796-
/*moduleNameLoc*/ DeclNameLoc(),
2797+
moduleName,
2798+
moduleNameLoc,
27972799
macroName,
27982800
macroNameLoc,
27992801
leftAngleLoc,

lib/Parse/ParseExpr.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3484,7 +3484,9 @@ ParserResult<Expr> Parser::parseExprMacroExpansion(bool isExprBasic) {
34843484
return makeParserResult(
34853485
status,
34863486
MacroExpansionExpr::create(
3487-
CurDeclContext, poundLoc, macroNameRef, macroNameLoc, leftAngleLoc,
3487+
CurDeclContext, poundLoc,
3488+
/*module name=*/DeclNameRef(), /*module name loc=*/DeclNameLoc(),
3489+
macroNameRef, macroNameLoc, leftAngleLoc,
34883490
Context.AllocateCopy(genericArgs), rightAngleLoc, argList,
34893491
CurDeclContext->isTypeContext() ? MacroRole::Declaration
34903492
: getFreestandingMacroRoles()));

lib/Sema/CSApply.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3032,7 +3032,9 @@ namespace {
30323032
auto macro = cast<MacroDecl>(overload.choice.getDecl());
30333033
ConcreteDeclRef macroRef = resolveConcreteDeclRef(macro, locator);
30343034
auto *expansion = MacroExpansionExpr::create(
3035-
dc, expr->getStartLoc(), DeclNameRef(macro->getName()),
3035+
dc, expr->getStartLoc(),
3036+
/*module name=*/DeclNameRef(), /*module name loc=*/DeclNameLoc(),
3037+
DeclNameRef(macro->getName()),
30363038
DeclNameLoc(expr->getLoc()), SourceLoc(), {}, SourceLoc(), nullptr,
30373039
MacroRole::Expression, /*isImplicit=*/true, expandedType);
30383040
expansion->setMacroRef(macroRef);

lib/Sema/TypeCheckMacros.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2023,8 +2023,10 @@ ConcreteDeclRef ResolveMacroRequest::evaluate(Evaluator &evaluator,
20232023
} else {
20242024
SourceRange genericArgsRange = macroRef.getGenericArgsRange();
20252025
macroExpansion = MacroExpansionExpr::create(
2026-
dc, macroRef.getSigilLoc(), macroRef.getMacroName(),
2027-
macroRef.getMacroNameLoc(), genericArgsRange.Start,
2026+
dc, macroRef.getSigilLoc(),
2027+
macroRef.getModuleName(), macroRef.getModuleNameLoc(),
2028+
macroRef.getMacroName(), macroRef.getMacroNameLoc(),
2029+
genericArgsRange.Start,
20282030
macroRef.getGenericArgs(), genericArgsRange.End,
20292031
macroRef.getArgs(), roles);
20302032
}

0 commit comments

Comments
 (0)