Why is my code does not compile? (dmd 2.021 linux)

Bill Baxter wbaxter at gmail.com
Fri Dec 12 14:05:05 PST 2008


2008/12/13 Weed <resume755 at mail.ru>:
> Bill Baxter пишет:
>>
>> On Sat, Dec 13, 2008 at 5:45 AM, Weed <resume755 at mail.ru> wrote:
>>>
>>> void main()
>>> {
>>>   int i;
>>>
>>>   ref int func()
>>>   {
>>>     return i;
>>>   }
>>>
>>>   func() = 4;
>>> }
>>>
>>> lval.d(5): found 'ref' instead of statement
>>> lval.d(10): no identifier for declarator func
>>> lval.d(11): unrecognized declaration
>>>
>>>
>>> but code like this compiles:
>>>
>>> ref int func()
>>> {
>>>  int* i = new int;
>>>  return *i;
>>> }
>>>
>>> void main()
>>> {
>>>   func() = 4;
>>> }
>>>
>>
>> Ref return values are a very new feature in D2.  I suspect its just a
>> bug that they don't work on inner functions yet.
>>
>> --bb
>
> message implies that the authors are aware of this limitation? report they
> do not need?

No, a report is probably needed.  There are lots of bugs with the new
const and ref features in D2.  Many have been reported, but there are
still many more to be discovered.  Returning refs in particular is
very new, so I would expect bugs a plenty with that, though I think
few have been reported so far.  I don't keep up with the bugs
newsgroup these days, though.  Certainly try to search for it in the
bug db before filing a new report, though.  D's bugzilla is here:
http://d.puremagic.com/issues/

--bb


More information about the Digitalmars-d-learn mailing list