Skip to content

Commit 3534654

Browse files
committed
[NFC] Add DeclNameLoc to specialize/dynamicReplacement
1 parent ed76647 commit 3534654

File tree

7 files changed

+109
-64
lines changed

7 files changed

+109
-64
lines changed

include/swift/AST/ASTBridging.h

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -941,11 +941,12 @@ BridgedDocumentationAttr BridgedDocumentationAttr_createParsed(
941941

942942
SWIFT_NAME(
943943
"BridgedDynamicReplacementAttr.createParsed(_:atLoc:attrNameLoc:lParenLoc:"
944-
"replacedFunction:rParenLoc:)")
944+
"replacedFunction:replacedFunctionLoc:rParenLoc:)")
945945
BridgedDynamicReplacementAttr BridgedDynamicReplacementAttr_createParsed(
946-
BridgedASTContext cContext, swift::SourceLoc atLoc,
947-
swift::SourceLoc attrNameLoc, swift::SourceLoc lParenLoc,
948-
BridgedDeclNameRef cReplacedFunction, swift::SourceLoc rParenLoc);
946+
BridgedASTContext cContext, swift::SourceLoc cAtLoc,
947+
swift::SourceLoc cAttrNameLoc, swift::SourceLoc cLParenLoc,
948+
BridgedDeclNameRef cReplacedFunction,
949+
BridgedDeclNameLoc cReplacedFunctionLoc, swift::SourceLoc cRParenLoc);
949950

950951
SWIFT_NAME("BridgedEffectsAttr.createParsed(_:atLoc:range:effectKind:)")
951952
BridgedEffectsAttr BridgedEffectsAttr_createParsed(
@@ -1276,22 +1277,24 @@ enum ENUM_EXTENSIBILITY_ATTR(closed) BridgedSpecializationKind : uint8_t {
12761277
};
12771278

12781279
SWIFT_NAME("BridgedSpecializeAttr.createParsed(_:atLoc:range:whereClause:"
1279-
"exported:kind:taretFunction:spiGroups:availableAttrs:)")
1280+
"exported:kind:targetFunction:targetFunctionLoc:spiGroups:"
1281+
"availableAttrs:)")
12801282
BridgedSpecializeAttr BridgedSpecializeAttr_createParsed(
12811283
BridgedASTContext cContext, swift::SourceLoc atLoc,
12821284
swift::SourceRange range, BridgedNullableTrailingWhereClause cWhereClause,
12831285
bool exported, BridgedSpecializationKind cKind,
1284-
BridgedDeclNameRef cTargetFunction, BridgedArrayRef cSPIGroups,
1285-
BridgedArrayRef cAvailableAttrs);
1286+
BridgedDeclNameRef cTargetFunction, BridgedDeclNameLoc cTargetFunctionLoc,
1287+
BridgedArrayRef cSPIGroups, BridgedArrayRef cAvailableAttrs);
12861288

12871289
SWIFT_NAME("BridgedSpecializedAttr.createParsed(_:atLoc:range:whereClause:"
1288-
"exported:kind:taretFunction:spiGroups:availableAttrs:)")
1290+
"exported:kind:targetFunction:targetFunctionLoc:spiGroups:"
1291+
"availableAttrs:)")
12891292
BridgedSpecializedAttr BridgedSpecializedAttr_createParsed(
12901293
BridgedASTContext cContext, swift::SourceLoc atLoc,
12911294
swift::SourceRange range, BridgedNullableTrailingWhereClause cWhereClause,
12921295
bool exported, BridgedSpecializationKind cKind,
1293-
BridgedDeclNameRef cTargetFunction, BridgedArrayRef cSPIGroups,
1294-
BridgedArrayRef cAvailableAttrs);
1296+
BridgedDeclNameRef cTargetFunction, BridgedDeclNameLoc cTargetFunctionLoc,
1297+
BridgedArrayRef cSPIGroups, BridgedArrayRef cAvailableAttrs);
12951298

12961299
SWIFT_NAME(
12971300
"BridgedSPIAccessControlAttr.createParsed(_:atLoc:range:spiGroupName:)")

