Skip to content
  • Ryan Scott's avatar
    Handle local fixity declarations in DsMeta properly · c3fde723
    Ryan Scott authored and Marge Bot's avatar Marge Bot committed
    `DsMeta.rep_sig` used to skip over `FixSig` entirely, which had the
    effect of causing local fixity declarations to be dropped when quoted
    in Template Haskell. But there is no good reason for this state of
    affairs, as the code in `DsMeta.repFixD` (which handles top-level
    fixity declarations) handles local fixity declarations just fine.
    This patch factors out the necessary parts of `repFixD` so that they
    can be used in `rep_sig` as well.
    
    There was one minor complication: the fixity signatures for class
    methods in each `HsGroup` were stored both in `FixSig`s _and_ the
    list of `LFixitySig`s for top-level fixity signatures, so I needed
    to take action to prevent fixity signatures for class methods being
    converted to `Dec`s twice. I tweaked `RnSource.add` to avoid putting
    these fixity signatures in two places and added
    `Note [Top-level fixity signatures in an HsGroup]` in `GHC.Hs.Decls`
    to explain the new design.
    
    Fixes #17608. Bumps the Haddock submodule.
    c3fde723