summaryrefslogtreecommitdiff
path: root/testsuite/tests/indexed-types/should_compile/T4981-V3.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/indexed-types/should_compile/T4981-V3.hs')
-rw-r--r--testsuite/tests/indexed-types/should_compile/T4981-V3.hs31
1 files changed, 31 insertions, 0 deletions
diff --git a/testsuite/tests/indexed-types/should_compile/T4981-V3.hs b/testsuite/tests/indexed-types/should_compile/T4981-V3.hs
new file mode 100644
index 0000000000..9e0eda54eb
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_compile/T4981-V3.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE CPP, TypeFamilies, FlexibleContexts #-}
+module Class ( cleverNamedResolve ) where
+
+data FL p = FL p
+
+class PatchInspect p where
+instance PatchInspect p => PatchInspect (FL p) where
+
+type family PrimOf p
+type instance PrimOf (FL p) = PrimOf p
+
+data WithName prim = WithName prim
+
+instance PatchInspect prim => PatchInspect (WithName prim) where
+
+class (PatchInspect (PrimOf p)) => Conflict p where
+ resolveConflicts :: p -> PrimOf p
+
+instance Conflict p => Conflict (FL p) where
+ resolveConflicts = undefined
+
+type family OnPrim p
+
+joinPatches :: p -> p
+
+joinPatches = id
+
+cleverNamedResolve :: (Conflict (OnPrim p)
+ ,PrimOf (OnPrim p) ~ WithName (PrimOf p))
+ => FL (OnPrim p) -> WithName (PrimOf p)
+cleverNamedResolve = resolveConflicts . joinPatches