Skip to content
  • Simon Peyton Jones's avatar
    Make the matcher and wrapper Ids in PatSyn into LocalIds, not GlobalIds · 7ac600d5
    Simon Peyton Jones authored
    This was a serious bug, exposed by Trac #9175.  The matcher and wrapper
    must be LocalIds, like record selectors and dictionary functions, for
    the reasons now documented in Note [Exported LocalIds] in Id.lhs
    
    In fixing this I found
     - PatSyn should have an Id inside it (apart from the wrapper and matcher)
       It should be a Name.  Hence psId --> psName, with knock-on consequences
    
     - Tidying of PatSyns in TidyPgm was wrong
    
     - The keep-alive set in Desugar.deSugar (now) doesn't need pattern synonyms
       in it
    
    I also cleaned up the interface to PatSyn a little, so there's a tiny knock-on
    effect in Haddock; hence the haddock submodule update.
    
    It's very hard to make a test for this bug, so I haven't.
    7ac600d5