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.