[Mono-dev] Unexpected compiler errors when using "as" keyword
acolwell at shelfari.com
Tue Aug 12 15:23:52 EDT 2008
I've been trying to port some C# code to mono and encountered a difference
how gmcs & Visual Studio handle the "as" keyword. The code below is a simple
case that demonstrates the problem.
public static void Main(string args)
object o = "Hello World";
Console.WriteLine(o as string + "blah"); // A. Error in Mono
Console.WriteLine((o as string) + "blah"); // B. Ok
Console.WriteLine("blah" + o as string); // C. Ok
It may seem like an odd case, but we typically use constructs like this when
constructing strings from DataRow fields.
I've spent some quality time looking at parser output and the grammar and
having a hard time understanding why C works, but A doesn't. I'm also
why C works at all since my interpretation of the grammar seems to imply
only putting "as" clauses in parenthesis will make them compatible with an
So here are my questions:
1. Is this a known issue and is someone working on it?
2. Is my interpretation of the grammar(as specified in cs-parser.jay and/or
in the ECMA-334 spec) correct
and A & C shouldn't work ?
3. Does anyone have suggestions on how I can get A to work. (I have a lot of
instances of these and it would
make me sad to have to put () around all them).
Any help would be greatly appreciated.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Mono-devel-list