Skip to content

Commit 88d29b4

Browse files
committed
add GeneratorOptions.MemberDeclaration.WithEnumTypeName and refer it instead of WithDeclaringTypeName if member's declaring type is enum
1 parent 91e751d commit 88d29b4

File tree

4 files changed

+12
-3
lines changed

4 files changed

+12
-3
lines changed

src/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating/Generator.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1072,7 +1072,12 @@ private static string GenerateMemberName(
10721072
GeneratorOptions options
10731073
)
10741074
{
1075-
if (options.MemberDeclaration.WithDeclaringTypeName) {
1075+
var withDeclaringTypeName = options.MemberDeclaration.WithDeclaringTypeName;
1076+
1077+
if (member is FieldInfo field && field.GetDeclaringTypeOrThrow().IsEnum)
1078+
withDeclaringTypeName = options.MemberDeclaration.WithEnumTypeName;
1079+
1080+
if (withDeclaringTypeName) {
10761081
return member.GetDeclaringTypeOrThrow().FormatTypeName(
10771082
typeWithNamespace: options.MemberDeclaration.WithNamespace,
10781083
translateLanguagePrimitiveType: options.TranslateLanguagePrimitiveTypeDeclaration

src/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating/GeneratorOptions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ internal TypeDeclarationOptions Clone()
4747
public class MemberDeclarationOptions {
4848
public bool WithNamespace { get; set; } = false;
4949
public bool WithDeclaringTypeName { get; set; } = false;
50+
public bool WithEnumTypeName { get; set; } = false;
5051
public bool WithAccessibility { get; set; } = true;
5152
public bool OmitEndOfStatement { get; set; } = false;
5253
public MethodBodyOption MethodBody { get; set; } = MethodBodyOption.EmptyImplementation;

tests/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating/Generator.MemberDeclaration.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,9 @@ namespace EnumFields {
122122
public enum Ints : int {
123123
[MemberDeclarationTestCase("A = 0,")]
124124
[MemberDeclarationTestCase("A = 0", MemberOmitEndOfStatement = true)]
125-
[MemberDeclarationTestCase("Ints.A = 0,", MemberWithDeclaringTypeName = true, MemberWithNamespace = false)]
126-
[MemberDeclarationTestCase("Smdn.Reflection.ReverseGenerating.TestCases.MemberDeclaration.Fields.EnumFields.Ints.A = 0,", MemberWithDeclaringTypeName = true, MemberWithNamespace = true)]
125+
[MemberDeclarationTestCase("A = 0,", MemberWithDeclaringTypeName = true, MemberWithEnumTypeName = false, MemberWithNamespace = false)]
126+
[MemberDeclarationTestCase("Ints.A = 0,", MemberWithDeclaringTypeName = true, MemberWithEnumTypeName = true, MemberWithNamespace = false)]
127+
[MemberDeclarationTestCase("Smdn.Reflection.ReverseGenerating.TestCases.MemberDeclaration.Fields.EnumFields.Ints.A = 0,", MemberWithEnumTypeName = true, MemberWithNamespace = true)]
127128
A = 0,
128129

129130
[MemberDeclarationTestCase("B = 1,")] B = 1,

tests/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating/Generator.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public abstract class GeneratorTestCaseAttribute : Attribute, ITestCaseAttribute
2020
public bool TranslateLanguagePrimitiveTypeDeclaration { get; set; } = true;
2121
public bool MemberWithNamespace { get; set; } = true;
2222
public bool MemberWithDeclaringTypeName { get; set; } = false;
23+
public bool MemberWithEnumTypeName { get; set; } = false;
2324
public bool MemberWithAccessibility { get; set; } = true;
2425
public bool MemberOmitEndOfStatement { get; set; } = false;
2526
public bool MemberEnableNullabilityAnnotations { get; set; } = true;
@@ -123,6 +124,7 @@ private static GeneratorOptions GetGeneratorOptions(GeneratorTestCaseAttribute t
123124

124125
memberDeclarationOptions.WithNamespace = testCaseAttribute.MemberWithNamespace;
125126
memberDeclarationOptions.WithDeclaringTypeName = testCaseAttribute.MemberWithDeclaringTypeName;
127+
memberDeclarationOptions.WithEnumTypeName = testCaseAttribute.MemberWithEnumTypeName;
126128
memberDeclarationOptions.WithAccessibility = testCaseAttribute.MemberWithAccessibility;
127129
memberDeclarationOptions.MethodBody = testCaseAttribute.MethodBody;
128130
memberDeclarationOptions.AccessorBody = testCaseAttribute.AccessorBody;

0 commit comments

Comments
 (0)