@@ -111,8 +111,8 @@ public static string ToStringFast(this
111111 """
112112
113113
114- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key )
115- . Append ( " => nameof(" ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append ( ")," ) ;
114+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key )
115+ . Append ( " => nameof(" ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append ( ")," ) ;
116116 }
117117 }
118118
@@ -191,7 +191,7 @@ private static string ToStringFastWithMetadata(this
191191 """
192192
193193
194- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key )
194+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key )
195195 . Append ( " => " ) ;
196196
197197 if ( member . Value . GetMetadataName ( metadataSource ) is { } dn )
@@ -200,7 +200,7 @@ private static string ToStringFastWithMetadata(this
200200 }
201201 else
202202 {
203- sb . Append ( "nameof(" ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append ( ")," ) ;
203+ sb . Append ( "nameof(" ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append ( ")," ) ;
204204 }
205205 }
206206 }
@@ -325,7 +325,7 @@ public static bool IsDefined(
325325 """
326326
327327
328- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key )
328+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key )
329329 . Append ( " => true," ) ;
330330 }
331331 }
@@ -356,7 +356,7 @@ public static bool IsDefined(string name)
356356 """
357357
358358 nameof(
359- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append ( ") => true," ) ;
359+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append ( ") => true," ) ;
360360 }
361361
362362 sb . Append (
@@ -456,7 +456,7 @@ public static bool IsDefined(in global::System.ReadOnlySpan<char> name)
456456
457457 global::System.ReadOnlySpan<char> current when global::System.MemoryExtensions.Equals(current, nameof(
458458 """ ) . Append ( fullyQualifiedName ) . Append ( '.' )
459- . Append ( member . Key )
459+ . AppendIdentifier ( member . Key )
460460 . Append ( "), global::System.StringComparison.Ordinal) => true," ) ;
461461 }
462462
@@ -825,7 +825,7 @@ private static bool TryParseIgnoreCase(
825825 """
826826 , global::System.StringComparison.OrdinalIgnoreCase):
827827 value =
828- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append (
828+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append (
829829 """
830830 ;
831831 return true;
@@ -856,11 +856,11 @@ private static bool TryParseIgnoreCase(
856856 """
857857
858858 case string s when s.Equals(nameof(
859- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append (
859+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append (
860860 """
861861 ), global::System.StringComparison.OrdinalIgnoreCase):
862862 value =
863- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append (
863+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append (
864864 """
865865 ;
866866 return true;
@@ -924,7 +924,7 @@ private static bool TryParseWithCase(
924924 """
925925 :
926926 value =
927- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append (
927+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append (
928928 """
929929 ;
930930 return true;
@@ -955,11 +955,11 @@ private static bool TryParseWithCase(
955955 """
956956
957957 case nameof(
958- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append (
958+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append (
959959 """
960960 ):
961961 value =
962- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append (
962+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append (
963963 """
964964 ;
965965 return true;
@@ -1263,7 +1263,7 @@ private static bool TryParseIgnoreCase(
12631263 """
12641264 , global::System.StringComparison.OrdinalIgnoreCase):
12651265 result =
1266- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append (
1266+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append (
12671267 """
12681268 ;
12691269 return true;
@@ -1295,11 +1295,11 @@ private static bool TryParseIgnoreCase(
12951295
12961296 case global::System.ReadOnlySpan<char> current when global::System.MemoryExtensions.Equals(current, nameof(
12971297 """ ) . Append ( fullyQualifiedName ) . Append ( '.' )
1298- . Append ( member . Key ) . Append (
1298+ . AppendIdentifier ( member . Key ) . Append (
12991299 """
13001300 ), global::System.StringComparison.OrdinalIgnoreCase):
13011301 result =
1302- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append (
1302+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append (
13031303 """
13041304 ;
13051305 return true;
@@ -1366,7 +1366,7 @@ private static bool TryParseWithCase(
13661366 """
13671367 , global::System.StringComparison.Ordinal):
13681368 result =
1369- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append (
1369+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append (
13701370 """
13711371 ;
13721372 return true;
@@ -1398,11 +1398,11 @@ private static bool TryParseWithCase(
13981398
13991399 case global::System.ReadOnlySpan<char> current when global::System.MemoryExtensions.Equals(current, nameof(
14001400 """ ) . Append ( fullyQualifiedName ) . Append ( '.' )
1401- . Append ( member . Key ) . Append (
1401+ . AppendIdentifier ( member . Key ) . Append (
14021402 """
14031403 ), global::System.StringComparison.Ordinal):
14041404 result =
1405- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append (
1405+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append (
14061406 """
14071407 ;
14081408 return true;
@@ -1429,7 +1429,7 @@ private static bool TryParseWithCase(
14291429 #endif
14301430 """ ) ;
14311431
1432- var orderedNames = GetNamesOrderedByValue ( enumToGenerate ) ;
1432+ var orderedNames = GetNamesOrderedByValue ( in enumToGenerate ) ;
14331433 sb . Append (
14341434 """
14351435
@@ -1461,7 +1461,7 @@ [] GetValues()
14611461 """
14621462
14631463
1464- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append ( ',' ) ;
1464+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append ( ',' ) ;
14651465 }
14661466
14671467 sb . Append (
@@ -1502,7 +1502,7 @@ [] GetValuesAsUnderlyingType()
15021502 """
15031503
15041504 (
1505- """ ) . Append ( enumToGenerate . UnderlyingType ) . Append ( ") " ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append ( ',' ) ;
1505+ """ ) . Append ( enumToGenerate . UnderlyingType ) . Append ( ") " ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append ( ',' ) ;
15061506 }
15071507
15081508 sb . Append (
@@ -1541,7 +1541,7 @@ public static string[] GetNames()
15411541 """
15421542
15431543 nameof(
1544- """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . Append ( member . Key ) . Append ( ")," ) ;
1544+ """ ) . Append ( fullyQualifiedName ) . Append ( '.' ) . AppendIdentifier ( member . Key ) . Append ( ")," ) ;
15451545 }
15461546
15471547 sb . Append (
@@ -1590,7 +1590,7 @@ public static string[] GetNames()
15901590 return ( content , filename ) ;
15911591 }
15921592
1593- private static List < ( string Key , EnumValueOption Value ) > GetNamesOrderedByValue ( EnumToGenerate enumToGenerate )
1593+ private static List < ( string Key , EnumValueOption Value ) > GetNamesOrderedByValue ( in EnumToGenerate enumToGenerate )
15941594 {
15951595 // We order by underlying value, keeping the order of names with the same value, as they were defined
15961596 return enumToGenerate . Names
@@ -1600,4 +1600,14 @@ public static string[] GetNames()
16001600 . Select ( tuple => tuple . name )
16011601 . ToList ( ) ;
16021602 }
1603+
1604+ private static StringBuilder AppendIdentifier ( this StringBuilder sb , string identifier )
1605+ {
1606+ if ( SyntaxFacts . GetKeywordKind ( identifier ) != SyntaxKind . None )
1607+ {
1608+ sb . Append ( '@' ) ;
1609+ }
1610+
1611+ return sb . Append ( identifier ) ;
1612+ }
16031613}
0 commit comments