DMD 1.033 and 2.017 releases

Koroskin Denis 2korden+dmd at gmail.com
Sat Jul 12 04:25:10 PDT 2008


On Sat, 12 Jul 2008 09:09:41 +0400, Bill Baxter  
<dnewsgroup at billbaxter.com> wrote:

> Bill Baxter wrote:
>> Jarrett Billingsley wrote:
>>> "Walter Bright" <newshound1 at digitalmars.com> wrote in message  
>>> news:g591bf$j5j$2 at digitalmars.com...
>>>> For Tango.
>>>>
>>>> http://www.digitalmars.com/d/1.0/changelog.html
>>>> http://ftp.digitalmars.com/dmd.1.033.zip
>>>>
>>>> http://www.digitalmars.com/d/2.0/changelog.html
>>>> http://ftp.digitalmars.com/dmd.2.017.zip
>>>
>>> Regression fixes _for the win_.  Let's see more of this ;)
>>  Maybe sooner than you were thinking:
>>  Is there any incantation I can use to make the code below work now?
>>  I saw that typeof(Type.member) is no longer considered valid, but it  
>> seems neither are any of the replacements I can think of.
>>   --------------
>> struct Thing(Scalar)
>> {
>>     Scalar x,y,z;
>> }
>>  alias typeof(Thing!(float).x) SC; /* This version used to work */
>> /+
>> bug.d(30): Error: this is not in a struct or class scope
>> bug.d(30): Error: 'this' is only allowed in non-static member  
>> functions, not main
>> bug.d(30): Error: this for x needs to be type Thing not type int
>> +/
>>  alias typeof(Thing!(float).init.x) SC2;
>> /+
>> bug.d(32): Error: undefined identifier struct Thing.init
>> bug.d(32): Error: no property 'x' for type 'void'
>> +/
>>  alias typeof((Thing!(float).init).x) SC2;
>> /+
>> bug.d(37): Error: Thing!(float).init is used as a type
>> bug.d(37): Error: no property 'x' for type 'void'
>> +/
>>  void main()
>> {
>> }
>>  --bb
>
>
> Looks like this works:
> alias typeof((Thing!(float)).init.x) SC2;
>
> But I think this is a bug.  The parentheses shouldn't be necessary there  
> I don't think.
>
> I've also run into another case here where in a template struct
>
>    static if(typeof(*this).static_bool) { .. }
>
> fails, but with extra parens it works:
>
>    static if((typeof(*this)).static_bool) { .. }
>
> Also works if you define an extra alias
>
>    private alias typeof(*this) TypeofThis
>    static if(TypeofThis.static_bool) { .. }
>
>
> --bb

It's worth putting into bugzilla, I think.


More information about the Digitalmars-d-announce mailing list