Skip to content
  • thomasw's avatar
    Fix #10045 · e9d72cef
    thomasw authored
    Summary:
    SPJ's solution is to only bring the `TcId` (which includes the type) of a
    binder into scope when it had a non-partial type signature.
    
    Take care of this by only storing the `TcId` in `TcSigInfo` of non-partial
    type signatures, hence the change to `sig_poly_id :: Maybe TcId`. Only in case
    of a `Just` will we bring the `TcId` in scope. We still need to know the name
    of the binder, even when it has a partial type signature, so add a `sig_name
    :: Name` field. The field `sig_partial :: Bool` is no longer necessary, so
    reimplement `isPartialSig` in terms of `sig_poly_id`.
    
    Note that the new test case fails, but not because of a panic, but because the
    `Num a` constraint is missing. Adding an extra-constraints wildcard to
    `copy`'s signature would fix it.
    
    Test Plan: validate
    
    Reviewers: simonpj, austin
    
    Reviewed By: simonpj
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D646
    
    GHC Trac Issues: #10045
    e9d72cef