Skip to content
  • sheaf's avatar
    49731fed
    TcPlugins: `newWanted` uses the provided `CtLoc` · 49731fed
    sheaf authored and Marge Bot's avatar Marge Bot committed
    The `GHC.Tc.Plugin.newWanted` function takes a `CtLoc` as an argument,
    but it used to discard the location information, keeping only
    the `CtOrigin`. It would then retrieve the source location from the
    `TcM` environment using `getCtLocM`.
    
    This patch changes this so that `GHC.Tc.Plugin.newWanted` passes on
    the full `CtLoc`. This means that authors of type-checking plugins
    no longer need to manually set the `CtLoc` environment in the `TcM`
    monad if they want to create a new Wanted constraint with the given
    `CtLoc` (in particular, for setting the `SrcSpan` of an emitted
    constraint). This makes the `newWanted` function consistent with
    `newGiven`, which always used the full `CtLoc` instead of using
    the environment.
    
    Fixes #20895
    49731fed
    TcPlugins: `newWanted` uses the provided `CtLoc`
    sheaf authored and Marge Bot's avatar Marge Bot committed
    The `GHC.Tc.Plugin.newWanted` function takes a `CtLoc` as an argument,
    but it used to discard the location information, keeping only
    the `CtOrigin`. It would then retrieve the source location from the
    `TcM` environment using `getCtLocM`.
    
    This patch changes this so that `GHC.Tc.Plugin.newWanted` passes on
    the full `CtLoc`. This means that authors of type-checking plugins
    no longer need to manually set the `CtLoc` environment in the `TcM`
    monad if they want to create a new Wanted constraint with the given
    `CtLoc` (in particular, for setting the `SrcSpan` of an emitted
    constraint). This makes the `newWanted` function consistent with
    `newGiven`, which always used the full `CtLoc` instead of using
    the environment.
    
    Fixes #20895
Loading