include/swift/AST/Attr.h

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1253,19 +1253,22 @@ class DynamicReplacementAttr final
12531253
friend class DynamicallyReplacedDeclRequest;
12541254

12551255
DeclNameRef ReplacedFunctionName;
1256+
DeclNameLoc ReplacedFunctionNameLoc;
12561257
LazyMemberLoader *Resolver = nullptr;
12571258
uint64_t ResolverContextData;
12581259

12591260
/// Create an @_dynamicReplacement(for:) attribute written in the source.
12601261
DynamicReplacementAttr(SourceLoc atLoc, SourceRange baseRange,
12611262
DeclNameRef replacedFunctionName,
1263+
DeclNameLoc replacedFunctionNameLoc,
12621264
SourceRange parenRange);
12631265

12641266
DynamicReplacementAttr(DeclNameRef name, AbstractFunctionDecl *f)
12651267
: DeclAttribute(DeclAttrKind::DynamicReplacement, SourceLoc(),
12661268
SourceRange(),
12671269
/*Implicit=*/false),
1268-
ReplacedFunctionName(name), Resolver(nullptr), ResolverContextData(0) {
1270+
ReplacedFunctionName(name), ReplacedFunctionNameLoc(),
1271+
Resolver(nullptr), ResolverContextData(0) {
12691272
Bits.DynamicReplacementAttr.HasTrailingLocationInfo = false;
12701273
}
12711274

@@ -1274,8 +1277,8 @@ class DynamicReplacementAttr final
12741277
: DeclAttribute(DeclAttrKind::DynamicReplacement, SourceLoc(),
12751278
SourceRange(),
12761279
/*Implicit=*/false),
1277-
ReplacedFunctionName(name), Resolver(Resolver),
1278-
ResolverContextData(Data) {
1280+
ReplacedFunctionName(name), ReplacedFunctionNameLoc(),
1281+
Resolver(Resolver), ResolverContextData(Data) {
12791282
Bits.DynamicReplacementAttr.HasTrailingLocationInfo = false;
12801283
}
12811284

@@ -1296,7 +1299,8 @@ class DynamicReplacementAttr final
12961299
public:
12971300
static DynamicReplacementAttr *
12981301
create(ASTContext &Context, SourceLoc AtLoc, SourceLoc DynReplLoc,
1299-
SourceLoc LParenLoc, DeclNameRef replacedFunction, SourceLoc RParenLoc);
1302+
SourceLoc LParenLoc, DeclNameRef replacedFunction,
1303+
DeclNameLoc replacedFunctionNameLoc, SourceLoc RParenLoc);
13001304

13011305
static DynamicReplacementAttr *create(ASTContext &ctx,
13021306
DeclNameRef replacedFunction,
@@ -1311,6 +1315,10 @@ class DynamicReplacementAttr final
13111315
return ReplacedFunctionName;
13121316
}
13131317

1318+
DeclNameLoc getReplacedFunctionNameLoc() const {
1319+
return ReplacedFunctionNameLoc;
1320+
}
1321+
13141322
/// Retrieve the location of the opening parentheses, if there is one.
13151323
SourceLoc getLParenLoc() const;
13161324

@@ -1800,6 +1808,7 @@ class AbstractSpecializeAttr
18001808
GenericSignature specializedSignature;
18011809

18021810
DeclNameRef targetFunctionName;
1811+
DeclNameLoc targetFunctionNameLoc;
18031812
LazyMemberLoader *resolver = nullptr;
18041813
uint64_t resolverContextData;
18051814
size_t numSPIGroups;
@@ -1812,7 +1821,9 @@ class AbstractSpecializeAttr
18121821
TrailingWhereClause *clause,
18131822
bool exported,
18141823
SpecializationKind kind, GenericSignature specializedSignature,
1815-
DeclNameRef targetFunctionName, ArrayRef<Identifier> spiGroups,
1824+
DeclNameRef targetFunctionName,
1825+
DeclNameLoc targetFunctionNameLoc,
1826+
ArrayRef<Identifier> spiGroups,
18161827
ArrayRef<AvailableAttr *> availabilityAttrs,
18171828
size_t typeErasedParamsCount);
18181829

@@ -1896,6 +1907,10 @@ class AbstractSpecializeAttr
18961907
return targetFunctionName;
18971908
}
18981909

