On Thu, 02 Jun 2011 01:32:52 -0400, Walter Bright <[email protected]> wrote:

On 6/1/2011 12:22 PM, KennyTM~ wrote:
But this is not documented in the D spec (CastParam cannot be empty). Is this an
"accept-invalid" bug, or just a feature not yet documented?

A feature that coincidentally just got documented :-)


Seems incorrect:

Casting to a CastQual adds the qualifier to the type of the UnaryExpression.

Casting to the empty ( ) has the effect of removing any top level const or immutable type modifiers from the type of the UnaryExpression.

From these descriptions, I would expect the following asserts to pass:

const int a;
auto b = cast(shared)a; // add shared to the type
assert(is(typeof(b) == shared const int));

shared const int x;
auto y = cast()x; // remove const or immutable from the type
assert(is(typeof(y) == shared int));

But both fail. Seems like both expressions set the modifiers to their args.

-Steve

Reply via email to