@@ -59,9 +59,7 @@ private void Init()
5959 "void" , "partial" , "yield" , "where"
6060 } ;
6161
62- public static bool IsReservedKeyword ( string id ) => ReservedKeywords . Contains ( id ) ;
63-
64- public override string SafeIdentifier ( string id )
62+ public static string SafeIdentifier ( string id )
6563 {
6664 if ( id . All ( char . IsLetterOrDigit ) )
6765 return ReservedKeywords . Contains ( id ) ? "@" + id : id ;
@@ -246,7 +244,7 @@ public virtual void GenerateNamespaceFunctionsAndVariables(DeclarationContext co
246244 return ;
247245
248246 PushBlock ( BlockKind . Functions ) ;
249- var parentName = SafeIdentifier ( context . TranslationUnit . FileNameWithoutExtension ) ;
247+ var parentName = context . TranslationUnit . FileNameWithoutExtension ;
250248
251249 var keyword = "class" ;
252250 var classes = EnumerateClasses ( ) . ToList ( ) ;
@@ -724,7 +722,7 @@ public override void GenerateClassSpecifier(Class @class)
724722 keywords . Add ( "partial" ) ;
725723
726724 keywords . Add ( @class . IsInterface ? "interface" : ( @class . IsValueType ? "struct" : "class" ) ) ;
727- keywords . Add ( SafeIdentifier ( @class . Name ) ) ;
725+ keywords . Add ( @class . Name ) ;
728726
729727 Write ( string . Join ( " " , keywords ) ) ;
730728 if ( @class . IsDependent && @class . TemplateParameters . Any ( ) )
@@ -927,7 +925,7 @@ private void GenerateFieldSetter(Field field, Class @class, QualifiedType fieldT
927925 else
928926 {
929927 var name = @class . Layout . Fields . First ( f => f . FieldPtr == field . OriginalPtr ) . Name ;
930- var identifier = SafeIdentifier ( name ) ;
928+ var identifier = name ;
931929 if ( @class . IsValueType )
932930 returnVar = $ "{ Helpers . InstanceField } .{ identifier } ";
933931 else
@@ -998,7 +996,7 @@ private string HandleValueArray(ArrayType arrayType, Field field)
998996 var name = ( ( Class ) field . Namespace ) . Layout . Fields . First (
999997 f => f . FieldPtr == field . OriginalPtr ) . Name ;
1000998 WriteLine ( string . Format ( "fixed ({0} {1} = {2}.{3})" ,
1001- type , arrPtr , Helpers . InstanceField , SafeIdentifier ( name ) ) ) ;
999+ type , arrPtr , Helpers . InstanceField , name ) ) ;
10021000 WriteOpenBraceAndIndent ( ) ;
10031001 return arrPtr ;
10041002 }
@@ -1219,11 +1217,11 @@ private void GenerateFieldGetter(Field field, Class @class, QualifiedType return
12191217 if ( arrayType != null )
12201218 returnVar = HandleValueArray ( arrayType , field ) ;
12211219 else
1222- returnVar = $ "{ Helpers . InstanceField } .{ SafeIdentifier ( name ) } ";
1220+ returnVar = $ "{ Helpers . InstanceField } .{ name } ";
12231221 }
12241222 else
12251223 {
1226- returnVar = $ "(({ TypePrinter . PrintNative ( @class ) } *) { Helpers . InstanceIdentifier } )->{ SafeIdentifier ( name ) } ";
1224+ returnVar = $ "(({ TypePrinter . PrintNative ( @class ) } *) { Helpers . InstanceIdentifier } )->{ name } ";
12271225 // Class field getter should return a reference object instead of a copy. Wrapping `returnVar` in
12281226 // IntPtr ensures that non-copying object constructor is invoked.
12291227 Class typeClass ;
@@ -1372,8 +1370,8 @@ private void GenerateProperties(Class @class)
13721370 {
13731371 var name = @class . Layout . Fields . First ( f => f . FieldPtr == prop . Field . OriginalPtr ) . Name ;
13741372 GenerateClassField ( prop . Field ) ;
1375- WriteLine ( "private bool {0};" ,
1376- GeneratedIdentifier ( string . Format ( "{0 }Initialised" , name ) ) ) ;
1373+ string safeIdentifier = name . StartsWith ( "@" ) ? name . Substring ( 1 ) : name ;
1374+ WriteLine ( $ "private bool __ { safeIdentifier } Initialised;" ) ;
13771375 }
13781376
13791377 GenerateDeclarationCommon ( prop ) ;
@@ -1434,7 +1432,7 @@ private string GetPropertyName(Property prop)
14341432 {
14351433 var isIndexer = prop . Parameters . Count != 0 ;
14361434 if ( ! isIndexer )
1437- return SafeIdentifier ( prop . Name ) ;
1435+ return prop . Name ;
14381436
14391437 var @params = prop . Parameters . Select ( param => {
14401438 var p = new Parameter ( param ) ;
@@ -3109,7 +3107,7 @@ public override bool VisitEnumDecl(Enumeration @enum)
31093107 // internal P/Invoke declarations must see protected enums
31103108 if ( @enum . Access == AccessSpecifier . Protected )
31113109 Write ( "internal " ) ;
3112- Write ( "enum {0}" , SafeIdentifier ( @enum . Name ) ) ;
3110+ Write ( "enum {0}" , @enum . Name ) ;
31133111
31143112 var typeName = TypePrinter . VisitPrimitiveType ( @enum . BuiltinType . Type ,
31153113 new TypeQualifiers ( ) ) ;
0 commit comments