@@ -144,41 +144,58 @@ export enum LocalFlags {
144
144
145
145
/** Local is constant. */
146
146
CONSTANT = 1 << 0 ,
147
+ /** Local is a function parameter. */
148
+ PARAMETER = 1 << 1 ,
147
149
/** Local is properly wrapped. Relevant for small integers. */
148
- WRAPPED = 1 << 1 ,
150
+ WRAPPED = 1 << 2 ,
149
151
/** Local is non-null. */
150
- NONNULL = 1 << 2 ,
152
+ NONNULL = 1 << 3 ,
151
153
/** Local is read from. */
152
- READFROM = 1 << 3 ,
154
+ READFROM = 1 << 4 ,
153
155
/** Local is written to. */
154
- WRITTENTO = 1 << 4 ,
156
+ WRITTENTO = 1 << 5 ,
155
157
/** Local is retained. */
156
- RETAINED = 1 << 5 ,
158
+ RETAINED = 1 << 6 ,
159
+ /** Local is returned. */
160
+ RETURNED = 1 << 7 ,
157
161
158
162
/** Local is conditionally read from. */
159
- CONDITIONALLY_READFROM = 1 << 6 ,
163
+ CONDITIONALLY_READFROM = 1 << 8 ,
160
164
/** Local is conditionally written to. */
161
- CONDITIONALLY_WRITTENTO = 1 << 7 ,
165
+ CONDITIONALLY_WRITTENTO = 1 << 9 ,
162
166
/** Local must be conditionally retained. */
163
- CONDITIONALLY_RETAINED = 1 << 8 ,
167
+ CONDITIONALLY_RETAINED = 1 << 10 ,
168
+ /** Local is conditionally returned. */
169
+ CONDITIONALLY_RETURNED = 1 << 11 ,
164
170
165
171
/** Any categorical flag. */
166
172
ANY_CATEGORICAL = CONSTANT
173
+ | PARAMETER
167
174
| WRAPPED
168
175
| NONNULL
169
176
| READFROM
170
177
| WRITTENTO
171
- | RETAINED ,
178
+ | RETAINED
179
+ | RETURNED ,
172
180
173
181
/** Any conditional flag. */
174
182
ANY_CONDITIONAL = RETAINED
175
183
| CONDITIONALLY_READFROM
176
184
| CONDITIONALLY_WRITTENTO
177
- | CONDITIONALLY_RETAINED ,
185
+ | CONDITIONALLY_RETAINED
186
+ | CONDITIONALLY_RETURNED ,
187
+
188
+ /** Any written to flag. */
189
+ ANY_WRITTENTO = WRITTENTO
190
+ | CONDITIONALLY_WRITTENTO ,
178
191
179
192
/** Any retained flag. */
180
193
ANY_RETAINED = RETAINED
181
- | CONDITIONALLY_RETAINED
194
+ | CONDITIONALLY_RETAINED ,
195
+
196
+ /** Any returned flag. */
197
+ ANY_RETURNED = RETURNED
198
+ | CONDITIONALLY_RETURNED
182
199
}
183
200
export namespace LocalFlags {
184
201
export function join ( left : LocalFlags , right : LocalFlags ) : LocalFlags {
@@ -565,6 +582,7 @@ export class Flow {
565
582
if ( flags & LocalFlags . RETAINED ) this . setLocalFlag ( i , LocalFlags . CONDITIONALLY_RETAINED ) ;
566
583
if ( flags & LocalFlags . READFROM ) this . setLocalFlag ( i , LocalFlags . CONDITIONALLY_READFROM ) ;
567
584
if ( flags & LocalFlags . WRITTENTO ) this . setLocalFlag ( i , LocalFlags . CONDITIONALLY_WRITTENTO ) ;
585
+ if ( flags & LocalFlags . RETURNED ) this . setLocalFlag ( i , LocalFlags . CONDITIONALLY_RETURNED ) ;
568
586
}
569
587
}
570
588
0 commit comments