June 08, 2005
zwang wrote:
> Walter wrote:
> 
>> Added inner classes.
>>
>> http://www.digitalmars.com/d/changelog.html
> 
> Wow, that looks like a major update. Thanks!
> I'm not sure whether it's time to upgrade, though.
> So many things are deprecated in version 0.126.

And so many things changed their behaviour.  Like nested classes and unsuccessful AA lookups.

Stewart.

-- 
My e-mail is valid but not my primary mailbox.  Please keep replies on the 'group where everyone may benefit.
June 08, 2005
Walter wrote:
> Added inner classes.
> 
> http://www.digitalmars.com/d/changelog.html
> 
> 
> 

Thank you for all of that!

-JJR
June 08, 2005
Stewart Gordon wrote:

> Could we please at least have an answer about these?
> 
> http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D.bugs/3170
> http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D.bugs/3173

David has fixed the GDC compiler (0.12) so that it outputs to stderr...
Probably since I was complaining about it breaking my -pipe builds :-)

Unfortunately that only goes for the *compiler* errors. The runtime
errors, such as uncaught exceptions, still go stdout (not stderr).

--anders
June 08, 2005
Walter wrote:
> Added inner classes.
> 
> http://www.digitalmars.com/d/changelog.html
> 
> 
> 
Walter is my hero. No really! He is...

-- 
Thanks,
Trevor Parscal
www.trevorparscal.com
trevorparscal@hotmail.com
June 08, 2005
On Tue, 7 Jun 2005 22:17:50 -0700, Walter wrote:

> Added inner classes.
> 
> http://www.digitalmars.com/d/changelog.html

Ummm... I've got a problem ...

 void main()
 {
    Object x;

    version (DigitalMars)
    {
        if (x !is null) {}
    }
    else
    {
        if (x !== null) {}
    }
 }

I expected that by using the DigitalMars compiler that I wouldn't get ...

   "test.d(11): '!==' is deprecated, use '!is' instead"

-- 
Derek Parnell
Melbourne, Australia
8/06/2005 9:55:42 PM
June 08, 2005
"Walter" <newshound@digitalmars.com> wrote in message news:d85vju$so2$1@digitaldaemon.com...
> Added inner classes.
>
> http://www.digitalmars.com/d/changelog.html

very nice! The "is expression" looks like it'll be very useful.


June 08, 2005
You're the man!

Really, I think it's amazing how fast you did full inner classes support (and even some other stuff)! Do you take apprentices? :)


xs0
June 08, 2005
In article <trch1jhcb7pj.1qubpmdg2vvtf.dlg@40tude.net>, Derek Parnell says...
>
>On Tue, 7 Jun 2005 22:17:50 -0700, Walter wrote:
>
>> Added inner classes.
>> 
>> http://www.digitalmars.com/d/changelog.html
>
>Ummm... I've got a problem ...
>
> void main()
> {
>    Object x;
> 
>    version (DigitalMars)
>    {
>        if (x !is null) {}
>    }
>    else
>    {
>        if (x !== null) {}
>    }
> }
>
>I expected that by using the DigitalMars compiler that I wouldn't get ...
>
>   "test.d(11): '!==' is deprecated, use '!is' instead"
>
>-- 
>Derek Parnell
>Melbourne, Australia
>8/06/2005 9:55:42 PM

That looks like a parsing catch.  As you recall, version blocks must be fully language-parseable.  The version condition only selects which code block gets compiled in.  Walter must be catching the use of !== in the parser and erroring out if so.

Regards,
James Dunne
June 08, 2005
On Wed, 8 Jun 2005 12:46:47 +0000 (UTC), James Dunne wrote:

> In article <trch1jhcb7pj.1qubpmdg2vvtf.dlg@40tude.net>, Derek Parnell says...
>>
>>On Tue, 7 Jun 2005 22:17:50 -0700, Walter wrote:
>>
>>> Added inner classes.
>>> 
>>> http://www.digitalmars.com/d/changelog.html
>>
>>Ummm... I've got a problem ...
>>
>> void main()
>> {
>>    Object x;
>> 
>>    version (DigitalMars)
>>    {
>>        if (x !is null) {}
>>    }
>>    else
>>    {
>>        if (x !== null) {}
>>    }
>> }
>>
>>I expected that by using the DigitalMars compiler that I wouldn't get ...
>>
>>   "test.d(11): '!==' is deprecated, use '!is' instead"
>>
>>-- 
>>Derek Parnell
>>Melbourne, Australia
>>8/06/2005 9:55:42 PM
> 
> That looks like a parsing catch.  As you recall, version blocks must be fully language-parseable.  The version condition only selects which code block gets compiled in.  Walter must be catching the use of !== in the parser and erroring out if so.

Oh I understand what's going on, and I realized that before doing this. So to be more specific...

WTF do I have to code so I only have to support one source file for multiple compilers? I don't really want one version of the Build application source for the GDC compiler and another set of source files for the DigitalMars compiler. At this stage, I'm going to have to revert to a macro preprocessor again! I'm sure that is not what Walter envisioned his D-isciples doing.

-- 
Derek Parnell
Melbourne, Australia
8/06/2005 11:16:32 PM
June 08, 2005
Derek Parnell wrote:

> Ummm... I've got a problem ...
> 
>  void main()
>  {
>     Object x;
>         version (DigitalMars)
>     {
>         if (x !is null) {}
>     }
>     else
>     {
>         if (x !== null) {}
>     }
>  }
> 
> I expected that by using the DigitalMars compiler that I wouldn't get ...
> 
>    "test.d(11): '!==' is deprecated, use '!is' instead"

Since versions are not #if, I don't think there is any way
to make the same source code compile on new DMD and old DMD...
(or GDC, which is at DMD 0.125 thanks to David heroic efforts)

Which leaves the option towards the usual:
1) Require DMD 0.126 and above, in your docs
2) Use the deprecated features and the -d flag


Too bad that there seems to be no way to make it compile for both,
like you could do with C. (which seems to be better for maintenance)
This is not exactly the first time that this has happened, either.

But I guess that's what life with a developing language is ?


FWIW, Java has the same problem.

--anders

PS. What about the there-is-no-spoon option ? (alias spoon bool;)
    void main()
    {
      Object x;
      if (x) {}
    }
    Or are we still hoping for those expressions to be illegal ?