@@ -325,6 +325,7 @@ private static string EmitMethod(VariantEnumContext context, string variantEnumN
325
325
builder . AppendLine ( $ " public static int Count => { context . Members . Length } ;") ;
326
326
builder . AppendLine ( EmitGetName ( context , variantEnumName ) ) ;
327
327
builder . AppendLine ( EmitGetNames ( context , variantEnumName ) ) ;
328
+ builder . AppendLine ( EmitGetUtf8Name ( context , variantEnumName ) ) ;
328
329
builder . AppendLine ( EmitGetNumericValue ( context , variantEnumName ) ) ;
329
330
builder . AppendLine ( EmitConvertEnum ( context , variantEnumName ) ) ;
330
331
builder . AppendLine ( EmitParse ( context , variantEnumName ) ) ;
@@ -382,6 +383,38 @@ private static string EmitGetNames(VariantEnumContext context, string variantEnu
382
383
return code ;
383
384
}
384
385
386
+ private static string EmitGetUtf8Name ( VariantEnumContext context , string variantEnumName )
387
+ {
388
+ var builder = new StringBuilder ( ) ;
389
+ var symbol = context . Symbol ;
390
+
391
+ if ( context . Members . Length > 0 )
392
+ {
393
+ builder . AppendLine ( @$ " return { variantEnumName . ToLower ( ) } switch
394
+ {{" ) ;
395
+ foreach ( var m in context . Members )
396
+ {
397
+ var memberName = m . MemberSyntax . Identifier . Text ;
398
+ builder . AppendLine ( $ " { memberName } => \" { memberName } \" u8,") ;
399
+ }
400
+ builder . AppendLine ( $ " _ => []") ;
401
+ builder . Append ( @$ " }};") ;
402
+ }
403
+ else
404
+ {
405
+ builder . Append ( $ " return [];") ;
406
+ }
407
+
408
+ var code = @$ "
409
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
410
+ public static ReadOnlySpan<byte> GetUtf8Name({ variantEnumName } { variantEnumName . ToLower ( ) } )
411
+ {{
412
+ { builder }
413
+ }}" ;
414
+ return code ;
415
+ }
416
+
417
+
385
418
private static string EmitGetNumericValue ( VariantEnumContext context , string variantEnumName )
386
419
{
387
420
var builder = new StringBuilder ( ) ;
@@ -549,7 +582,7 @@ public static bool TryParse(ReadOnlySpan<char> s, out {variantEnumName} result)
549
582
[MethodImpl(MethodImplOptions.AggressiveInlining)]
550
583
public static bool TryParse(ReadOnlySpan<char> s, IFormatProvider? provider, [MaybeNullWhen(false)] out { variantEnumName } result)
551
584
{{
552
- return TryParse(s, false, null , out result);
585
+ return TryParse(s, false, provider , out result);
553
586
}}
554
587
555
588
public static bool TryParse(ReadOnlySpan<char> s, bool ignoreCase, IFormatProvider? provider, [MaybeNullWhen(false)] out { variantEnumName } result)
0 commit comments