bearophile wrote:
This is the latest post on the LLVM blog, "Amazing feats of Clang Error 
Recovery", by Chris Lattner:
http://blog.llvm.org/2010/04/amazing-feats-of-clang-error-recovery.html

I've compared dmd to few of those examples of Clang usage. I don't comment each 
one of those things because some of them are specific of C++, and because I 
don't understand some other of them. If you can write better translations to D 
or if you understand more of them, you can add and show me more comparisons :-)

=============================

Clang:


int foo(int x, pid_t y) {
  return x+y;
}


t.c:1:16: error: unknown type name 'pid_t'
int foo(int x, pid_t y) {
               ^

-----------------

dmd 2.042:

int foo(int x, pid_t y) {
  return x+y;
}
void main() {}


temp.d(1): Error: identifier 'pid_t' is not defined
temp.d(1): Error: pid_t is used as a type
temp.d(1): Error: cannot have parameter of type void

-----------------

Here Clangs gives a single error message (and it gives the error column).
Here the errors given by dmd give the same information.
Here dmd gives error messages that are better than GCC 4.2 ones, but I think a 
single good error message is better than three.

dmd has an ErrorType when an expression or something gives an error. The problem is it is a kind of an alias of an int type, so it continues to give errors. If such ErrorType would not trigger errors anymore, that would solve the problem. (in some cases I think a void type is returned instead of an error type)

Reply via email to