Skip to content

Commit df0047d

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

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,14 +47,14 @@ 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
} Ordered;
5555
struct {
5656
} Self;
57-
Value(StringRef name) : Named({name}) {}
57+
Value(Identifier name) : Named({name}) {}
5858
Value(unsigned index) : Ordered({index}) {}
5959
Value() : Self() {}
6060
} value;
@@ -66,7 +66,7 @@ struct LifetimeDescriptor {
6666
SourceLoc loc;
6767

6868
private:
69-
LifetimeDescriptor(StringRef name,
69+
LifetimeDescriptor(Identifier name,
7070
ParsedLifetimeDependenceKind parsedLifetimeDependenceKind,
7171
SourceLoc loc)
7272
: value{name}, kind(DescriptorKind::Named),
@@ -83,7 +83,7 @@ struct LifetimeDescriptor {
8383

8484
public:
8585
static LifetimeDescriptor
86-
forNamed(StringRef name,
86+
forNamed(Identifier name,
8787
ParsedLifetimeDependenceKind parsedLifetimeDependenceKind,
8888
SourceLoc loc) {
8989
return {name, parsedLifetimeDependenceKind, loc};
@@ -104,7 +104,7 @@ struct LifetimeDescriptor {
104104
return parsedLifetimeDependenceKind;
105105
}
106106

107-
StringRef getName() const {
107+
Identifier getName() const {
108108
assert(kind == DescriptorKind::Named);
109109
return value.Named.name;
110110
}
@@ -122,13 +122,13 @@ struct LifetimeDescriptor {
122122
if (getDescriptorKind() != LifetimeDescriptor::DescriptorKind::Named) {
123123
return false;
124124
}
125-
return getName() == "immortal";
125+
return getName().str() == "immortal";
126126
}
127127

128128
std::string getString() const {
129129
switch (kind) {
130130
case DescriptorKind::Named:
131-
return getName().str();
131+
return getName().str().str();
132132
case DescriptorKind::Ordered:
133133
return std::to_string(getIndex());
134134
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
@@ -271,7 +271,7 @@ getParamDeclFromDescriptor(AbstractFunctionDecl *afd,
271271
unsigned paramIndex = 0;
272272
ParamDecl *candidateParam = nullptr;
273273
for (auto *param : *afd->getParameters()) {
274-
if (param->getParameterName().str() == descriptor.getName()) {
274+
if (param->getParameterName() == descriptor.getName()) {
275275
candidateParam = param;
276276
break;
277277
}

lib/Parse/ParseDecl.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2480,8 +2480,7 @@ parseLifetimeDescriptor(Parser &P,
24802480
case tok::identifier: {
24812481
Identifier name;
24822482
auto loc = P.consumeIdentifier(name, /*diagnoseDollarPrefix=*/false);
2483-
return LifetimeDescriptor::forNamed(name.str(), lifetimeDependenceKind,
2484-
loc);
2483+
return LifetimeDescriptor::forNamed(name, lifetimeDependenceKind, loc);
24852484
}
24862485
case tok::integer_literal: {
24872486
SourceLoc loc;

0 commit comments

Comments
 (0)