Skip to content

Commit c9bb85a

Browse files
committed
[NFC] Add DeclNameLoc to specialize/dynamicReplacement
1 parent cab38af commit c9bb85a

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
@@ -893,11 +893,12 @@ BridgedDocumentationAttr BridgedDocumentationAttr_createParsed(
893893

894894
SWIFT_NAME(
895895
"BridgedDynamicReplacementAttr.createParsed(_:atLoc:attrNameLoc:lParenLoc:"
896-
"replacedFunction:rParenLoc:)")
896+
"replacedFunction:replacedFunctionLoc:rParenLoc:)")
897897
BridgedDynamicReplacementAttr BridgedDynamicReplacementAttr_createParsed(
898-
BridgedASTContext cContext, swift::SourceLoc atLoc,
899-
swift::SourceLoc attrNameLoc, swift::SourceLoc lParenLoc,
900-
BridgedDeclNameRef cReplacedFunction, swift::SourceLoc rParenLoc);
898+
BridgedASTContext cContext, swift::SourceLoc cAtLoc,
899+
swift::SourceLoc cAttrNameLoc, swift::SourceLoc cLParenLoc,
900+
BridgedDeclNameRef cReplacedFunction,
901+
BridgedDeclNameLoc cReplacedFunctionLoc, swift::SourceLoc cRParenLoc);
901902

902903
SWIFT_NAME("BridgedEffectsAttr.createParsed(_:atLoc:range:effectKind:)")
903904
BridgedEffectsAttr BridgedEffectsAttr_createParsed(
@@ -1228,22 +1229,24 @@ enum ENUM_EXTENSIBILITY_ATTR(closed) BridgedSpecializationKind : uint8_t {
12281229
};
12291230

12301231
SWIFT_NAME("BridgedSpecializeAttr.createParsed(_:atLoc:range:whereClause:"
1231-
"exported:kind:taretFunction:spiGroups:availableAttrs:)")
1232+
"exported:kind:targetFunction:targetFunctionLoc:spiGroups:"
1233+
"availableAttrs:)")
12321234
BridgedSpecializeAttr BridgedSpecializeAttr_createParsed(
12331235
BridgedASTContext cContext, swift::SourceLoc atLoc,
12341236
swift::SourceRange range, BridgedNullableTrailingWhereClause cWhereClause,
12351237
bool exported, BridgedSpecializationKind cKind,
1236-
BridgedDeclNameRef cTargetFunction, BridgedArrayRef cSPIGroups,
1237-
BridgedArrayRef cAvailableAttrs);
1238+
BridgedDeclNameRef cTargetFunction, BridgedDeclNameLoc cTargetFunctionLoc,
1239+
BridgedArrayRef cSPIGroups, BridgedArrayRef cAvailableAttrs);
12381240

12391241
SWIFT_NAME("BridgedSpecializedAttr.createParsed(_:atLoc:range:whereClause:"
1240-
"exported:kind:taretFunction:spiGroups:availableAttrs:)")
1242+
"exported:kind:targetFunction:targetFunctionLoc:spiGroups:"
1243+
"availableAttrs:)")
12411244
BridgedSpecializedAttr BridgedSpecializedAttr_createParsed(
12421245
BridgedASTContext cContext, swift::SourceLoc atLoc,
12431246
swift::SourceRange range, BridgedNullableTrailingWhereClause cWhereClause,
12441247
bool exported, BridgedSpecializationKind cKind,
1245-
BridgedDeclNameRef cTargetFunction, BridgedArrayRef cSPIGroups,
1246-
BridgedArrayRef cAvailableAttrs);
1248+
BridgedDeclNameRef cTargetFunction, BridgedDeclNameLoc cTargetFunctionLoc,
1249+
BridgedArrayRef cSPIGroups, BridgedArrayRef cAvailableAttrs);
12471250

12481251
SWIFT_NAME(
12491252
"BridgedSPIAccessControlAttr.createParsed(_:atLoc:range:spiGroupName:)")

include/swift/AST/Attr.h

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

12561256
DeclNameRef ReplacedFunctionName;
1257+
DeclNameLoc ReplacedFunctionNameLoc;
12571258
LazyMemberLoader *Resolver = nullptr;
12581259
uint64_t ResolverContextData;
12591260

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

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

