Skip to content
  • Sebastian Graf's avatar
    Arity: Rework `ArityType` to fix monotonicity (#18870) · 63fa3997
    Sebastian Graf authored and Marge Bot's avatar Marge Bot committed
    As we found out in #18870, `andArityType` is not monotone, with
    potentially severe consequences for termination of fixed-point
    iteration. That showed in an abundance of "Exciting arity" DEBUG
    messages that are emitted whenever we do more than one step in
    fixed-point iteration.
    
    The solution necessitates also recording `OneShotInfo` info for
    `ABot` arity type. Thus we get the following definition for `ArityType`:
    
    ```
    data ArityType = AT [OneShotInfo] Divergence
    ```
    
    The majority of changes in this patch are the result of refactoring use
    sites of `ArityType` to match the new definition.
    
    The regression test `T18870` asserts that we indeed don't emit any DEBUG
    output anymore for a function where we previously would have.
    Similarly, there's a regression test `T18937` for #18937, which we
    expect to be broken for now.
    
    Fixes #18870.
    63fa3997