Thread overview
[phobos] rdmd is not compiling
Aug 17, 2011
Jonathan M Davis
August 17, 2011
There are a lot of things wrong with rdmd.d in the "tools" repository right now.  If I run "dmd rdmd.d", I get the following error:

    rdmd.d(313): Error: incompatible types for ((& shellQuote) ?
    (__funcliteral4)): 'string function(string arg)' and 'string
    function(string s) pure nothrow @safe'

That's easy to fix; just mark shellQuote() as @safe pure nothrow.  But
now, the compiler is saying

    rdmd.d(321): Error: undefined identifier myModules

I think a few of the recent commits need to be reverted.

-Lars

August 17, 2011
On Wednesday, August 17, 2011 14:25 Lars Tandle Kyllingstad wrote:
> There are a lot of things wrong with rdmd.d in the "tools" repository right now. If I run "dmd rdmd.d", I get the following error:
> 
> rdmd.d(313): Error: incompatible types for ((& shellQuote) ?
> (__funcliteral4)): 'string function(string arg)' and 'string
> function(string s) pure nothrow @safe'
> 
> That's easy to fix; just mark shellQuote() as @safe pure nothrow. But
> now, the compiler is saying
> 
> rdmd.d(321): Error: undefined identifier myModules
> 
> I think a few of the recent commits need to be reverted.

Commits to what? rdmd? dmd? Phobos?

- Jonathan M Davis
August 18, 2011
On Wed, 2011-08-17 at 22:15 +0000, Jonathan M Davis wrote:
> On Wednesday, August 17, 2011 14:25 Lars Tandle Kyllingstad wrote:
> > There are a lot of things wrong with rdmd.d in the "tools" repository right now. If I run "dmd rdmd.d", I get the following error:
> > 
> > rdmd.d(313): Error: incompatible types for ((& shellQuote) ?
> > (__funcliteral4)): 'string function(string arg)' and 'string
> > function(string s) pure nothrow @safe'
> > 
> > That's easy to fix; just mark shellQuote() as @safe pure nothrow. But
> > now, the compiler is saying
> > 
> > rdmd.d(321): Error: undefined identifier myModules
> > 
> > I think a few of the recent commits need to be reverted.
> 
> Commits to what? rdmd? dmd? Phobos?

rdmd.  It has seen an unusual amount of development activity lately, which is great, but it seems not all commits have been properly tested.

(That said, I actually think the first one is a bug in DMD.  I cannot
see any reason why a "string function(string) pure nothrow @safe"
shouldn't be implicitly convertible to "string function(string)".)

-Lars

August 18, 2011
On Thu, 2011-08-18 at 07:37 +0200, Lars Tandle Kyllingstad wrote:
> On Wed, 2011-08-17 at 22:15 +0000, Jonathan M Davis wrote:
> > On Wednesday, August 17, 2011 14:25 Lars Tandle Kyllingstad wrote:
> > > There are a lot of things wrong with rdmd.d in the "tools" repository right now. If I run "dmd rdmd.d", I get the following error:
> > > 
> > > rdmd.d(313): Error: incompatible types for ((& shellQuote) ?
> > > (__funcliteral4)): 'string function(string arg)' and 'string
> > > function(string s) pure nothrow @safe'
> > > 
> > > That's easy to fix; just mark shellQuote() as @safe pure nothrow. But
> > > now, the compiler is saying
> > > 
> > > rdmd.d(321): Error: undefined identifier myModules
> > > 
> > > I think a few of the recent commits need to be reverted.
> > 
> > Commits to what? rdmd? dmd? Phobos?
> 
> rdmd.  It has seen an unusual amount of development activity lately, which is great, but it seems not all commits have been properly tested.
> 
> (That said, I actually think the first one is a bug in DMD.  I cannot
> see any reason why a "string function(string) pure nothrow @safe"
> shouldn't be implicitly convertible to "string function(string)".)

Argh.  It is so broken it's not even funny.

I filed a report for the first bug (6524) and implemented the workaround.  Then I fixed the second bug by replacing myModules with myDeps in line 321.  That made it compile, but now another bug has surfaced:

In the .rsp file, which is supposed to contain DMD's command line
parameters (when there are many of them), the string
"dmd /path/to/dmd.conf" now appears.

I've traced this back to rdmd.d line 414-437, in which the
"binary" (i.e. dmd) and "config" (i.e. dmd.conf) lines of the .deps file
get added as dependencies of the program being compiled.  In other
words, it appears to be very much intentional.  I have no idea why,
though.

I have submitted a pull request that hopefully fixes these issues in an acceptable manner.  I don't have much experience with the rdmd code, however, so it should be reviewed by someone who does.

-Lars