| |
| Posted by Manuel König in reply to bartosz@relisoft.com | PermalinkReply |
|
Manuel König
| http://d.puremagic.com/issues/show_bug.cgi?id=3278
Manuel König <manuelk89@gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |manuelk89@gmx.net
OS/Version|Windows |All
Severity|critical |normal
--- Comment #1 from Manuel König <manuelk89@gmx.net> 2010-10-11 10:14:51 PDT ---
Reduced testcase:
template TypeTuple(TList...)
{
alias TList TypeTuple;
}
template TypeList(T...)
{
alias T toTuple;
}
static assert (TypeList!().toTuple == TypeTuple!());
Actually dmd is right to reject the code, but it's bad at conveying the reason. You're trying to compare types with a '==' expression directly, which is not allowed. Use is(A==B), instead, where A,B are types (documented), or type-tuples (I think that it works for type-tuples is undocumented, but type-tuples are treated like types in the frontend). These asserts compile and the tests pass:
static assert (is(TypeList!().toTuple == TypeTuple!()));
static assert (is(TypeList!(int).toTuple == TypeTuple!(int)));
You can see it has nothing to do with empty tuples being a special case or so. But I would like dmd to produce an error message like this:
Error: can not compare types with '==', use is(TypeA==TypeB) instead
I changed importance to normal, because it's just a bad error message. I see you have wrong-code in the keywords list, so maybe you knew that already?
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
|