@@ -1275,8 +1278,8 @@ class DynamicReplacementAttr final
12751278
: DeclAttribute(DeclAttrKind::DynamicReplacement, SourceLoc(),
12761279
SourceRange(),
12771280
/*Implicit=*/false),
1278-
ReplacedFunctionName(name), Resolver(Resolver),
1279-
ResolverContextData(Data) {
1281+
ReplacedFunctionName(name), ReplacedFunctionNameLoc(),
1282+
Resolver(Resolver), ResolverContextData(Data) {
12801283
Bits.DynamicReplacementAttr.HasTrailingLocationInfo = false;
12811284
}
12821285

@@ -1297,7 +1300,8 @@ class DynamicReplacementAttr final
12971300
public:
12981301
static DynamicReplacementAttr *
12991302
create(ASTContext &Context, SourceLoc AtLoc, SourceLoc DynReplLoc,
1300-
SourceLoc LParenLoc, DeclNameRef replacedFunction, SourceLoc RParenLoc);
1303+
SourceLoc LParenLoc, DeclNameRef replacedFunction,
1304+
DeclNameLoc replacedFunctionNameLoc, SourceLoc RParenLoc);
13011305

13021306
static DynamicReplacementAttr *create(ASTContext &ctx,
13031307
DeclNameRef replacedFunction,
@@ -1312,6 +1316,10 @@ class DynamicReplacementAttr final
13121316
return ReplacedFunctionName;
13131317
}
13141318

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

