Fix #16518 with some more kind-splitting smarts
This patch corrects two simple oversights that led to #16518: 1. `HsUtils.typeToLHsType` was taking visibility into account in the `TyConApp` case, but not the `AppTy` case. I've factored out the visibility-related logic into its own `go_app` function and now invoke `go_app` from both the `TyConApp` and `AppTy` cases. 2. `Type.fun_kind_arg_flags` did not properly split kinds with nested `forall`s, such as `(forall k. k -> Type) -> (forall k. k -> Type)`. This was simply because `fun_kind_arg_flags`'s `FunTy` case always bailed out and assumed all subsequent arguments were `Required`, which clearly isn't the case for nested `forall`s. I tweaked the `FunTy` case to recur on the result kind.
Showing
- compiler/hsSyn/HsUtils.hs 23 additions, 16 deletionscompiler/hsSyn/HsUtils.hs
- compiler/types/Type.hs 15 additions, 0 deletionscompiler/types/Type.hs
- testsuite/tests/deriving/should_compile/T16518.hs 36 additions, 0 deletionstestsuite/tests/deriving/should_compile/T16518.hs
- testsuite/tests/deriving/should_compile/all.T 1 addition, 0 deletionstestsuite/tests/deriving/should_compile/all.T
Loading
Please register or sign in to comment