I noticed that if I write something like:
static void Main(string[] args) { const const const bool flag = true; }
The compiler doesn't warn me of the multiple const
s. So this seems to mimic C modifiers, as they are idempotent.
However, if I write:
private readonly readonly int a;
The compiler does warn me of the duplicated readonly
.
So what's going on here? Are modifiers idempotent or not?
csc version 1.0.0.50618
It's a bug in the compiler - at least in Roslyn version 1.0.0.50618. From section 8.5.2 of the C# 5 specification:
A local-constant-declaration declares one or more local constants.
local-constant-declaration:
const
type constant-declaratorsconstant-declarators:
constant-declarator
constant-declarators,
constant-declaratorconstant-declarator: identifier
=
constant-expression
As you can see, that grammar doesn't allow for const const const bool flag = true;
.
I've filed a bug against Roslyn so that it can get fixed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With