Skip to content
  • parsonsmatt's avatar
    Add a note about instance visibility across component boundaries · 0cdef807
    parsonsmatt authored and Marge Bot's avatar Marge Bot committed
    In principle, the *visible* instances are
    * all instances defined in a prior top-level declaration group
      (see docs on `newDeclarationGroup`), or
    * all instances defined in any module transitively imported by the
      module being compiled
    
    However, actually searching all modules transitively below the one being
    compiled is unreasonably expensive, so `reifyInstances` will report only the
    instance for modules that GHC has had some cause to visit during this
    compilation.  This is a shortcoming: `reifyInstances` might fail to report
    instances for a type that is otherwise unusued, or instances defined in a
    different component.  You can work around this shortcoming by explicitly importing the modules
    whose instances you want to be visible. GHC issue #20529
    has some discussion around this.
    
    Fixes #20529
    0cdef807