Skip to content
  • Eric Seidel's avatar
    Hide the CallStack implicit parameter · 94048f9f
    Eric Seidel authored
    The implicit parameter isn't actually very relevant to the CallStack
    machinery, so we hide the implementation details behind a constraint
    alias
    
    ```
    type HasCallStack = (?callStack :: CallStack)
    ```
    
    This has a few benefits:
    
    1. No need to enable `ImplicitParams` in user code.
    2. No need to remember the `?callStack` naming convention.
    3. Gives us the option to change the implementation details in the
    future with less user-land breakage.
    
    The revised `CallStack` API is exported from `GHC.Stack` and makes no
    mention of the implicit parameter.
    
    Test Plan: ./validate
    
    Reviewers: simonpj, austin, hvr, bgamari
    
    Reviewed By: simonpj, bgamari
    
    Subscribers: thomie
    
    Projects: #ghc
    
    Differential Revision: https://phabricator.haskell.org/D1818
    94048f9f