1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE PartialTypeSignatures #-}
module LocalDefinitionBug where
monoLoc :: forall a. a -> ((a, String), (a, _))
monoLoc x = (g True , g False)
where
g :: t -> (a, String)
g _ = (x, "foo")
-- Test case for (fixed) bug that previously generated the following error message:
-- LocalDefinitionBug.hs:9:16:
-- GHC internal error: ‘a’ is not in scope during type checking, but it passed the renamer
-- tcl_env of environment: [alA :-> Type variable ‘_’ = _,
-- alC :-> Identifier[x::a, <NotTopLevel>],
-- alE :-> Type variable ‘t’ = t,
-- rjF :-> Identifier[monoLoc::a
-- -> ((a, String), (a, _)), <NotTopLevel>]]
-- In the type signature for ‘g’: g :: t -> (a, String)
-- In an equation for ‘monoLoc’:
-- monoLoc x
-- = (g True, g False)
-- where
-- g :: t -> (a, String)
-- g _ = (x, "foo")
-- Fixed by using tcExtendTyVarEnv2 instead of tcExtendTyVarEnv
|