Template Haskell drops unary tuples
Summary
Template Haskell drops unary tuples
Steps to reproduce
foo = $( return (TupE [VarE 'undefined]) )
bar = foo `seq` "hi"
and evaluate bar
. You will observe undefined
is evaluated leading to an exception.
Expected behavior
I expect Template Haskell to throw an exception, saying that unary tuples do not exist.
Environment
- GHC version used: 8.6
Commentary
Convert.hs drops unary tuple constructors. Of course, we don't have unary boxed tuples, but if foo
is accepted above, I would surely expect bar
to be "hi"
. Instead, we should just reject foo
outright.