-
Simon Peyton Jones authored
--------------------- Bug in specialisation --------------------- Laszlo managed to get a function like this: foo :: Enum a => (# a, Int #) The specialiser specialised it, resulting in an unboxed tuple binding, which Lint objected to. This commit adds a dummy argument to the specialised function, very like the case for strictness analysis. For example, at type Char we'd get foo_char :: State# RealWorld -> (# Char, Int #) foo_char = \_ -> ... We use a State# type because it generates no argument-passing code at runtime. (We should really have some other void type for this purpose, because State# is misleading, but this way avoids extra types.)
bfb87645