@@ -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
@@ -1067,7 +1067,7 @@ class Parser {
10671067
std::optional<bool> &Exported,
10681068
std::optional<SpecializeAttr::SpecializationKind> &Kind,
10691069
TrailingWhereClause *&TrailingWhereClause, DeclNameRef &targetFunction,
1070-
AvailabilityRange *SILAvailability,
1070+
DeclNameLoc &targetFunctionLoc, AvailabilityRange *SILAvailability,
10711071
SmallVectorImpl<Identifier> &spiGroups,
10721072
SmallVectorImpl<AvailableAttr *> &availableAttrs,
10731073
llvm::function_ref<bool(Parser &)> parseSILTargetName,

lib/AST/Attr.cpp

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2134,10 +2134,11 @@ PrivateImportAttr *PrivateImportAttr::create(ASTContext &Ctxt, SourceLoc AtLoc,
21342134
DynamicReplacementAttr::DynamicReplacementAttr(SourceLoc atLoc,
21352135
SourceRange baseRange,
21362136
DeclNameRef name,
2137+
DeclNameLoc nameLoc,
21372138
SourceRange parenRange)
21382139
: DeclAttribute(DeclAttrKind::DynamicReplacement, atLoc, baseRange,
21392140
/*Implicit=*/false),
2140-
ReplacedFunctionName(name) {
2141+
ReplacedFunctionName(name), ReplacedFunctionNameLoc(nameLoc) {
21412142
Bits.DynamicReplacementAttr.HasTrailingLocationInfo = true;
21422143
getTrailingLocations()[0] = parenRange.Start;
21432144
getTrailingLocations()[1] = parenRange.End;
@@ -2146,11 +2147,12 @@ DynamicReplacementAttr::DynamicReplacementAttr(SourceLoc atLoc,
21462147
DynamicReplacementAttr *
21472148
DynamicReplacementAttr::create(ASTContext &Ctx, SourceLoc AtLoc,
21482149
SourceLoc DynReplLoc, SourceLoc LParenLoc,
2149-
DeclNameRef ReplacedFunction, SourceLoc RParenLoc) {
2150+
DeclNameRef ReplacedFunction,
2151+
DeclNameLoc nameLoc, SourceLoc RParenLoc) {
21502152
void *mem = Ctx.Allocate(totalSizeToAlloc<SourceLoc>(2),
21512153
alignof(DynamicReplacementAttr));
21522154
return new (mem) DynamicReplacementAttr(
2153-
AtLoc, SourceRange(DynReplLoc, RParenLoc), ReplacedFunction,
2155+
AtLoc, SourceRange(DynReplLoc, RParenLoc), ReplacedFunction, nameLoc,
21542156
SourceRange(LParenLoc, RParenLoc));
21552157
}
21562158

@@ -2506,12 +2508,15 @@ AbstractSpecializeAttr::AbstractSpecializeAttr(DeclAttrKind DK,
25062508
SpecializationKind kind,
25072509
GenericSignature specializedSignature,
25082510
DeclNameRef targetFunctionName,
2511+
DeclNameLoc targetFunctionNameLoc,
25092512
ArrayRef<Identifier> spiGroups,
25102513
ArrayRef<AvailableAttr *> availableAttrs,
25112514
size_t typeErasedParamsCount)
25122515
: DeclAttribute(DK, atLoc, range, /*Implicit=*/clause == nullptr),
25132516
trailingWhereClause(clause), specializedSignature(specializedSignature),
2514-
targetFunctionName(targetFunctionName), numSPIGroups(spiGroups.size()),
2517+
targetFunctionName(targetFunctionName),
2518+
targetFunctionNameLoc(targetFunctionNameLoc),
2519+
numSPIGroups(spiGroups.size()),
25152520
numAvailableAttrs(availableAttrs.size()),
25162521
numTypeErasedParams(typeErasedParamsCount),
25172522
typeErasedParamsInitialized(false) {
@@ -2533,6 +2538,7 @@ SpecializeAttr *SpecializeAttr::create(ASTContext &Ctx, SourceLoc atLoc,
25332538
TrailingWhereClause *clause,
25342539
bool exported, SpecializationKind kind,
25352540
DeclNameRef targetFunctionName,
2541+
DeclNameLoc targetFunctionNameLoc,
25362542
ArrayRef<Identifier> spiGroups,
25372543
ArrayRef<AvailableAttr *> availableAttrs,
25382544
GenericSignature specializedSignature) {
@@ -2556,7 +2562,8 @@ SpecializeAttr *SpecializeAttr::create(ASTContext &Ctx, SourceLoc atLoc,
25562562

25572563
return new (mem)
25582564
SpecializeAttr(atLoc, range, clause, exported, kind, specializedSignature,
2559-
targetFunctionName, spiGroups, availableAttrs, typeErasedParamsCount);
2565+
targetFunctionName, targetFunctionNameLoc, spiGroups,
2566+
availableAttrs, typeErasedParamsCount);
25602567
}
25612568

25622569
SpecializeAttr *SpecializeAttr::create(ASTContext &ctx, bool exported,
@@ -2569,8 +2576,8 @@ SpecializeAttr *SpecializeAttr::create(ASTContext &ctx, bool exported,
25692576
spiGroups.size(), availableAttrs.size(), 0);
25702577
void *mem = ctx.Allocate(size, alignof(SpecializeAttr));
25712578
return new (mem) SpecializeAttr(
2572-
SourceLoc(), SourceRange(), nullptr, exported, kind,
2573-
specializedSignature, targetFunctionName, spiGroups, availableAttrs, 0);
2579+
SourceLoc(), SourceRange(), nullptr, exported, kind, specializedSignature,
2580+
targetFunctionName, DeclNameLoc(), spiGroups, availableAttrs, 0);
25742581
}
25752582

25762583
SpecializeAttr *SpecializeAttr::create(
@@ -2584,7 +2591,8 @@ SpecializeAttr *SpecializeAttr::create(
25842591
void *mem = ctx.Allocate(size, alignof(SpecializeAttr));
25852592
auto *attr = new (mem) SpecializeAttr(
25862593
SourceLoc(), SourceRange(), nullptr, exported, kind, specializedSignature,
2587-
targetFunctionName, spiGroups, availableAttrs, typeErasedParams.size());
2594+
targetFunctionName, DeclNameLoc(), spiGroups, availableAttrs,
2595+
typeErasedParams.size());
25882596
attr->setTypeErasedParams(typeErasedParams);
25892597
attr->setResolver(resolver, data);
25902598
return attr;
@@ -2597,6 +2605,7 @@ SpecializedAttr *SpecializedAttr::create(ASTContext &Ctx, SourceLoc atLoc,
25972605
TrailingWhereClause *clause,
25982606
bool exported, SpecializationKind kind,
25992607
DeclNameRef targetFunctionName,
2608+
DeclNameLoc targetFunctionNameLoc,
26002609
ArrayRef<Identifier> spiGroups,
26012610
ArrayRef<AvailableAttr *> availableAttrs,
26022611
GenericSignature specializedSignature) {
@@ -2620,7 +2629,8 @@ SpecializedAttr *SpecializedAttr::create(ASTContext &Ctx, SourceLoc atLoc,
26202629

26212630
return new (mem)
26222631
SpecializedAttr(atLoc, range, clause, exported, kind, specializedSignature,
2623-
targetFunctionName, spiGroups, availableAttrs, typeErasedParamsCount);
2632+
targetFunctionName, targetFunctionNameLoc, spiGroups,
2633+
availableAttrs, typeErasedParamsCount);
26242634
}
26252635

26262636
SpecializedAttr *SpecializedAttr::create(ASTContext &ctx, bool exported,
@@ -2634,7 +2644,8 @@ SpecializedAttr *SpecializedAttr::create(ASTContext &ctx, bool exported,
26342644
void *mem = ctx.Allocate(size, alignof(SpecializedAttr));
26352645
return new (mem) SpecializedAttr(
26362646
SourceLoc(), SourceRange(), nullptr, exported, kind,
2637-
specializedSignature, targetFunctionName, spiGroups, availableAttrs, 0);
2647+
specializedSignature, targetFunctionName, DeclNameLoc(), spiGroups,
2648+
availableAttrs, 0);
26382649
}
26392650

26402651
SpecializedAttr *SpecializedAttr::create(
@@ -2648,7 +2659,8 @@ SpecializedAttr *SpecializedAttr::create(
26482659
void *mem = ctx.Allocate(size, alignof(SpecializedAttr));
26492660
auto *attr = new (mem) SpecializedAttr(
26502661
SourceLoc(), SourceRange(), nullptr, exported, kind, specializedSignature,
2651-
targetFunctionName, spiGroups, availableAttrs, typeErasedParams.size());
2662+
targetFunctionName, DeclNameLoc(), spiGroups, availableAttrs,
2663+
typeErasedParams.size());
26522664
attr->setTypeErasedParams(typeErasedParams);
26532665
attr->setResolver(resolver, data);
26542666
return attr;

lib/AST/Bridging/DeclAttributeBridging.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -261,10 +261,11 @@ BridgedDifferentiableAttr BridgedDifferentiableAttr_createParsed(
261261
BridgedDynamicReplacementAttr BridgedDynamicReplacementAttr_createParsed(
262262
BridgedASTContext cContext, SourceLoc atLoc, SourceLoc attrNameLoc,
263263
SourceLoc lParenLoc, BridgedDeclNameRef cReplacedFunction,
264-
SourceLoc rParenLoc) {
264+
BridgedDeclNameLoc cReplacedFunctionLoc, swift::SourceLoc rParenLoc) {
265265
return DynamicReplacementAttr::create(
266266
cContext.unbridged(), atLoc, attrNameLoc, lParenLoc,
267-
cReplacedFunction.unbridged(), rParenLoc);
267+
cReplacedFunction.unbridged(), cReplacedFunctionLoc.unbridged(),
268+
rParenLoc);
268269
}
269270

270271
BridgedDocumentationAttr BridgedDocumentationAttr_createParsed(
@@ -689,30 +690,34 @@ BridgedSpecializeAttr BridgedSpecializeAttr_createParsed(
689690
BridgedASTContext cContext, SourceLoc atLoc, SourceRange range,
690691
BridgedNullableTrailingWhereClause cWhereClause, bool exported,
691692
BridgedSpecializationKind cKind, BridgedDeclNameRef cTargetFunction,
692-
BridgedArrayRef cSPIGroups, BridgedArrayRef cAvailableAttrs) {
693+
BridgedDeclNameLoc cTargetFunctionLoc, BridgedArrayRef cSPIGroups,
694+
BridgedArrayRef cAvailableAttrs) {
693695
auto spiGroups = cSPIGroups.unbridged<Identifier>();
694696
SmallVector<AvailableAttr *, 2> availableAttrs;
695697
for (auto bridging : cAvailableAttrs.unbridged<BridgedAvailableAttr>())
696698
availableAttrs.push_back(bridging.unbridged());
697699

698700
return SpecializeAttr::create(
699701
cContext.unbridged(), atLoc, range, cWhereClause.unbridged(), exported,
700-
unbridge(cKind), cTargetFunction.unbridged(), spiGroups, availableAttrs);
702+
unbridge(cKind), cTargetFunction.unbridged(),
703+
cTargetFunctionLoc.unbridged(), spiGroups, availableAttrs);
701704
}
702705

703706
BridgedSpecializedAttr BridgedSpecializedAttr_createParsed(
704707
BridgedASTContext cContext, SourceLoc atLoc, SourceRange range,
705708
BridgedNullableTrailingWhereClause cWhereClause, bool exported,
706709
BridgedSpecializationKind cKind, BridgedDeclNameRef cTargetFunction,
707-
BridgedArrayRef cSPIGroups, BridgedArrayRef cAvailableAttrs) {
710+
BridgedDeclNameLoc cTargetFunctionLoc, BridgedArrayRef cSPIGroups,
711+
BridgedArrayRef cAvailableAttrs) {
708712
auto spiGroups = cSPIGroups.unbridged<Identifier>();
709713
SmallVector<AvailableAttr *, 2> availableAttrs;
710714
for (auto bridging : cAvailableAttrs.unbridged<BridgedAvailableAttr>())
711715
availableAttrs.push_back(bridging.unbridged());
712716

713717
return SpecializedAttr::create(
714718
cContext.unbridged(), atLoc, range, cWhereClause.unbridged(), exported,
715-
unbridge(cKind), cTargetFunction.unbridged(), spiGroups, availableAttrs);
719+
unbridge(cKind), cTargetFunction.unbridged(),
720+
cTargetFunctionLoc.unbridged(), spiGroups, availableAttrs);
716721
}
717722

718723
BridgedSPIAccessControlAttr

0 commit comments

Comments
 (0)