@@ -1263,19 +1263,22 @@ class DynamicReplacementAttr final
12631263 friend class DynamicallyReplacedDeclRequest ;
12641264
12651265 DeclNameRef ReplacedFunctionName;
1266+ DeclNameLoc ReplacedFunctionNameLoc;
12661267 LazyMemberLoader *Resolver = nullptr ;
12671268 uint64_t ResolverContextData;
12681269
12691270 // / Create an @_dynamicReplacement(for:) attribute written in the source.
12701271 DynamicReplacementAttr (SourceLoc atLoc, SourceRange baseRange,
12711272 DeclNameRef replacedFunctionName,
1273+ DeclNameLoc replacedFunctionNameLoc,
12721274 SourceRange parenRange);
12731275
12741276 DynamicReplacementAttr (DeclNameRef name, AbstractFunctionDecl *f)
12751277 : DeclAttribute(DeclAttrKind::DynamicReplacement, SourceLoc(),
12761278 SourceRange (),
12771279 /* Implicit=*/ false),
1278- ReplacedFunctionName(name), Resolver(nullptr ), ResolverContextData(0 ) {
1280+ ReplacedFunctionName(name), ReplacedFunctionNameLoc(),
1281+ Resolver(nullptr ), ResolverContextData(0 ) {
12791282 Bits.DynamicReplacementAttr .HasTrailingLocationInfo = false ;
12801283 }
12811284
@@ -1284,8 +1287,8 @@ class DynamicReplacementAttr final
12841287 : DeclAttribute(DeclAttrKind::DynamicReplacement, SourceLoc(),
12851288 SourceRange(),
12861289 /* Implicit=*/ false),
1287- ReplacedFunctionName(name), Resolver(Resolver ),
1288- ResolverContextData(Data) {
1290+ ReplacedFunctionName(name), ReplacedFunctionNameLoc( ),
1291+ Resolver(Resolver), ResolverContextData(Data) {
12891292 Bits.DynamicReplacementAttr .HasTrailingLocationInfo = false ;
12901293 }
12911294
@@ -1306,7 +1309,8 @@ class DynamicReplacementAttr final
13061309public:
13071310 static DynamicReplacementAttr *
13081311 create (ASTContext &Context, SourceLoc AtLoc, SourceLoc DynReplLoc,
1309- SourceLoc LParenLoc, DeclNameRef replacedFunction, SourceLoc RParenLoc);
1312+ SourceLoc LParenLoc, DeclNameRef replacedFunction,
1313+ DeclNameLoc replacedFunctionNameLoc, SourceLoc RParenLoc);
13101314
13111315 static DynamicReplacementAttr *create (ASTContext &ctx,
13121316 DeclNameRef replacedFunction,
@@ -1321,6 +1325,10 @@ class DynamicReplacementAttr final
13211325 return ReplacedFunctionName;
13221326 }
13231327
1328+ DeclNameLoc getReplacedFunctionNameLoc () const {
1329+ return ReplacedFunctionNameLoc;
1330+ }
1331+
13241332 // / Retrieve the location of the opening parentheses, if there is one.
13251333 SourceLoc getLParenLoc () const ;
13261334
@@ -1809,6 +1817,7 @@ class AbstractSpecializeAttr
18091817 GenericSignature specializedSignature;
18101818
18111819 DeclNameRef targetFunctionName;
1820+ DeclNameLoc targetFunctionNameLoc;
18121821 LazyMemberLoader *resolver = nullptr ;
18131822 uint64_t resolverContextData;
18141823 size_t numSPIGroups;
@@ -1821,7 +1830,9 @@ class AbstractSpecializeAttr
18211830 TrailingWhereClause *clause,
18221831 bool exported,
18231832 SpecializationKind kind, GenericSignature specializedSignature,
1824- DeclNameRef targetFunctionName, ArrayRef<Identifier> spiGroups,
1833+ DeclNameRef targetFunctionName,
1834+ DeclNameLoc targetFunctionNameLoc,
1835+ ArrayRef<Identifier> spiGroups,
18251836 ArrayRef<AvailableAttr *> availabilityAttrs,
18261837 size_t typeErasedParamsCount);
18271838
@@ -1905,6 +1916,10 @@ class AbstractSpecializeAttr
19051916 return targetFunctionName;
19061917 }
19071918
1919+ DeclNameLoc getTargetFunctionNameLoc () const {
1920+ return targetFunctionNameLoc;
1921+ }
1922+
19081923 // / \p forDecl is the value decl that the attribute belongs to.
19091924 ValueDecl *getTargetFunctionDecl (const ValueDecl *forDecl) const ;
19101925
@@ -1934,19 +1949,23 @@ class SpecializeAttr final : public AbstractSpecializeAttr,
19341949 TrailingWhereClause *clause,
19351950 bool exported,
19361951 SpecializationKind kind, GenericSignature specializedSignature,
1937- DeclNameRef targetFunctionName, ArrayRef<Identifier> spiGroups,
1952+ DeclNameRef targetFunctionName,
1953+ DeclNameLoc targetFunctionNameLoc,
1954+ ArrayRef<Identifier> spiGroups,
19381955 ArrayRef<AvailableAttr *> availabilityAttrs,
19391956 size_t typeErasedParamsCount) :
19401957 AbstractSpecializeAttr (DeclAttrKind::Specialize, atLoc, Range, clause,
19411958 exported, kind, specializedSignature, targetFunctionName,
1942- spiGroups, availabilityAttrs, typeErasedParamsCount) {}
1959+ targetFunctionNameLoc, spiGroups, availabilityAttrs,
1960+ typeErasedParamsCount) {}
19431961
19441962public:
19451963 static SpecializeAttr *
19461964 create (ASTContext &Ctx, SourceLoc atLoc, SourceRange Range,
19471965 TrailingWhereClause *clause, bool exported,
19481966 SpecializationKind kind,
1949- DeclNameRef targetFunctionName, ArrayRef<Identifier> spiGroups,
1967+ DeclNameRef targetFunctionName, DeclNameLoc targetFunctionNameLoc,
1968+ ArrayRef<Identifier> spiGroups,
19501969 ArrayRef<AvailableAttr *> availabilityAttrs,
19511970 GenericSignature specializedSignature = nullptr );
19521971
@@ -1990,19 +2009,23 @@ class SpecializedAttr final : public AbstractSpecializeAttr ,
19902009 TrailingWhereClause *clause,
19912010 bool exported,
19922011 SpecializationKind kind, GenericSignature specializedSignature,
1993- DeclNameRef targetFunctionName, ArrayRef<Identifier> spiGroups,
2012+ DeclNameRef targetFunctionName,
2013+ DeclNameLoc targetFunctionNameLoc,
2014+ ArrayRef<Identifier> spiGroups,
19942015 ArrayRef<AvailableAttr *> availabilityAttrs,
19952016 size_t typeErasedParamsCount) :
19962017 AbstractSpecializeAttr (DeclAttrKind::Specialized, atLoc, Range, clause,
19972018 exported, kind, specializedSignature, targetFunctionName,
1998- spiGroups, availabilityAttrs, typeErasedParamsCount) {}
2019+ targetFunctionNameLoc, spiGroups, availabilityAttrs,
2020+ typeErasedParamsCount) {}
19992021
20002022public:
20012023 static SpecializedAttr *
20022024 create (ASTContext &Ctx, SourceLoc atLoc, SourceRange Range,
20032025 TrailingWhereClause *clause, bool exported,
20042026 SpecializationKind kind,
2005- DeclNameRef targetFunctionName, ArrayRef<Identifier> spiGroups,
2027+ DeclNameRef targetFunctionName, DeclNameLoc targetFunctionNameLoc,
2028+ ArrayRef<Identifier> spiGroups,
20062029 ArrayRef<AvailableAttr *> availabilityAttrs,
20072030 GenericSignature specializedSignature = nullptr );
20082031
0 commit comments