Class AliasingTransfer

All Implemented Interfaces:
ForwardTransferFunction<CFValue,CFStore>, TransferFunction<CFValue,CFStore>, NodeVisitor<TransferResult<CFValue,CFStore>,TransferInput<CFValue,CFStore>>

public class AliasingTransfer extends CFTransfer
Type refinement is treated in the usual way, except that at (pseudo-)assignments the RHS may lose its type refinement, before the LHS is type-refined.

The RHS always loses its type refinement (it is widened to @MaybeAliased, and its declared type must have been @MaybeAliased) except in the following cases:

  1. The RHS is a fresh expression.
  2. The LHS is a @NonLeaked formal parameter and the RHS is an argument in a method call or constructor invocation.
  3. The LHS is a @LeakedToResult formal parameter, the RHS is an argument in a method call or constructor invocation, and the method's return value is discarded.