Note [Post-unarisation invariants]

GHC/Stg/Unarise.hs:368 compiler

STG programs after unarisation have these invariants:

 1. No unboxed sums at all.

 2. No unboxed tuple binders. Tuples only appear in return position.

 3. Binders and literals always have zero (for void arguments) or one PrimRep.
    (i.e. typePrimRep1 won't crash; see Note [VoidRep] in GHC.Types.RepType.)

 4. DataCon applications (StgRhsCon and StgConApp) don't have void arguments.
    This means that it's safe to wrap `StgArg`s of DataCon applications with
    `GHC.StgToCmm.Env.NonVoid`, for example.

 5. Alt binders (binders in patterns) are always non-void.

References 1

Referenced by 22