[project @ 1998-06-08 10:41:08 by simonpj]
authorsimonpj <unknown>
Mon, 8 Jun 1998 10:41:09 +0000 (10:41 +0000)
committersimonpj <unknown>
Mon, 8 Jun 1998 10:41:09 +0000 (10:41 +0000)
ghc/tests/typecheck/should_compile/tc098.hs [new file with mode: 0644]
ghc/tests/typecheck/should_compile/tc098.stderr [new file with mode: 0644]

diff --git a/ghc/tests/typecheck/should_compile/tc098.hs b/ghc/tests/typecheck/should_compile/tc098.hs
new file mode 100644 (file)
index 0000000..5fc404b
--- /dev/null
@@ -0,0 +1,31 @@
+--!!! Ambiguity in local declarations
+
+module ShouldSucceed where
+
+type Cp a =  a -> a -> Ordering
+
+m :: Eq a => Cp a -> [a] -> a
+m            _       [x,y,z] =  if x==y then x else z  
+     
+cpPairs :: Cp [j] -> (a,[j]) -> (a,[j]) -> Ordering
+cpPairs    cp        (_,p)      (_,q)   =  cp p q
+
+mp :: (Eq i,Eq j) => Cp [j] -> [(i,[j])] -> (i,[j])
+mp                   cp        dD          =  
+                                    let  minInRow = m (cpPairs cp)
+                                    in   minInRow dD
+
+{- GHC 3.02 reported
+
+    T.hs:24:
+       Ambiguous type variable(s)
+       `j' in the constraint `Eq (aYD, [j])'
+           arising from use of `m' at T.hs:24
+       In an equation for function `mp':
+           mp cp dD = let minInRow = m (cpPairs cp) in minInRow dD
+
+This was because the ambiguity test in tcSimplify didn't
+take account of the type variables free in the environment.
+
+It should compile fine.
+-}
diff --git a/ghc/tests/typecheck/should_compile/tc098.stderr b/ghc/tests/typecheck/should_compile/tc098.stderr
new file mode 100644 (file)
index 0000000..1081509
--- /dev/null
@@ -0,0 +1,8 @@
+ghc: module version changed to 1; reason: no old .hi file
+_exports_
+ShouldSucceed cpPairs m mp Cp;
+_declarations_
+1 cpPairs _:_ _forall_ [a b] => Cp [a] -> (b, [a]) -> (b, [a]) -> PrelBase.Ordering ;;
+1 m _:_ _forall_ [a] {PrelBase.Eq a} => Cp a -> [a] -> a ;;
+1 mp _:_ _forall_ [a b] {PrelBase.Eq b, PrelBase.Eq a} => Cp [a] -> [(b, [a])] -> (b, [a]) ;;
+1 type Cp a = a -> a -> PrelBase.Ordering ;