Clang error recovery

Ary Borenszweig ary at esperanto.org.ar
Tue Apr 6 07:48:42 PDT 2010


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)



More information about the Digitalmars-d mailing list