milessabin/shapeless — pull request #56 by travisbrown (2013-10-20 17:34:17+00:00)
Title: Added constraint to prevent generation of spurious `Transposer` instances.

Currently `T` can be empty, which means that the compiler will happily make up a `Transposer.Aux[x :: HNil, HNil]` instance for any `x` at all.

This can result in confusing errors involving `zip`, for example:

``` scala
def foo[L <: HList](l: L): HNil = l zip l // Definitely shouldn't compile.

val xs = 1 :: 'a :: HNil
(xs: HList).zip(xs: HList): HNil // Also shouldn't compile.
```

And so on.