1910+
DeclNameLoc getTargetFunctionNameLoc() const {
1911+
return targetFunctionNameLoc;
1912+
}
1913+
18991914
/// \p forDecl is the value decl that the attribute belongs to.
19001915
ValueDecl *getTargetFunctionDecl(const ValueDecl *forDecl) const;
19011916

@@ -1925,19 +1940,23 @@ class SpecializeAttr final : public AbstractSpecializeAttr,
19251940
TrailingWhereClause *clause,
19261941
bool exported,
19271942
SpecializationKind kind, GenericSignature specializedSignature,
1928-
DeclNameRef targetFunctionName, ArrayRef<Identifier> spiGroups,
1943+
DeclNameRef targetFunctionName,
1944+
DeclNameLoc targetFunctionNameLoc,
1945+
ArrayRef<Identifier> spiGroups,
19291946
ArrayRef<AvailableAttr *> availabilityAttrs,
19301947
size_t typeErasedParamsCount) :
19311948
AbstractSpecializeAttr(DeclAttrKind::Specialize, atLoc, Range, clause,
19321949
exported, kind, specializedSignature, targetFunctionName,
1933-
spiGroups, availabilityAttrs, typeErasedParamsCount) {}
1950+
targetFunctionNameLoc, spiGroups, availabilityAttrs,
1951+
typeErasedParamsCount) {}
19341952

19351953
public:
19361954
static SpecializeAttr *
19371955
create(ASTContext &Ctx, SourceLoc atLoc, SourceRange Range,
19381956
TrailingWhereClause *clause, bool exported,
19391957
SpecializationKind kind,
1940-
DeclNameRef targetFunctionName, ArrayRef<Identifier> spiGroups,
1958+
DeclNameRef targetFunctionName, DeclNameLoc targetFunctionNameLoc,
1959+
ArrayRef<Identifier> spiGroups,
19411960
ArrayRef<AvailableAttr *> availabilityAttrs,
19421961
GenericSignature specializedSignature = nullptr);
19431962

@@ -1981,19 +2000,23 @@ class SpecializedAttr final : public AbstractSpecializeAttr ,
19812000
TrailingWhereClause *clause,
19822001
bool exported,
19832002
SpecializationKind kind, GenericSignature specializedSignature,
1984-
DeclNameRef targetFunctionName, ArrayRef<Identifier> spiGroups,
2003+
DeclNameRef targetFunctionName,
2004+
DeclNameLoc targetFunctionNameLoc,
2005+
ArrayRef<Identifier> spiGroups,
19852006
ArrayRef<AvailableAttr *> availabilityAttrs,
19862007
size_t typeErasedParamsCount) :
19872008
AbstractSpecializeAttr(DeclAttrKind::Specialized, atLoc, Range, clause,
19882009
exported, kind, specializedSignature, targetFunctionName,
1989-
spiGroups, availabilityAttrs, typeErasedParamsCount) {}
2010+
targetFunctionNameLoc, spiGroups, availabilityAttrs,
2011+
typeErasedParamsCount) {}
19902012

19912013
public:
19922014
static SpecializedAttr *
19932015
create(ASTContext &Ctx, SourceLoc atLoc, SourceRange Range,
19942016
TrailingWhereClause *clause, bool exported,
19952017
SpecializationKind kind,
1996-
DeclNameRef targetFunctionName, ArrayRef<Identifier> spiGroups,
2018+
DeclNameRef targetFunctionName, DeclNameLoc targetFunctionNameLoc,
2019+
ArrayRef<Identifier> spiGroups,
19972020
ArrayRef<AvailableAttr *> availabilityAttrs,
19982021
GenericSignature specializedSignature = nullptr);
19992022

