On Wednesday, 30 December 2015 at 16:41:51 UTC, Adam D. Ruppe wrote:
BTW wouldn't it be great if the compiler's error messages showed each level of pass/fail for those constraints? For the docs, I don't mind doing a few special case, hand written things, but the compiler needs something a bit more generic.

I think the way to code that is whenever the compiler is printing an expression that can convert to bool, color it based on the result, and do this through the whole tree from the bottom up.

Then the use could tell at a glance which parts succeeded and failed when reading the error message.

It'd be kinda nice if it showed the result of non-bool things too but that's going to be hard to do on a console without becoming a wall of text, even with whitespace formatting...

But the compiler will come later, for now I gotta do docs!

I was personally thinking that it can't be horribly difficult that given a function signature:

void foo(T)(T arg) if(constraintA!T && constraintB!T || constraintC!T)

That if this cannot be instantiated the compiler prints something like
"Candidate foo(T)(T arg) fails with (true && false || false)"
I sometimes found myself putting static assert(<copy-pasted-segment-of-constraints-with-my-type>, "Result is blabla") and recompiling just to debug these :/

Reply via email to