Skip to content
  • Sebastian Graf's avatar
    PmCheck: Long-distance information for LocalBinds (#18626) · 3ab0d8f7
    Sebastian Graf authored and Marge Bot's avatar Marge Bot committed
    Now `desugarLocalBind` (formerly `desugarLet`) reasons about
    
      * `FunBind`s that
        * Have no pattern matches (so which aren't functions)
        * Have a singleton match group with a single GRHS
        * (which may have guards)
      * and looks through trivial post-typechecking `AbsBinds` in doing so
        to pick up the introduced renamings.
    
    And desugars to `PmLet` LYG-style guards. Since GRHSs are no longer
    denoted simply by `NonEmpty PmGRHS`, but also need to carry a `[PmGrd]`
    for the `PmLet`s from `LocalBind`s, I added `PmGRHSs` to capture that.
    
    Since we call out to the desugarer more often, I found that there were
    superfluous warnings emitted when desugaring e.g. case expressions.
    Thus, I made sure that we deactivate any warnings in the LYG desugaring
    steps by the new wrapper function `noCheckDs`.
    
    There's a regression test in `T18626`. Fixes #18626.
    3ab0d8f7