Skip to content
  • Alfredo Di Napoli's avatar
    Add GhcMessage and ancillary types · 7d18e1ba
    Alfredo Di Napoli authored and Marge Bot's avatar Marge Bot committed
    This commit adds GhcMessage and ancillary (PsMessage, TcRnMessage, ..)
    types.
    These types will be expanded to represent more errors generated
    by different subsystems within GHC. Right now, they are underused,
    but more will come in the glorious future.
    
    See
    https://gitlab.haskell.org/ghc/ghc/-/wikis/Errors-as-(structured)-values
    for a design overview.
    
    Along the way, lots of other things had to happen:
    
    * Adds Semigroup and Monoid instance for Bag
    
    * Fixes #19746 by parsing OPTIONS_GHC pragmas into Located Strings.
      See GHC.Parser.Header.toArgs (moved from GHC.Utils.Misc, where it
      didn't belong anyway).
    
    * Addresses (but does not completely fix) #19709, now reporting
      desugarer warnings and errors appropriately for TH splices.
      Not done: reporting type-checker warnings for TH splices.
    
    * Some small refactoring around Safe Haskell inference, in order
      to keep separate classes of messages separate.
    
    * Some small refactoring around initDsTc, in order to keep separate
      classes of messages separate.
    
    * Separate out the generation of messages (that is, the construction
      of the text block) from the wrapping of messages (that is, assigning
      a SrcSpan). This is more modular than the previous design, which
      mixed the two.
    
    Close #19746.
    
    This was a collaborative effort by Alfredo di Napoli and
    Richard Eisenberg, with a key assist on #19746 by Iavor
    Diatchki.
    
    Metric Increase:
        MultiLayerModules
    7d18e1ba