[Mono-bugs] [Bug 78259][Wis] New - mcs doesn't honor c#'s
definition of allowed identifier chars
bugzilla-daemon at bugzilla.ximian.com
bugzilla-daemon at bugzilla.ximian.com
Mon May 1 14:11:24 EDT 2006
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by dwashington at gmx.net.
http://bugzilla.ximian.com/show_bug.cgi?id=78259
--- shadow/78259 2006-05-01 14:11:24.000000000 -0400
+++ shadow/78259.tmp.3181 2006-05-01 14:11:24.000000000 -0400
@@ -0,0 +1,71 @@
+Bug#: 78259
+Product: Mono: Compilers
+Version: 1.1
+OS:
+OS Details:
+Status: NEW
+Resolution:
+Severity:
+Priority: Wishlist
+Component: C#
+AssignedTo: rharinath at novell.com
+ReportedBy: dwashington at gmx.net
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL:
+Cc:
+Summary: mcs doesn't honor c#'s definition of allowed identifier chars
+
+Description of Problem:
+The C# Specification, 2nd Edition's definition of indentifiers and the
+implementation in Mono's C# compiler don't match. The spec allows "A
+Unicode character of the class Pc" as part of an identifier. But mcs only
+allows the fullwidth low line ("_"). The compiler also doesn't seem to
+handle other allowed characters in identifiers, like characters of the
+classes Mn, Mc and Cf.
+
+Steps to reproduce the problem:
+1. Enter following code into an editor:
+
+using System;
+
+namespace Bla.Blub
+{
+
+ class Foo
+ {
+ public static void Main(string[] args)
+ {
+ Console.WriteLine("bla");
+ }
+ }
+
+}
+
+2. Put the undertie character (U+203F) somewhere in one of the identifiers
+"Foo", "Bla", or "Blub"
+3. Compile the program
+
+Actual Results:
+A parsing error (CS8025).
+
+Expected Results:
+Compilation without problems.
+
+How often does this happen?
+Always.
+
+Additional Information:
+
+The method for checking for a valid identifier char s defined as follows
+(in cs-tokenizer.cs):
+
+static bool is_identifier_part_character (char c)
+{
+ return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_' ||
+(c >= '0' && c <= '9') || Char.IsLetter (c);
+}
+
+This doesn't allow many of the characters that the c# specification allows.
+It is clearly visible that the undertie for instance is not accepted,
+though allowed by the standard.
More information about the mono-bugs
mailing list