I've hit this while working on #10769, where I would need to change ast::ty_nil (and all the code using it) for consistency's sake and a great total of one usecase, a noop ..().
The only problem I see with ty_tup(~[]) is the possibility of heap allocation.
If that's a reason for concern, this can wait for the proposed changes to vectors, where ~[] would be represented as (0u, 0u).