View mode: basic / threaded / horizontal-split · Log in · Help
March 20, 2005
format of error messages
The format of the error messages are currently:

gdc-0.10:
# nocompile/char_05.d:3: cannot implicitly convert expression -1 of type
# int to char

dmd-118:
# nocompile/char_05.d(3): cannot implicitly convert expression (-1) of
# type int to char

Wouldn't it be realy usefull for both compilers to use the same format
to denote source files and line nummers?

Thomas
March 20, 2005
Re: format of error messages
Thomas Kühne wrote:

> Wouldn't it be realy usefull for both compilers to use the same format
> to denote source files and line nummers?

GDC uses the same error format as GCC does,
maybe DMD just uses the DMC error format ?


I guess the "dmd" wrapper script could
also filter the compiler output to match ?

Since they already take different arguments,
I meant. (no real hope of making them the same)


Now it uses: (this is Perl)
>     my $result = system(@cmd);
>     errorExit if $result & 0xff; # Give up if can't exec or gdc exited with a signal

This can be changed to reroute the gdc STDOUT
and STDERR, and then do some filtering on them ?
(it would probably have to be done using pipes,
to avoid waiting until it is done for any output...)


Then use a regexp of something like
s/^([\w\/\.]+)\:(\d+)\:/$1($2):/;

To make "dmd" use the DMD error style,
and "gdc" continue to use GCC style ?


Another thing is that both compilers now use $DFLAGS,
but that they have varying syntax for those params...
$DC (=gdc) should probably use $DCFLAGS or something ?
Since $DMD (=dmd) have already claimed $DFLAGS, I mean.

--anders
March 20, 2005
Re: format of error messages
> I guess the "dmd" wrapper script could
> also filter the compiler output to match ?
[...]
> This can be changed to reroute the gdc STDOUT
> and STDERR, and then do some filtering on them ?
> (it would probably have to be done using pipes,
> to avoid waiting until it is done for any output...)

On second thought, using filters is probably overkill.

DMD: (mars.c)
> char *Loc::toChars()
> {
>     OutBuffer buf;
>     char *p;
> 
>     if (filename)
>     {
> 	buf.printf("%s", filename);
>     }
> 
>     if (linnum)
> 	buf.printf("(%d)", linnum);
>     buf.writeByte(0);
>     return (char *)buf.extractData();
> }

GDC: (gcc-mars.cc)
> char *Loc::toChars()
> {
>     OutBuffer buf;
> 
>     if (filename)
>     {
> 	buf.printf("%s", filename);
>     }
> 
>     if (linnum)
> 	buf.printf(":%d", linnum);
>     buf.writeByte(0);
>     return (char *)buf.extractData();
> }

Seems like a better way here would be to add some kind
of flag to GDC, to toggle how you want the error output ?

And have it default to GCC-style for GDC, and then add a new
"-ferror-style=dmd" (or something) param to the "dmd" wrapper ?

Something like:
    if (linnum)
    {
      if (global.params.dmdErrorStyle)
 	buf.printf("(%d)", linnum);
      else
 	buf.printf(":%d", linnum);
    }

The rest is up to David :-)

--anders

PS. Speaking of filters, a lot of the previous "dfilter"
    hacks are scheduled for inclusion in future Doxygen...
    (http://www.prowiki.org/wiki4d/wiki.cgi?DoxygenIssues)
March 21, 2005
Re: format of error messages
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Anders F Björklund schrieb am Sun, 20 Mar 2005 10:45:18 +0100:
>> I guess the "dmd" wrapper script could
>> also filter the compiler output to match ?
> [...]
>> This can be changed to reroute the gdc STDOUT
>> and STDERR, and then do some filtering on them ?
>> (it would probably have to be done using pipes,
>> to avoid waiting until it is done for any output...)
>
> On second thought, using filters is probably overkill.
>
> DMD: (mars.c)
>> char *Loc::toChars()
>> {
>>     OutBuffer buf;
>>     char *p;
>> 
>>     if (filename)
>>     {
>> 	buf.printf("%s", filename);
>>     }
>> 
>>     if (linnum)
>> 	buf.printf("(%d)", linnum);
>>     buf.writeByte(0);
>>     return (char *)buf.extractData();
>> }
>
> GDC: (gcc-mars.cc)
>> char *Loc::toChars()
>> {
>>     OutBuffer buf;
>> 
>>     if (filename)
>>     {
>> 	buf.printf("%s", filename);
>>     }
>> 
>>     if (linnum)
>> 	buf.printf(":%d", linnum);
>>     buf.writeByte(0);
>>     return (char *)buf.extractData();
>> }

in additon: html.c Html:error(const char*)

> Seems like a better way here would be to add some kind
> of flag to GDC, to toggle how you want the error output ?
>
> And have it default to GCC-style for GDC, and then add a new
> "-ferror-style=dmd" (or something) param to the "dmd" wrapper ?
>
> Something like:
>      if (linnum)
>      {
>        if (global.params.dmdErrorStyle)
>   	buf.printf("(%d)", linnum);
>        else
>   	buf.printf(":%d", linnum);
>      }
>
> The rest is up to David :-)

Defenitly a good idea.

Thomas

-----BEGIN PGP SIGNATURE-----

iD8DBQFCPzWf3w+/yD4P9tIRAueTAKCoKlL6Z657a2Qyg5TcGsBdRJTFDwCfbdVA
+68aX5vl0yXU+EMExuBQXeE=
=pKlz
-----END PGP SIGNATURE-----
Top | Discussion index | About this forum | D home