Lines 27-32
Link Here
|
27 |
public final static int NULL = 1; |
27 |
public final static int NULL = 1; |
28 |
public final static int NON_NULL = -1; |
28 |
public final static int NON_NULL = -1; |
29 |
public final static int POTENTIALLY_NULL = 2; |
29 |
public final static int POTENTIALLY_NULL = 2; |
|
|
30 |
public final static int POTENTIALLY_NON_NULL = 3; |
31 |
public final static int POTENTIALLY_NULL_OR_NON_NULL = 4; |
30 |
|
32 |
|
31 |
public static final UnconditionalFlowInfo DEAD_END; // Represents a dead branch status of initialization |
33 |
public static final UnconditionalFlowInfo DEAD_END; // Represents a dead branch status of initialization |
32 |
static { |
34 |
static { |
Lines 255-260
Link Here
|
255 |
abstract public void markAsPotentiallyNull(LocalVariableBinding local); |
257 |
abstract public void markAsPotentiallyNull(LocalVariableBinding local); |
256 |
|
258 |
|
257 |
/** |
259 |
/** |
|
|
260 |
* Record a local may have got assigned to non-null. |
261 |
*/ |
262 |
abstract public void markAsPotentiallyNonNull(LocalVariableBinding local); |
263 |
|
264 |
/** |
265 |
* Record a local may have got assigned to null or to non-null. |
266 |
*/ |
267 |
abstract public void markAsPotentiallyNullOrNonNull(LocalVariableBinding local); |
268 |
|
269 |
/** |
258 |
* Record a local got definitely assigned. |
270 |
* Record a local got definitely assigned. |
259 |
*/ |
271 |
*/ |
260 |
abstract public void markAsDefinitelyAssigned(LocalVariableBinding local); |
272 |
abstract public void markAsDefinitelyAssigned(LocalVariableBinding local); |
Lines 265-270
Link Here
|
265 |
abstract public void markAsDefinitelyUnknown(LocalVariableBinding local); |
277 |
abstract public void markAsDefinitelyUnknown(LocalVariableBinding local); |
266 |
|
278 |
|
267 |
/** |
279 |
/** |
|
|
280 |
* Mark the null status of the given local according to the given status |
281 |
* @param local |
282 |
* @param nullStatus one of FLowInfo.NULL ... FlowInfo.POTENTIALLY_NULL_OR_NON_NULL |
283 |
*/ |
284 |
public void markNullStatus(LocalVariableBinding local, int nullStatus) { |
285 |
switch(nullStatus) { |
286 |
case NULL : |
287 |
markAsDefinitelyNull(local); |
288 |
break; |
289 |
case NON_NULL : |
290 |
markAsDefinitelyNonNull(local); |
291 |
break; |
292 |
case POTENTIALLY_NULL : |
293 |
markAsPotentiallyNull(local); |
294 |
break; |
295 |
case POTENTIALLY_NON_NULL : |
296 |
markAsPotentiallyNonNull(local); |
297 |
break; |
298 |
case POTENTIALLY_NULL_OR_NON_NULL : |
299 |
markAsPotentiallyNullOrNonNull(local); |
300 |
break; |
301 |
default: |
302 |
markAsDefinitelyUnknown(local); |
303 |
} |
304 |
} |
305 |
|
306 |
/** |
307 |
* Answer the null status of the given local |
308 |
* @param local |
309 |
* @return one of FLowInfo.NULL ... FlowInfo.POTENTIALLY_NULL_OR_NON_NULL |
310 |
*/ |
311 |
public int nullStatus(LocalVariableBinding local) { |
312 |
if (isDefinitelyNull(local)) |
313 |
return NULL; |
314 |
if (isDefinitelyNonNull(local)) |
315 |
return NON_NULL; |
316 |
if (isPotentiallyNull(local)) { |
317 |
if (isPotentiallyNonNull(local)) |
318 |
return POTENTIALLY_NULL_OR_NON_NULL; |
319 |
return POTENTIALLY_NULL; |
320 |
} |
321 |
if (isPotentiallyNonNull(local)) |
322 |
return POTENTIALLY_NON_NULL; |
323 |
return UNKNOWN; |
324 |
} |
325 |
|
326 |
/** |
268 |
* Merge branches using optimized boolean conditions |
327 |
* Merge branches using optimized boolean conditions |
269 |
*/ |
328 |
*/ |
270 |
public static UnconditionalFlowInfo mergedOptimizedBranches( |
329 |
public static UnconditionalFlowInfo mergedOptimizedBranches( |
Lines 482-485
Link Here
|
482 |
*/ |
541 |
*/ |
483 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=303448 |
542 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=303448 |
484 |
abstract public boolean isMarkedAsNullOrNonNullInAssertExpression(LocalVariableBinding local); |
543 |
abstract public boolean isMarkedAsNullOrNonNullInAssertExpression(LocalVariableBinding local); |
|
|
544 |
|
485 |
} |
545 |
} |