[GHC] #13187: Strange debug output printed: isPredTy Const Int (, ) Bool Char
GHC
ghc-devs at haskell.org
Thu Jan 26 19:04:46 UTC 2017
#13187: Strange debug output printed: isPredTy Const Int (,) Bool Char
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler (Type | Version: 8.1
checker) |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Poor/confusing | Unknown/Multiple
error message | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Description changed by RyanGlScott:
@@ -6,1 +6,0 @@
- {-# LANGUAGE TemplateHaskell #-}
@@ -10,3 +9,3 @@
- test36_expand = $([| let f :: Const Int (,) Bool Char -> Char
- f = snd in
- f |])
+
+ f :: Const Int (,) Bool Char -> Char
+ f = snd
New description:
I noticed this when debugging an issue in `th-desugar`. If you have this
file:
{{{#!hs
{-# LANGUAGE PolyKinds #-}
module Bug where
type Const a b = b
f :: Const Int (,) Bool Char -> Char
f = snd
}}}
And compile it on GHC HEAD with `-ddump-tc-trace` enabled, even if you
redirect the output of `-ddump-tc-trace` to a file with `-ddump-to-file`,
GHC will still print what appears to be debugging messages!
{{{
$ ~/Software/ghc3/inplace/bin/ghc-stage2 Bug.hs -ddump-to-file -fforce-
recomp -ddump-tc-trace
[1 of 1] Compiling Bug ( Bug.hs, Bug.o )
isPredTy Const Int (,) Bool Char
}}}
The source of that `isPredTy` message is in `Type`
([http://git.haskell.org/ghc.git/blob/3eebd1f5fd56689baa63fcc63b7f4bde0ae70d0b:/compiler/types/Type.hs#l1523
here]):
{{{#!hs
go_k :: Kind -> [KindOrType] -> Bool
-- True <=> ('k' applied to 'kts') = Constraint
go_k k [] = isConstraintKind k
go_k k (arg:args) = case piResultTy_maybe k arg of
Just k' -> go_k k' args
Nothing -> pprTrace "isPredTy" (ppr ty)
False
-- This last case should not happen; but it does if we
-- we call isPredTy during kind checking, especially if
-- there is actually a kind error. Example that showed
-- this up: polykinds/T11399
}}}
Several things stand out here:
1. Should we be using `pprTrace` this way?
2. Given that the comment says that "This last case should not happen", is
this program indicative of a bug? Or perhaps this code really can be
legitimately reached, and the comment should be updated to reflect this?
FWIW, `polykinds/T11399` exhibits the same issue:
{{{
$ ~/Software/ghc3/inplace/bin/ghc-stage2 Bug2.hs -ddump-to-file -fforce-
recomp -ddump-tc-trace
[1 of 1] Compiling T11399 ( Bug2.hs, Bug2.o )
isPredTy a_aCn[sk:1] *
isPredTy a_aCn[sk:1] *
isPredTy a_aCn[sk:1] *
isPredTy a_aCn[sk:1] *
isPredTy a_aCn[sk:1] *
isPredTy a_aCn[sk:1] *
isPredTy a_aCn[sk:1] *
isPredTy a_aCn[sk:1] *
isPredTy a_aCn[sk:1] *
isPredTy a_aCn[sk:1] *
isPredTy a_aCn[sk:1] *
isPredTy a_aCn[sk:1] *
isPredTy a_aCn[sk:1] *
Bug2.hs:10:32: error:
• Couldn't match kind ‘*’ with ‘GHC.Types.RuntimeRep’
When matching kinds
a :: * -> *
TYPE :: GHC.Types.RuntimeRep -> *
Expected kind ‘* -> *’, but ‘UhOh a’ has kind ‘a * -> *’
• In the first argument of ‘Functor’, namely ‘(UhOh a)’
In the instance declaration for ‘Functor (UhOh a)’
|
10 | instance Functor a => Functor (UhOh a) where
| ^^^^^^
}}}
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13187#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list