On Wednesday, 18 September 2013 at 14:17:04 UTC, Maxim Fomin wrote:
On Wednesday, 18 September 2013 at 13:23:10 UTC, Namespace wrote:
Code:
----
const { /// [1]
        int a = 3;
}

void main()
{
        const { /// [2]
                int b = 4;
        }
}
----

Why is [1] allowed, but not [2]?

Citing grammar:

FunctionBody:
    BlockStatement
    BodyStatement
    InStatement BodyStatement
    OutStatement BodyStatement
    InStatement OutStatement BodyStatement
    OutStatement InStatement BodyStatement

BlockStatement:
    { }
    { StatementList }

As you can see there is no room for attributes. Why dmd does not support attributes here is separate question - probably because such construct would be confused with lambda, but this is not a serious reason.

Should I open an enhancement report?

Reply via email to