Skip to content

Commit b729746

Browse files
committed
[AST] Make LifetimeDescriptor hold Identifier instead of StringRef
No reason to keep the name as a StringRef
1 parent 94402b6 commit b729746

File tree

5 files changed

+12
-14
lines changed

5 files changed

+12
-14
lines changed

include/swift/AST/DiagnosticsSema.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8035,7 +8035,7 @@ ERROR(pack_iteration_where_clause_not_supported, none,
80358035
//------------------------------------------------------------------------------
80368036

80378037
ERROR(lifetime_dependence_invalid_param_name, none,
8038-
"invalid parameter name specified '%0'", (StringRef))
8038+
"invalid parameter name specified %0", (Identifier))
80398039
ERROR(lifetime_dependence_invalid_param_index, none,
80408040
"invalid parameter index specified '%0'", (unsigned))
80418041
ERROR(lifetime_dependence_invalid_self_in_static, none,

include/swift/AST/LifetimeDependence.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,15 @@ enum class LifetimeDependenceKind : uint8_t { Inherit = 0, Scope };
4747
struct LifetimeDescriptor {
4848
union Value {
4949
struct {
50-
StringRef name;
50+
Identifier name;
5151
} Named;
5252
struct {
5353
unsigned index;
5454
bool isAddress;
5555
} Ordered;
5656
struct {
5757
} Self;
58-
Value(StringRef name) : Named({name}) {}
58+
Value(Identifier name) : Named({name}) {}
5959
Value(unsigned index, bool isAddress) : Ordered({index, isAddress}) {}
6060
Value() : Self() {}
6161
} value;
@@ -67,7 +67,7 @@ struct LifetimeDescriptor {
6767
SourceLoc loc;
6868

6969
private:
70-
LifetimeDescriptor(StringRef name,
70+
LifetimeDescriptor(Identifier name,
7171
ParsedLifetimeDependenceKind parsedLifetimeDependenceKind,
7272
SourceLoc loc)
7373
: value{name}, kind(DescriptorKind::Named),
@@ -84,7 +84,7 @@ struct LifetimeDescriptor {
8484

8585
public:
8686
static LifetimeDescriptor
87-
forNamed(StringRef name,
87+
forNamed(Identifier name,
8888
ParsedLifetimeDependenceKind parsedLifetimeDependenceKind,
8989
SourceLoc loc) {
9090
return {name, parsedLifetimeDependenceKind, loc};
@@ -106,7 +106,7 @@ struct LifetimeDescriptor {
106106
return parsedLifetimeDependenceKind;
107107
}
108108

109-
StringRef getName() const {
109+
Identifier getName() const {
110110
assert(kind == DescriptorKind::Named);
111111
return value.Named.name;
112112
}
@@ -130,13 +130,13 @@ struct LifetimeDescriptor {
130130
if (getDescriptorKind() != LifetimeDescriptor::DescriptorKind::Named) {
131131
return false;
132132
}
133-
return getName() == "immortal";
133+
return getName().str() == "immortal";
134134
}
135135

136136
std::string getString() const {
137137
switch (kind) {
138138
case DescriptorKind::Named:
139-
return getName().str();
139+
return getName().str().str();
140140
case DescriptorKind::Ordered:
141141
return std::to_string(getIndex());
142142
case DescriptorKind::Self:

lib/AST/Bridging/DeclAttributeBridging.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -376,9 +376,8 @@ unbridged(BridgedParsedLifetimeDependenceKind kind) {
376376
swift::LifetimeDescriptor BridgedLifetimeDescriptor::unbridged() {
377377
switch (kind) {
378378
case DescriptorKind::Named:
379-
return LifetimeDescriptor::forNamed(value.name.unbridged().str(),
380-
::unbridged(dependenceKind),
381-
loc.unbridged());
379+
return LifetimeDescriptor::forNamed(
380+
value.name.unbridged(), ::unbridged(dependenceKind), loc.unbridged());
382381
case DescriptorKind::Ordered:
383382
return LifetimeDescriptor::forOrdered(
384383
value.index, ::unbridged(dependenceKind), loc.unbridged());

lib/AST/LifetimeDependence.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ getParamDeclFromDescriptor(AbstractFunctionDecl *afd,
287287
unsigned paramIndex = 0;
288288
ParamDecl *candidateParam = nullptr;
289289
for (auto *param : *afd->getParameters()) {
290-
if (param->getParameterName().str() == descriptor.getName()) {
290+
if (param->getParameterName() == descriptor.getName()) {
291291
candidateParam = param;
292292
break;
293293
}

lib/Parse/ParseDecl.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2497,8 +2497,7 @@ parseLifetimeDescriptor(Parser &P,
24972497
/*addressable*/ true);
24982498
}
24992499

2500-
return LifetimeDescriptor::forNamed(name.str(), lifetimeDependenceKind,
2501-
loc);
2500+
return LifetimeDescriptor::forNamed(name, lifetimeDependenceKind, loc);
25022501
}
25032502
case tok::integer_literal: {
25042503
SourceLoc loc;

0 commit comments

Comments
 (0)