On 29 May 2013 11:18, Kenji Hara <k.hara...@gmail.com> wrote:

> 2013/5/29 Manu <turkey...@gmail.com>
>
>> Either way, the attribute certainly looks like it's part of the
>> declaration, I think any reasoning programmer would assume that it is. It's
>> only a DMD implementation detail that says otherwise, and it's not
>> particularly intuitive to a programmer.
>>
>
> It's not a dmd implementation detail. It is part of current D language
> design. dmd works as well. No bug there, so this is definitely an
> enhancement.
>
> But I can agree that is a little not good from human sense. I know a
> related issue.
>
> struct S {
>     immutable int foo() {}    // immutable is prefix attribute (==storage
> class)
> }
>
> In above, `immutable` would be applied to the declaration `foo`, not its
> return type `int`.
>
> But, changing semantics would break much existing code. Your enhancement
> belongs same area. We need to get agreement of D programmers first.
>

Yeah, that's a good point, I've never liked that ambiguity.
I always write: immutable(int) foo() {}
Otherwise I never really know what to expect.

Reply via email to