On 4/25/16 1:52 PM, Andrei Alexandrescu wrote:
It's been long asked in our community that failing template constraints
issue better error messages. Consider:

I like the first option. However, I think it should be deeper than that.

Sometimes you have code that you are sure matches one of the constraints (e.g. isInputRange), but for some reason it doesn't. Sure, it's good to know that your struct that looks exactly like an input range isn't an input range, but to know why would be better.

I realize that more context for an error may be too verbose, but an option to have the compiler tell you exactly why it is stopping compilation is good when you can't figure out the obvious reason.

So for instance, having it say "constraint failed: isInputRange!NotARange" is good, but if you pass some parameter it says something like: "constraint failed: isInputRange!NotARange, std.range.primitives:146 failed to compile: x.front

or something like that. This is a previous post related to this issue:

http://forum.dlang.org/post/m4nnrk$1ml5$1...@digitalmars.com

-Steve

Reply via email to