include/swift/Parse/Parser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1055,7 +1055,7 @@ class Parser {
10551055
std::optional<bool> &Exported,
10561056
std::optional<SpecializeAttr::SpecializationKind> &Kind,
10571057
TrailingWhereClause *&TrailingWhereClause, DeclNameRef &targetFunction,
1058-
AvailabilityRange *SILAvailability,
1058+
DeclNameLoc &targetFunctionLoc, AvailabilityRange *SILAvailability,
10591059
SmallVectorImpl<Identifier> &spiGroups,
10601060
SmallVectorImpl<AvailableAttr *> &availableAttrs,
10611061
llvm::function_ref<bool(Parser &)> parseSILTargetName,

lib/AST/Attr.cpp

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2104,10 +2104,11 @@ PrivateImportAttr *PrivateImportAttr::create(ASTContext &Ctxt, SourceLoc AtLoc,
21042104
DynamicReplacementAttr::DynamicReplacementAttr(SourceLoc atLoc,
21052105
SourceRange baseRange,
21062106
DeclNameRef name,
2107+
DeclNameLoc nameLoc,
21072108
SourceRange parenRange)
21082109
: DeclAttribute(DeclAttrKind::DynamicReplacement, atLoc, baseRange,
21092110
/*Implicit=*/false),
2110-
ReplacedFunctionName(name) {
2111+
ReplacedFunctionName(name), ReplacedFunctionNameLoc(nameLoc) {
21112112
Bits.DynamicReplacementAttr.HasTrailingLocationInfo = true;
21122113
getTrailingLocations()[0] = parenRange.Start;
21132114
getTrailingLocations()[1] = parenRange.End;
@@ -2116,11 +2117,12 @@ DynamicReplacementAttr::DynamicReplacementAttr(SourceLoc atLoc,
21162117
DynamicReplacementAttr *
21172118
DynamicReplacementAttr::create(ASTContext &Ctx, SourceLoc AtLoc,
21182119
SourceLoc DynReplLoc, SourceLoc LParenLoc,
2119-
DeclNameRef ReplacedFunction, SourceLoc RParenLoc) {
2120+
DeclNameRef ReplacedFunction,
2121+
DeclNameLoc nameLoc, SourceLoc RParenLoc) {
21202122
void *mem = Ctx.Allocate(totalSizeToAlloc<SourceLoc>(2),
21212123
alignof(DynamicReplacementAttr));
21222124
return new (mem) DynamicReplacementAttr(
2123-
AtLoc, SourceRange(DynReplLoc, RParenLoc), ReplacedFunction,
2125+
AtLoc, SourceRange(DynReplLoc, RParenLoc), ReplacedFunction, nameLoc,
21242126
SourceRange(LParenLoc, RParenLoc));
21252127
}
21262128

@@ -2476,12 +2478,15 @@ AbstractSpecializeAttr::AbstractSpecializeAttr(DeclAttrKind DK,
24762478
SpecializationKind kind,
24772479
GenericSignature specializedSignature,
24782480
DeclNameRef targetFunctionName,
2481+
DeclNameLoc targetFunctionNameLoc,
24792482
ArrayRef<Identifier> spiGroups,
24802483
ArrayRef<AvailableAttr *> availableAttrs,
24812484
size_t typeErasedParamsCount)
24822485
: DeclAttribute(DK, atLoc, range, /*Implicit=*/clause == nullptr),
24832486
trailingWhereClause(clause), specializedSignature(specializedSignature),
2484-
targetFunctionName(targetFunctionName), numSPIGroups(spiGroups.size()),
2487+
targetFunctionName(targetFunctionName),
2488+
targetFunctionNameLoc(targetFunctionNameLoc),
2489+
numSPIGroups(spiGroups.size()),
24852490
numAvailableAttrs(availableAttrs.size()),
24862491
numTypeErasedParams(typeErasedParamsCount),
24872492
typeErasedParamsInitialized(false) {
@@ -2503,6 +2508,7 @@ SpecializeAttr *SpecializeAttr::create(ASTContext &Ctx, SourceLoc atLoc,
25032508
TrailingWhereClause *clause,
25042509
bool exported, SpecializationKind kind,
25052510
DeclNameRef targetFunctionName,
2511+
DeclNameLoc targetFunctionNameLoc,
25062512
ArrayRef<Identifier> spiGroups,
25072513
ArrayRef<AvailableAttr *> availableAttrs,
25082514
GenericSignature specializedSignature) {
@@ -2526,7 +2532,8 @@ SpecializeAttr *SpecializeAttr::create(ASTContext &Ctx, SourceLoc atLoc,
25262532

25272533
return new (mem)
25282534
SpecializeAttr(atLoc, range, clause, exported, kind, specializedSignature,
2529-
targetFunctionName, spiGroups, availableAttrs, typeErasedParamsCount);
2535+
targetFunctionName, targetFunctionNameLoc, spiGroups,
2536+
availableAttrs, typeErasedParamsCount);
25302537
}
25312538

25322539
SpecializeAttr *SpecializeAttr::create(ASTContext &ctx, bool exported,
@@ -2539,8 +2546,8 @@ SpecializeAttr *SpecializeAttr::create(ASTContext &ctx, bool exported,
25392546
spiGroups.size(), availableAttrs.size(), 0);
25402547
void *mem = ctx.Allocate(size, alignof(SpecializeAttr));
25412548
return new (mem) SpecializeAttr(
2542-
SourceLoc(), SourceRange(), nullptr, exported, kind,
2543-
specializedSignature, targetFunctionName, spiGroups, availableAttrs, 0);
2549+
SourceLoc(), SourceRange(), nullptr, exported, kind, specializedSignature,
2550+
targetFunctionName, DeclNameLoc(), spiGroups, availableAttrs, 0);
25442551
}
25452552

25462553
SpecializeAttr *SpecializeAttr::create(
@@ -2554,7 +2561,8 @@ SpecializeAttr *SpecializeAttr::create(
25542561
void *mem = ctx.Allocate(size, alignof(SpecializeAttr));
25552562
auto *attr = new (mem) SpecializeAttr(
25562563
SourceLoc(), SourceRange(), nullptr, exported, kind, specializedSignature,
2557-
targetFunctionName, spiGroups, availableAttrs, typeErasedParams.size());
2564+
targetFunctionName, DeclNameLoc(), spiGroups, availableAttrs,
2565+
typeErasedParams.size());
25582566
attr->setTypeErasedParams(typeErasedParams);
25592567
attr->setResolver(resolver, data);
25602568
return attr;
@@ -2567,6 +2575,7 @@ SpecializedAttr *SpecializedAttr::create(ASTContext &Ctx, SourceLoc atLoc,
25672575
TrailingWhereClause *clause,
25682576
bool exported, SpecializationKind kind,
25692577
DeclNameRef targetFunctionName,
2578+
DeclNameLoc targetFunctionNameLoc,
25702579
ArrayRef<Identifier> spiGroups,
25712580
ArrayRef<AvailableAttr *> availableAttrs,
25722581
GenericSignature specializedSignature) {
@@ -2590,7 +2599,8 @@ SpecializedAttr *SpecializedAttr::create(ASTContext &Ctx, SourceLoc atLoc,
25902599

25912600
return new (mem)
25922601
SpecializedAttr(atLoc, range, clause, exported, kind, specializedSignature,
2593-
targetFunctionName, spiGroups, availableAttrs, typeErasedParamsCount);
2602+
targetFunctionName, targetFunctionNameLoc, spiGroups,
2603+
availableAttrs, typeErasedParamsCount);
25942604
}
25952605

25962606
SpecializedAttr *SpecializedAttr::create(ASTContext &ctx, bool exported,
@@ -2604,7 +2614,8 @@ SpecializedAttr *SpecializedAttr::create(ASTContext &ctx, bool exported,
26042614
void *mem = ctx.Allocate(size, alignof(SpecializedAttr));
26052615
return new (mem) SpecializedAttr(
26062616
SourceLoc(), SourceRange(), nullptr, exported, kind,
2607-
specializedSignature, targetFunctionName, spiGroups, availableAttrs, 0);
2617+
specializedSignature, targetFunctionName, DeclNameLoc(), spiGroups,
2618+
availableAttrs, 0);
26082619
}
26092620

26102621
SpecializedAttr *SpecializedAttr::create(
@@ -2618,7 +2629,8 @@ SpecializedAttr *SpecializedAttr::create(
26182629
void *mem = ctx.Allocate(size, alignof(SpecializedAttr));
26192630
auto *attr = new (mem) SpecializedAttr(
26202631
SourceLoc(), SourceRange(), nullptr, exported, kind, specializedSignature,
2621-
targetFunctionName, spiGroups, availableAttrs, typeErasedParams.size());
2632+
targetFunctionName, DeclNameLoc(), spiGroups, availableAttrs,
2633+
typeErasedParams.size());
26222634
attr->setTypeErasedParams(typeErasedParams);
26232635
attr->setResolver(resolver, data);
26242636
return attr;

lib/AST/Bridging/DeclAttributeBridging.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -258,10 +258,11 @@ BridgedDifferentiableAttr BridgedDifferentiableAttr_createParsed(
258258
BridgedDynamicReplacementAttr BridgedDynamicReplacementAttr_createParsed(
259259
BridgedASTContext cContext, SourceLoc atLoc, SourceLoc attrNameLoc,
260260
SourceLoc lParenLoc, BridgedDeclNameRef cReplacedFunction,
261-
SourceLoc rParenLoc) {
261+
BridgedDeclNameLoc cReplacedFunctionLoc, swift::SourceLoc rParenLoc) {
262262
return DynamicReplacementAttr::create(
263263
cContext.unbridged(), atLoc, attrNameLoc, lParenLoc,
264-
cReplacedFunction.unbridged(), rParenLoc);
264+
cReplacedFunction.unbridged(), cReplacedFunctionLoc.unbridged(),
265+
rParenLoc);
265266
}
266267

267268
BridgedDocumentationAttr BridgedDocumentationAttr_createParsed(
@@ -686,30 +687,34 @@ BridgedSpecializeAttr BridgedSpecializeAttr_createParsed(
686687
BridgedASTContext cContext, SourceLoc atLoc, SourceRange range,
687688
BridgedNullableTrailingWhereClause cWhereClause, bool exported,
688689
BridgedSpecializationKind cKind, BridgedDeclNameRef cTargetFunction,
689-
BridgedArrayRef cSPIGroups, BridgedArrayRef cAvailableAttrs) {
690+
BridgedDeclNameLoc cTargetFunctionLoc, BridgedArrayRef cSPIGroups,
691+
BridgedArrayRef cAvailableAttrs) {
690692
auto spiGroups = cSPIGroups.unbridged<Identifier>();
691693
SmallVector<AvailableAttr *, 2> availableAttrs;
692694
for (auto bridging : cAvailableAttrs.unbridged<BridgedAvailableAttr>())
693695
availableAttrs.push_back(bridging.unbridged());
694696

695697
return SpecializeAttr::create(
696698
cContext.unbridged(), atLoc, range, cWhereClause.unbridged(), exported,
697-
unbridge(cKind), cTargetFunction.unbridged(), spiGroups, availableAttrs);
699+
unbridge(cKind), cTargetFunction.unbridged(),
700+
cTargetFunctionLoc.unbridged(), spiGroups, availableAttrs);
698701
}
699702

700703
BridgedSpecializedAttr BridgedSpecializedAttr_createParsed(
701704
BridgedASTContext cContext, SourceLoc atLoc, SourceRange range,
702705
BridgedNullableTrailingWhereClause cWhereClause, bool exported,
703706
BridgedSpecializationKind cKind, BridgedDeclNameRef cTargetFunction,
704-
BridgedArrayRef cSPIGroups, BridgedArrayRef cAvailableAttrs) {
707+
BridgedDeclNameLoc cTargetFunctionLoc, BridgedArrayRef cSPIGroups,
708+
BridgedArrayRef cAvailableAttrs) {
705709
auto spiGroups = cSPIGroups.unbridged<Identifier>();
706710
SmallVector<AvailableAttr *, 2> availableAttrs;
707711
for (auto bridging : cAvailableAttrs.unbridged<BridgedAvailableAttr>())
708712
availableAttrs.push_back(bridging.unbridged());
709713

710714
return SpecializedAttr::create(
711715
cContext.unbridged(), atLoc, range, cWhereClause.unbridged(), exported,
712-
unbridge(cKind), cTargetFunction.unbridged(), spiGroups, availableAttrs);
716+
unbridge(cKind), cTargetFunction.unbridged(),
717+
cTargetFunctionLoc.unbridged(), spiGroups, availableAttrs);
713718
}
714719

715720
BridgedSPIAccessControlAttr

0 commit comments

Comments
 (0)