From e38adfa890e2f29f9ad15e6fc8c9f50eca09b8cb Mon Sep 17 00:00:00 2001 From: jihtsan <15151999611@163.com> Date: Mon, 19 Oct 2026 18:26:30 +0800 Subject: [PATCH] Omit unused numeric enum parse maps with noparse Fixes #313 --- example/noparse_enum.go | 8 -------- generator/enum.tmpl | 2 +- generator/generator_test.go | 4 ++++ 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/example/noparse_enum.go b/example/noparse_enum.go index 40d1d26..0024ab7 100644 --- a/example/noparse_enum.go +++ b/example/noparse_enum.go @@ -83,11 +83,3 @@ func (x UnparsedValues) IsValid() bool { _, ok := _UnparsedValuesMap[x] return ok } - -var _UnparsedValuesValue = map[string]UnparsedValues{ - _UnparsedValuesName[0:1]: UnparsedValuesA, - _UnparsedValuesName[1:2]: UnparsedValuesB, - _UnparsedValuesName[2:3]: UnparsedValuesC, - _UnparsedValuesName[3:4]: UnparsedValuesD, - _UnparsedValuesName[4:5]: UnparsedValuesE, -} diff --git a/generator/enum.tmpl b/generator/enum.tmpl index 43b13c3..0c4f9c1 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -63,9 +63,9 @@ func (x {{.enum.Name}}) IsValid() bool { return ok } +{{- if .generateParse }} var _{{.enum.Name}}Value = {{ unmapify .enum .lowercase }} -{{- if .generateParse }} // {{.parseName}}{{.enum.Name}} attempts to convert a string to a {{.enum.Name}}. func {{.parseName}}{{.enum.Name}}(name string) ({{.enum.Name}}, error) { if x, ok := _{{.enum.Name}}Value[name]; ok { diff --git a/generator/generator_test.go b/generator/generator_test.go index f8b3e8d..a344928 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -718,6 +718,7 @@ type Number int // Should not contain Parse method assert.NotContains(t, outputStr, "func ParseNumber") assert.NotContains(t, outputStr, "func parseNumber") + assert.NotContains(t, outputStr, "var _NumberValue") // Should still contain other methods assert.Contains(t, outputStr, "func (x Number) String()") @@ -744,6 +745,8 @@ type Greek string // Should not contain Parse method assert.NotContains(t, outputStr, "func ParseGreek") assert.NotContains(t, outputStr, "func parseGreek") + // String enum IsValid still needs its lookup map. + assert.Contains(t, outputStr, "var _GreekValue") // Should still contain other methods assert.Contains(t, outputStr, "func (x Greek) String()") @@ -772,6 +775,7 @@ type Number int // Should contain unexported parse method assert.Contains(t, outputStr, "func parseNumber(") + assert.Contains(t, outputStr, "var _NumberValue") // Should contain marshal methods that use the unexported parse assert.Contains(t, outputStr, "func (x *Number) UnmarshalText(")