@@ -32,21 +32,22 @@ class AbstractFunctionDecl;
3232class LifetimeDependentReturnTypeRepr ;
3333class SILParameterInfo ;
3434
35- enum class LifetimeDependenceKind : uint8_t {
36- Copy = 0 ,
37- Consume,
38- Borrow,
39- Mutate
35+ enum class ParsedLifetimeDependenceKind : uint8_t {
36+ Default = 0 ,
37+ Scope,
38+ Inherit // Only used with deserialized decls
4039};
4140
41+ enum class LifetimeDependenceKind : uint8_t { Inherit = 0 , Scope };
42+
4243class LifetimeDependenceSpecifier {
4344public:
4445 enum class SpecifierKind { Named, Ordered, Self };
4546
4647private:
4748 SourceLoc loc;
4849 SpecifierKind specifierKind;
49- LifetimeDependenceKind lifetimeDependenceKind ;
50+ ParsedLifetimeDependenceKind parsedLifetimeDependenceKind ;
5051 union Value {
5152 struct {
5253 Identifier name;
@@ -61,35 +62,36 @@ class LifetimeDependenceSpecifier {
6162 Value () {}
6263 } value;
6364
64- LifetimeDependenceSpecifier (SourceLoc loc, SpecifierKind specifierKind,
65- LifetimeDependenceKind lifetimeDependenceKind ,
66- Value value)
65+ LifetimeDependenceSpecifier (
66+ SourceLoc loc, SpecifierKind specifierKind ,
67+ ParsedLifetimeDependenceKind parsedLifetimeDependenceKind, Value value)
6768 : loc(loc), specifierKind(specifierKind),
68- lifetimeDependenceKind (lifetimeDependenceKind), value(value) {}
69+ parsedLifetimeDependenceKind (parsedLifetimeDependenceKind),
70+ value(value) {}
6971
7072public:
7173 static LifetimeDependenceSpecifier getNamedLifetimeDependenceSpecifier (
72- SourceLoc loc, LifetimeDependenceKind kind, Identifier name) {
74+ SourceLoc loc, ParsedLifetimeDependenceKind kind, Identifier name) {
7375 return {loc, SpecifierKind::Named, kind, name};
7476 }
7577
7678 static LifetimeDependenceSpecifier getOrderedLifetimeDependenceSpecifier (
77- SourceLoc loc, LifetimeDependenceKind kind, unsigned index) {
79+ SourceLoc loc, ParsedLifetimeDependenceKind kind, unsigned index) {
7880 return {loc, SpecifierKind::Ordered, kind, index};
7981 }
8082
8183 static LifetimeDependenceSpecifier
8284 getSelfLifetimeDependenceSpecifier (SourceLoc loc,
83- LifetimeDependenceKind kind) {
85+ ParsedLifetimeDependenceKind kind) {
8486 return {loc, SpecifierKind::Self, kind, {}};
8587 }
8688
8789 SourceLoc getLoc () const { return loc; }
8890
8991 SpecifierKind getSpecifierKind () const { return specifierKind; }
9092
91- LifetimeDependenceKind getLifetimeDependenceKind () const {
92- return lifetimeDependenceKind ;
93+ ParsedLifetimeDependenceKind getParsedLifetimeDependenceKind () const {
94+ return parsedLifetimeDependenceKind ;
9395 }
9496
9597 Identifier getName () const {
@@ -114,19 +116,17 @@ class LifetimeDependenceSpecifier {
114116 llvm_unreachable (" Invalid LifetimeDependenceSpecifier::SpecifierKind" );
115117 }
116118
117- StringRef getLifetimeDependenceKindString () const {
118- switch (lifetimeDependenceKind) {
119- case LifetimeDependenceKind::Borrow:
120- return " _borrow" ;
121- case LifetimeDependenceKind::Consume:
122- return " _consume" ;
123- case LifetimeDependenceKind::Copy:
124- return " _copy" ;
125- case LifetimeDependenceKind::Mutate:
126- return " _mutate" ;
119+ std::string getLifetimeDependenceSpecifierString () const {
120+ switch (parsedLifetimeDependenceKind) {
121+ case ParsedLifetimeDependenceKind::Default:
122+ return " dependsOn(" + getParamString () + " )" ;
123+ case ParsedLifetimeDependenceKind::Scope:
124+ return " dependsOn(scoped " + getParamString () + " )" ;
125+ case ParsedLifetimeDependenceKind::Inherit:
126+ return " dependsOn(inherited " + getParamString () + " )" ;
127127 }
128128 llvm_unreachable (
129- " Invalid LifetimeDependenceSpecifier::LifetimeDependenceKind " );
129+ " Invalid LifetimeDependenceSpecifier::ParsedLifetimeDependenceKind " );
130130 }
131131};
132132
@@ -137,7 +137,7 @@ class LifetimeDependenceInfo {
137137
138138 static LifetimeDependenceInfo getForParamIndex (AbstractFunctionDecl *afd,
139139 unsigned index,
140- ValueOwnership ownership );
140+ LifetimeDependenceKind kind );
141141
142142public:
143143 LifetimeDependenceInfo ()
0 commit comments