diff --git a/enumer.go b/enumer.go index c234209..e553546 100644 --- a/enumer.go +++ b/enumer.go @@ -3,6 +3,7 @@ package main import "fmt" // Arguments to format are: +// // [1]: type name const stringNameToValueMethod = `// %[1]sString retrieves an enum value from the enum constants string name. // Throws an error if the param is not part of the enum. @@ -19,6 +20,7 @@ func %[1]sString(s string) (%[1]s, error) { ` // Arguments to format are: +// // [1]: type name const stringValuesMethod = `// %[1]sValues returns all values of the enum func %[1]sValues() []%[1]s { @@ -27,6 +29,7 @@ func %[1]sValues() []%[1]s { ` // Arguments to format are: +// // [1]: type name const stringsMethod = `// %[1]sStrings returns a slice of all String values of the enum func %[1]sStrings() []string { @@ -37,6 +40,7 @@ func %[1]sStrings() []string { ` // Arguments to format are: +// // [1]: type name const stringBelongsMethodLoop = `// IsA%[1]s returns "true" if the value is listed in the enum definition. "false" otherwise func (i %[1]s) IsA%[1]s() bool { @@ -50,6 +54,7 @@ func (i %[1]s) IsA%[1]s() bool { ` // Arguments to format are: +// // [1]: type name const stringBelongsMethodSet = `// IsA%[1]s returns "true" if the value is listed in the enum definition. "false" otherwise func (i %[1]s) IsA%[1]s() bool { @@ -59,6 +64,7 @@ func (i %[1]s) IsA%[1]s() bool { ` // Arguments to format are: +// // [1]: type name const altStringValuesMethod = `func (%[1]s) Values() []string { return %[1]sStrings() @@ -144,6 +150,7 @@ func (g *Generator) printNamesSlice(runs [][]Value, typeName string, runsThresho } // Arguments to format are: +// // [1]: type name const jsonMethods = ` // MarshalJSON implements the json.Marshaler interface for %[1]s @@ -169,6 +176,7 @@ func (g *Generator) buildJSONMethods(runs [][]Value, typeName string, runsThresh } // Arguments to format are: +// // [1]: type name const textMethods = ` // MarshalText implements the encoding.TextMarshaler interface for %[1]s @@ -189,11 +197,12 @@ func (g *Generator) buildTextMethods(runs [][]Value, typeName string, runsThresh } // Arguments to format are: +// // [1]: type name const yamlMethods = ` // MarshalYAML implements a YAML Marshaler for %[1]s func (i %[1]s) MarshalYAML() (interface{}, error) { - return i.String(), nil + return i.string() } // UnmarshalYAML implements a YAML Unmarshaler for %[1]s diff --git a/sql.go b/sql.go index 09f050c..1795316 100644 --- a/sql.go +++ b/sql.go @@ -1,9 +1,10 @@ package main // Arguments to format are: +// // [1]: type name const valueMethod = `func (i %[1]s) Value() (driver.Value, error) { - return i.String(), nil + return i.string() } ` diff --git a/stringer.go b/stringer.go index 49c87fd..0b52ce2 100644 --- a/stringer.go +++ b/stringer.go @@ -774,28 +774,40 @@ func (g *Generator) buildOneRun(runs [][]Value, typeName string) { } // Arguments to format are: -// [1]: type name -// [2]: size of index element (8 for uint8 etc.) -// [3]: less than zero check (for signed types) -const stringOneRun = `func (i %[1]s) String() string { +// +// [1]: type name +// [2]: size of index element (8 for uint8 etc.) +// [3]: less than zero check (for signed types) +const stringOneRun = `func (i %[1]s) string() (string, error) { if %[3]si >= %[1]s(len(_%[1]sIndex)-1) { - return fmt.Sprintf("%[1]s(%%d)", i) + return "", fmt.Errorf("value is out of enum range") } - return _%[1]sName[_%[1]sIndex[i]:_%[1]sIndex[i+1]] + return _%[1]sName[_%[1]sIndex[i]:_%[1]sIndex[i+1]], nil +} + +func (i %[1]s) String() string { + val, _ := i.string() + return val } ` // Arguments to format are: -// [1]: type name -// [2]: lowest defined value for type, as a string -// [3]: size of index element (8 for uint8 etc.) -// [4]: less than zero check (for signed types) -const stringOneRunWithOffset = `func (i %[1]s) String() string { +// +// [1]: type name +// [2]: lowest defined value for type, as a string +// [3]: size of index element (8 for uint8 etc.) +// [4]: less than zero check (for signed types) +const stringOneRunWithOffset = `func(i %[1]s) string() (string, error) { i -= %[2]s if %[4]si >= %[1]s(len(_%[1]sIndex)-1) { - return fmt.Sprintf("%[1]s(%%d)", i + %[2]s) + return "", fmt.Errorf("value is out of enum range") } - return _%[1]sName[_%[1]sIndex[i] : _%[1]sIndex[i+1]] + return _%[1]sName[_%[1]sIndex[i] : _%[1]sIndex[i+1]], nil +} + +func (i %[1]s) String() string { + val, _ := i.string() + return val } ` @@ -820,7 +832,7 @@ func (g *Generator) buildMultipleRuns(runs [][]Value, typeName string) { typeName, i, typeName, i, typeName, i) } g.Printf("\tdefault:\n") - g.Printf("\t\treturn fmt.Sprintf(\"%s(%%d)\", i)\n", typeName) + g.Printf("\t\treturn \"\"\n") g.Printf("\t}\n") g.Printf("}\n") } @@ -861,10 +873,15 @@ func (g *Generator) buildNoOpOrderChangeDetect(runs [][]Value, typeName string) } // Argument to format is the type name. -const stringMap = `func (i %[1]s) String() string { +const stringMap = `func (i %[1]s) string() (string, error) { if str, ok := _%[1]sMap[i]; ok { - return str + return str, nil } - return fmt.Sprintf("%[1]s(%%d)", i) + return "", fmt.Errorf("value is out of enum range") +} + +func (i %[1]s) String() string { + str, _ := i.string() + return str } ` diff --git a/testdata/day.go b/testdata/day.go index 106da37..1a59043 100644 --- a/testdata/day.go +++ b/testdata/day.go @@ -28,8 +28,8 @@ func main() { ck(Friday, "Friday") ck(Saturday, "Saturday") ck(Sunday, "Sunday") - ck(-127, "Day(-127)") - ck(127, "Day(127)") + ck(-127, "") + ck(127, "") ckDayString(Sunday, "Sunday") ckDayString(Sunday, "sunday") diff --git a/testdata/day.golden b/testdata/day.golden index f23e69b..a79333d 100644 --- a/testdata/day.golden +++ b/testdata/day.golden @@ -5,11 +5,16 @@ var _DayIndex = [...]uint8{0, 6, 13, 22, 30, 36, 44, 50} const _DayLowerName = "mondaytuesdaywednesdaythursdayfridaysaturdaysunday" -func (i Day) String() string { +func (i Day) string() (string, error) { if i < 0 || i >= Day(len(_DayIndex)-1) { - return fmt.Sprintf("Day(%d)", i) + return "", fmt.Errorf("value is out of enum range") } - return _DayName[_DayIndex[i]:_DayIndex[i+1]] + return _DayName[_DayIndex[i]:_DayIndex[i+1]], nil +} + +func (i Day) String() string { + val, _ := i.string() + return val } func (Day) Values() []string { diff --git a/testdata/dayTrimAndPrefix.golden b/testdata/dayTrimAndPrefix.golden index 7f5367d..3160cab 100644 --- a/testdata/dayTrimAndPrefix.golden +++ b/testdata/dayTrimAndPrefix.golden @@ -5,11 +5,16 @@ var _DayIndex = [...]uint8{0, 11, 23, 37, 50, 61, 74, 85} const _DayLowerName = "nightmondaynighttuesdaynightwednesdaynightthursdaynightfridaynightsaturdaynightsunday" -func (i Day) String() string { +func (i Day) string() (string, error) { if i < 0 || i >= Day(len(_DayIndex)-1) { - return fmt.Sprintf("Day(%d)", i) + return "", fmt.Errorf("value is out of enum range") } - return _DayName[_DayIndex[i]:_DayIndex[i+1]] + return _DayName[_DayIndex[i]:_DayIndex[i+1]], nil +} + +func (i Day) String() string { + val, _ := i.string() + return val } // An "invalid array index" compiler error signifies that the constant values have changed. diff --git a/testdata/dayWithLinecomment.golden b/testdata/dayWithLinecomment.golden index c6b8584..d90b901 100644 --- a/testdata/dayWithLinecomment.golden +++ b/testdata/dayWithLinecomment.golden @@ -5,11 +5,16 @@ var _DayIndex = [...]uint8{0, 5, 12, 21, 29, 36, 44, 50} const _DayLowerName = "lunestuesdaywednesdaythursdayviernessaturdaysunday" -func (i Day) String() string { +func (i Day) string() (string, error) { if i < 0 || i >= Day(len(_DayIndex)-1) { - return fmt.Sprintf("Day(%d)", i) + return "", fmt.Errorf("value is out of enum range") } - return _DayName[_DayIndex[i]:_DayIndex[i+1]] + return _DayName[_DayIndex[i]:_DayIndex[i+1]], nil +} + +func (i Day) String() string { + val, _ := i.string() + return val } // An "invalid array index" compiler error signifies that the constant values have changed. diff --git a/testdata/dayWithPrefix.golden b/testdata/dayWithPrefix.golden index d468741..8dc17fa 100644 --- a/testdata/dayWithPrefix.golden +++ b/testdata/dayWithPrefix.golden @@ -5,11 +5,16 @@ var _DayIndex = [...]uint8{0, 9, 19, 31, 42, 51, 62, 71} const _DayLowerName = "daymondaydaytuesdaydaywednesdaydaythursdaydayfridaydaysaturdaydaysunday" -func (i Day) String() string { +func (i Day) string() (string, error) { if i < 0 || i >= Day(len(_DayIndex)-1) { - return fmt.Sprintf("Day(%d)", i) + return "", fmt.Errorf("value is out of enum range") } - return _DayName[_DayIndex[i]:_DayIndex[i+1]] + return _DayName[_DayIndex[i]:_DayIndex[i+1]], nil +} + +func (i Day) String() string { + val, _ := i.string() + return val } // An "invalid array index" compiler error signifies that the constant values have changed. diff --git a/testdata/gap.go b/testdata/gap.go index bc8a90c..f2b6575 100644 --- a/testdata/gap.go +++ b/testdata/gap.go @@ -22,19 +22,19 @@ const ( ) func main() { - ck(0, "Gap(0)") - ck(1, "Gap(1)") + ck(0, "") + ck(1, "") ck(Two, "Two") ck(Three, "Three") - ck(4, "Gap(4)") + ck(4, "") ck(Five, "Five") ck(Six, "Six") ck(Seven, "Seven") ck(Eight, "Eight") ck(Nine, "Nine") - ck(10, "Gap(10)") + ck(10, "") ck(Eleven, "Eleven") - ck(12, "Gap(12)") + ck(12, "") } func ck(gap Gap, str string) { diff --git a/testdata/gap.golden b/testdata/gap.golden index cc3e48d..6a54c83 100644 --- a/testdata/gap.golden +++ b/testdata/gap.golden @@ -25,7 +25,7 @@ func (i Gap) String() string { case i == 11: return _GapName_2 default: - return fmt.Sprintf("Gap(%d)", i) + return "" } } diff --git a/testdata/num.go b/testdata/num.go index 0d5ab10..f514ea5 100644 --- a/testdata/num.go +++ b/testdata/num.go @@ -19,13 +19,13 @@ const ( ) func main() { - ck(-3, "Num(-3)") + ck(-3, "") ck(m_2, "m_2") ck(m_1, "m_1") ck(m0, "m0") ck(m1, "m1") ck(m2, "m2") - ck(3, "Num(3)") + ck(3, "") } func ck(num Num, str string) { diff --git a/testdata/num.golden b/testdata/num.golden index 97cc937..47d2ef4 100644 --- a/testdata/num.golden +++ b/testdata/num.golden @@ -5,12 +5,17 @@ var _NumIndex = [...]uint8{0, 3, 6, 8, 10, 12} const _NumLowerName = "m_2m_1m0m1m2" -func (i Num) String() string { +func (i Num) string() (string, error) { i -= -2 if i < 0 || i >= Num(len(_NumIndex)-1) { - return fmt.Sprintf("Num(%d)", i+-2) + return "", fmt.Errorf("value is out of enum range") } - return _NumName[_NumIndex[i]:_NumIndex[i+1]] + return _NumName[_NumIndex[i]:_NumIndex[i+1]], nil +} + +func (i Num) String() string { + val, _ := i.string() + return val } func (Num) Values() []string { diff --git a/testdata/number.go b/testdata/number.go index 7f1c824..5b7b576 100644 --- a/testdata/number.go +++ b/testdata/number.go @@ -24,7 +24,7 @@ func main() { ck(Two, "Two") ck(Three, "Three") ck(AnotherOne, "One") - ck(127, "Number(127)") + ck(127, "") } func ck(num Number, str string) { diff --git a/testdata/offset.golden b/testdata/offset.golden index 0e52817..d7983f2 100644 --- a/testdata/offset.golden +++ b/testdata/offset.golden @@ -5,12 +5,17 @@ var _NumberIndex = [...]uint8{0, 3, 6, 11} const _NumberLowerName = "onetwothree" -func (i Number) String() string { +func (i Number) string() (string, error) { i -= 1 if i < 0 || i >= Number(len(_NumberIndex)-1) { - return fmt.Sprintf("Number(%d)", i+1) + return "", fmt.Errorf("value is out of enum range") } - return _NumberName[_NumberIndex[i]:_NumberIndex[i+1]] + return _NumberName[_NumberIndex[i]:_NumberIndex[i+1]], nil +} + +func (i Number) String() string { + val, _ := i.string() + return val } func (Number) Values() []string { diff --git a/testdata/prime.go b/testdata/prime.go index f551a1a..6502f0a 100644 --- a/testdata/prime.go +++ b/testdata/prime.go @@ -29,11 +29,11 @@ const ( ) func main() { - ck(0, "Prime(0)") - ck(1, "Prime(1)") + ck(0, "") + ck(1, "") ck(p2, "p2") ck(p3, "p3") - ck(4, "Prime(4)") + ck(4, "") ck(p5, "p5") ck(p7, "p7") ck(p77, "p7") @@ -46,7 +46,7 @@ func main() { ck(p37, "p37") ck(p41, "p41") ck(p43, "p43") - ck(44, "Prime(44)") + ck(44, "") } func ck(prime Prime, str string) { diff --git a/testdata/prime.golden b/testdata/prime.golden index 8783338..3c54e43 100644 --- a/testdata/prime.golden +++ b/testdata/prime.golden @@ -18,11 +18,16 @@ var _PrimeMap = map[Prime]string{ 43: _PrimeName[32:35], } -func (i Prime) String() string { +func (i Prime) string() (string, error) { if str, ok := _PrimeMap[i]; ok { - return str + return str, nil } - return fmt.Sprintf("Prime(%d)", i) + return "", fmt.Errorf("value is out of enum range") +} + +func (i Prime) String() string { + str, _ := i.string() + return str } func (Prime) Values() []string { diff --git a/testdata/primeGQLGen.golden b/testdata/primeGQLGen.golden index 14c8eff..14822bc 100644 --- a/testdata/primeGQLGen.golden +++ b/testdata/primeGQLGen.golden @@ -18,11 +18,16 @@ var _PrimeMap = map[Prime]string{ 43: _PrimeName[32:35], } -func (i Prime) String() string { +func (i Prime) string() (string, error) { if str, ok := _PrimeMap[i]; ok { - return str + return str, nil } - return fmt.Sprintf("Prime(%d)", i) + return "", fmt.Errorf("value is out of enum range") +} + +func (i Prime) String() string { + str, _ := i.string() + return str } // An "invalid array index" compiler error signifies that the constant values have changed. diff --git a/testdata/primeJson.golden b/testdata/primeJson.golden index 9224728..beee577 100644 --- a/testdata/primeJson.golden +++ b/testdata/primeJson.golden @@ -18,11 +18,16 @@ var _PrimeMap = map[Prime]string{ 43: _PrimeName[32:35], } -func (i Prime) String() string { +func (i Prime) string() (string, error) { if str, ok := _PrimeMap[i]; ok { - return str + return str, nil } - return fmt.Sprintf("Prime(%d)", i) + return "", fmt.Errorf("value is out of enum range") +} + +func (i Prime) String() string { + str, _ := i.string() + return str } // An "invalid array index" compiler error signifies that the constant values have changed. diff --git a/testdata/primeJsonAndSql.golden b/testdata/primeJsonAndSql.golden index 1133b4a..27b5acb 100644 --- a/testdata/primeJsonAndSql.golden +++ b/testdata/primeJsonAndSql.golden @@ -18,11 +18,16 @@ var _PrimeMap = map[Prime]string{ 43: _PrimeName[32:35], } -func (i Prime) String() string { +func (i Prime) string() (string, error) { if str, ok := _PrimeMap[i]; ok { - return str + return str, nil } - return fmt.Sprintf("Prime(%d)", i) + return "", fmt.Errorf("value is out of enum range") +} + +func (i Prime) String() string { + str, _ := i.string() + return str } // An "invalid array index" compiler error signifies that the constant values have changed. @@ -140,7 +145,7 @@ func (i *Prime) UnmarshalJSON(data []byte) error { } func (i Prime) Value() (driver.Value, error) { - return i.String(), nil + return i.string() } func (i *Prime) Scan(value interface{}) error { diff --git a/testdata/primeSql.golden b/testdata/primeSql.golden index 9a5292a..092fa70 100644 --- a/testdata/primeSql.golden +++ b/testdata/primeSql.golden @@ -18,11 +18,16 @@ var _PrimeMap = map[Prime]string{ 43: _PrimeName[32:35], } -func (i Prime) String() string { +func (i Prime) string() (string, error) { if str, ok := _PrimeMap[i]; ok { - return str + return str, nil } - return fmt.Sprintf("Prime(%d)", i) + return "", fmt.Errorf("value is out of enum range") +} + +func (i Prime) String() string { + str, _ := i.string() + return str } // An "invalid array index" compiler error signifies that the constant values have changed. @@ -123,7 +128,7 @@ func (i Prime) IsAPrime() bool { } func (i Prime) Value() (driver.Value, error) { - return i.String(), nil + return i.string() } func (i *Prime) Scan(value interface{}) error { diff --git a/testdata/primeText.golden b/testdata/primeText.golden index e8102d6..1c4eb64 100644 --- a/testdata/primeText.golden +++ b/testdata/primeText.golden @@ -18,11 +18,16 @@ var _PrimeMap = map[Prime]string{ 43: _PrimeName[32:35], } -func (i Prime) String() string { +func (i Prime) string() (string, error) { if str, ok := _PrimeMap[i]; ok { - return str + return str, nil } - return fmt.Sprintf("Prime(%d)", i) + return "", fmt.Errorf("value is out of enum range") +} + +func (i Prime) String() string { + str, _ := i.string() + return str } // An "invalid array index" compiler error signifies that the constant values have changed. diff --git a/testdata/primeYaml.golden b/testdata/primeYaml.golden index 5197219..3b1b24e 100644 --- a/testdata/primeYaml.golden +++ b/testdata/primeYaml.golden @@ -18,11 +18,16 @@ var _PrimeMap = map[Prime]string{ 43: _PrimeName[32:35], } -func (i Prime) String() string { +func (i Prime) string() (string, error) { if str, ok := _PrimeMap[i]; ok { - return str + return str, nil } - return fmt.Sprintf("Prime(%d)", i) + return "", fmt.Errorf("value is out of enum range") +} + +func (i Prime) String() string { + str, _ := i.string() + return str } // An "invalid array index" compiler error signifies that the constant values have changed. @@ -124,7 +129,7 @@ func (i Prime) IsAPrime() bool { // MarshalYAML implements a YAML Marshaler for Prime func (i Prime) MarshalYAML() (interface{}, error) { - return i.String(), nil + return i.string() } // UnmarshalYAML implements a YAML Unmarshaler for Prime diff --git a/testdata/thresholdeq.go b/testdata/thresholdeq.go index fd736b5..ef78042 100644 --- a/testdata/thresholdeq.go +++ b/testdata/thresholdeq.go @@ -18,25 +18,25 @@ const ( ) func main() { - ck(1, "Thresholdeq(1)") + ck(1, "") ck(req1, "req1") - ck(3, "Thresholdeq(3)") + ck(3, "") ck(req2, "req2") - ck(5, "Thresholdeq(5)") + ck(5, "") ck(req3, "req3") - ck(7, "Thresholdeq(7)") + ck(7, "") ck(req4, "req4") - ck(9, "Thresholdeq(9)") + ck(9, "") ck(req5, "req5") - ck(11, "Thresholdeq(11)") + ck(11, "") ck(req6, "req6") - ck(13, "Thresholdeq(13)") + ck(13, "") ck(req7, "req7") - ck(15, "Thresholdeq(15)") + ck(15, "") ck(req8, "req8") - ck(17, "Thresholdeq(17)") + ck(17, "") ck(req9, "req9") - ck(19, "Thresholdeq(19)") + ck(19, "") ck(req10, "req10") } diff --git a/testdata/thresholdgt.go b/testdata/thresholdgt.go index 88e589c..b76e906 100644 --- a/testdata/thresholdgt.go +++ b/testdata/thresholdgt.go @@ -19,27 +19,27 @@ const ( ) func main() { - ck(1, "Thresholdgt(1)") + ck(1, "") ck(rgt1, "rgt1") - ck(3, "Thresholdgt(3)") + ck(3, "") ck(rgt2, "rgt2") - ck(5, "Thresholdgt(5)") + ck(5, "") ck(rgt3, "rgt3") - ck(7, "Thresholdgt(7)") + ck(7, "") ck(rgt4, "rgt4") - ck(9, "Thresholdgt(9)") + ck(9, "") ck(rgt5, "rgt5") - ck(11, "Thresholdgt(11)") + ck(11, "") ck(rgt6, "rgt6") - ck(13, "Thresholdgt(13)") + ck(13, "") ck(rgt7, "rgt7") - ck(15, "Thresholdgt(15)") + ck(15, "") ck(rgt8, "rgt8") - ck(17, "Thresholdgt(17)") + ck(17, "") ck(rgt9, "rgt9") - ck(19, "Thresholdgt(19)") + ck(19, "") ck(rgt10, "rgt10") - ck(21, "Thresholdgt(21)") + ck(21, "") ck(rgt11, "rgt11") } @@ -47,4 +47,4 @@ func ck(thresholdgt Thresholdgt, str string) { if fmt.Sprint(thresholdgt) != str { panic("thresholdgt.go: " + str) } -} \ No newline at end of file +} diff --git a/testdata/thresholdlt.go b/testdata/thresholdlt.go index 603f382..cc1534c 100644 --- a/testdata/thresholdlt.go +++ b/testdata/thresholdlt.go @@ -17,23 +17,23 @@ const ( ) func main() { - ck(1, "Thresholdlt(1)") + ck(1, "") ck(rlt1, "rlt1") - ck(3, "Thresholdlt(3)") + ck(3, "") ck(rlt2, "rlt2") - ck(5, "Thresholdlt(5)") + ck(5, "") ck(rlt3, "rlt3") - ck(7, "Thresholdlt(7)") + ck(7, "") ck(rlt4, "rlt4") - ck(9, "Thresholdlt(9)") + ck(9, "") ck(rlt5, "rlt5") - ck(11, "Thresholdlt(11)") + ck(11, "") ck(rlt6, "rlt6") - ck(13, "Thresholdlt(13)") + ck(13, "") ck(rlt7, "rlt7") - ck(15, "Thresholdlt(15)") + ck(15, "") ck(rlt8, "rlt8") - ck(17, "Thresholdlt(17)") + ck(17, "") ck(rlt9, "rlt9") } diff --git a/testdata/transform_first.go b/testdata/transform_first.go index f1f56c8..df52f77 100644 --- a/testdata/transform_first.go +++ b/testdata/transform_first.go @@ -14,8 +14,8 @@ func main() { ck(Male, "M") ck(Female, "F") ck(unknown, "u") - ck(-127, "FirstCaseValue(-127)") - ck(127, "FirstCaseValue(127)") + ck(-127, "") + ck(127, "") } func ck(value FirstCaseValue, str string) { diff --git a/testdata/transform_first_lower.go b/testdata/transform_first_lower.go index 865a265..0422624 100644 --- a/testdata/transform_first_lower.go +++ b/testdata/transform_first_lower.go @@ -14,8 +14,8 @@ func main() { ck(Male, "m") ck(Female, "f") ck(Unknown, "u") - ck(-127, "FirstLowerCaseValue(-127)") - ck(127, "FirstLowerCaseValue(127)") + ck(-127, "") + ck(127, "") } func ck(value FirstLowerCaseValue, str string) { diff --git a/testdata/transform_first_upper.go b/testdata/transform_first_upper.go index f7282a5..babf36d 100644 --- a/testdata/transform_first_upper.go +++ b/testdata/transform_first_upper.go @@ -14,8 +14,8 @@ func main() { ck(male, "M") ck(female, "F") ck(unknown, "U") - ck(-127, "FirstUpperCaseValue(-127)") - ck(127, "FirstUpperCaseValue(127)") + ck(-127, "") + ck(127, "") } func ck(value FirstUpperCaseValue, str string) { diff --git a/testdata/transform_kebab.go b/testdata/transform_kebab.go index 8af3704..17d9edc 100644 --- a/testdata/transform_kebab.go +++ b/testdata/transform_kebab.go @@ -14,8 +14,8 @@ func main() { ck(KebabCaseValueOne, "kebab-case-value-one") ck(KebabCaseValueTwo, "kebab-case-value-two") ck(KebabCaseValueThree, "kebab-case-value-three") - ck(-127, "KebabCaseValue(-127)") - ck(127, "KebabCaseValue(127)") + ck(-127, "") + ck(127, "") } func ck(value KebabCaseValue, str string) { diff --git a/testdata/transform_kebab_upper.go b/testdata/transform_kebab_upper.go index 1d15f9b..d9da854 100644 --- a/testdata/transform_kebab_upper.go +++ b/testdata/transform_kebab_upper.go @@ -14,8 +14,8 @@ func main() { ck(KebabUpperCaseValueOne, "KEBAB-UPPER-CASE-VALUE-ONE") ck(KebabUpperCaseValueTwo, "KEBAB-UPPER-CASE-VALUE-TWO") ck(KebabUpperCaseValueThree, "KEBAB-UPPER-CASE-VALUE-THREE") - ck(-127, "KebabUpperCaseValue(-127)") - ck(127, "KebabUpperCaseValue(127)") + ck(-127, "") + ck(127, "") } func ck(value KebabUpperCaseValue, str string) { diff --git a/testdata/transform_lower.go b/testdata/transform_lower.go index e9ebe29..88eff78 100644 --- a/testdata/transform_lower.go +++ b/testdata/transform_lower.go @@ -14,8 +14,8 @@ func main() { ck(LowerCaseValueOne, "lowercasevalueone") ck(LowerCaseValueTwo, "lowercasevaluetwo") ck(LowerCaseValueThree, "lowercasevaluethree") - ck(-127, "LowerCaseValue(-127)") - ck(127, "LowerCaseValue(127)") + ck(-127, "") + ck(127, "") } func ck(value LowerCaseValue, str string) { diff --git a/testdata/transform_snake.go b/testdata/transform_snake.go index c8cce88..ce44897 100644 --- a/testdata/transform_snake.go +++ b/testdata/transform_snake.go @@ -14,8 +14,8 @@ func main() { ck(SnakeCaseValueOne, "snake_case_value_one") ck(SnakeCaseValueTwo, "snake_case_value_two") ck(SnakeCaseValueThree, "snake_case_value_three") - ck(-127, "SnakeCaseValue(-127)") - ck(127, "SnakeCaseValue(127)") + ck(-127, "") + ck(127, "") } func ck(value SnakeCaseValue, str string) { diff --git a/testdata/transform_snake_upper.go b/testdata/transform_snake_upper.go index 46e41e1..ba40ff1 100644 --- a/testdata/transform_snake_upper.go +++ b/testdata/transform_snake_upper.go @@ -14,8 +14,8 @@ func main() { ck(SnakeUpperCaseValueOne, "SNAKE_UPPER_CASE_VALUE_ONE") ck(SnakeUpperCaseValueTwo, "SNAKE_UPPER_CASE_VALUE_TWO") ck(SnakeUpperCaseValueThree, "SNAKE_UPPER_CASE_VALUE_THREE") - ck(-127, "SnakeUpperCaseValue(-127)") - ck(127, "SnakeUpperCaseValue(127)") + ck(-127, "") + ck(127, "") } func ck(value SnakeUpperCaseValue, str string) { diff --git a/testdata/transform_title.go b/testdata/transform_title.go index a36a745..369d247 100644 --- a/testdata/transform_title.go +++ b/testdata/transform_title.go @@ -14,8 +14,8 @@ func main() { ck(titlecasevalueone, "Titlecasevalueone") ck(titlecasevaluetwo, "Titlecasevaluetwo") ck(titlecasevaluethree, "Titlecasevaluethree") - ck(-127, "TitleCaseValue(-127)") - ck(127, "TitleCaseValue(127)") + ck(-127, "") + ck(127, "") } func ck(value TitleCaseValue, str string) { diff --git a/testdata/transform_upper.go b/testdata/transform_upper.go index a18a4bf..e0efc67 100644 --- a/testdata/transform_upper.go +++ b/testdata/transform_upper.go @@ -14,8 +14,8 @@ func main() { ck(UpperCaseValueOne, "UPPERCASEVALUEONE") ck(UpperCaseValueTwo, "UPPERCASEVALUETWO") ck(UpperCaseValueThree, "UPPERCASEVALUETHREE") - ck(-127, "UpperCaseValue(-127)") - ck(127, "UpperCaseValue(127)") + ck(-127, "") + ck(127, "") } func ck(value UpperCaseValue, str string) { diff --git a/testdata/transform_whitespace.go b/testdata/transform_whitespace.go index b3d552d..be155ca 100644 --- a/testdata/transform_whitespace.go +++ b/testdata/transform_whitespace.go @@ -14,8 +14,8 @@ func main() { ck(WhitespaceSeparatedValueOne, "whitespace separated value one") ck(WhitespaceSeparatedValueTwo, "whitespace separated value two") ck(WhitespaceSeparatedValueThree, "whitespace separated value three") - ck(-127, "WhitespaceSeparatedValue(-127)") - ck(127, "WhitespaceSeparatedValue(127)") + ck(-127, "") + ck(127, "") } func ck(value WhitespaceSeparatedValue, str string) { diff --git a/testdata/trimPrefix.golden b/testdata/trimPrefix.golden index 52f063e..b919e75 100644 --- a/testdata/trimPrefix.golden +++ b/testdata/trimPrefix.golden @@ -5,11 +5,16 @@ var _DayIndex = [...]uint8{0, 6, 13, 22, 30, 36, 44, 50} const _DayLowerName = "mondaytuesdaywednesdaythursdayfridaysaturdaysunday" -func (i Day) String() string { +func (i Day) string() (string, error) { if i < 0 || i >= Day(len(_DayIndex)-1) { - return fmt.Sprintf("Day(%d)", i) + return "", fmt.Errorf("value is out of enum range") } - return _DayName[_DayIndex[i]:_DayIndex[i+1]] + return _DayName[_DayIndex[i]:_DayIndex[i+1]], nil +} + +func (i Day) String() string { + val, _ := i.string() + return val } // An "invalid array index" compiler error signifies that the constant values have changed. diff --git a/testdata/trimPrefixMultiple.golden b/testdata/trimPrefixMultiple.golden index 439ca92..1aa2d42 100644 --- a/testdata/trimPrefixMultiple.golden +++ b/testdata/trimPrefixMultiple.golden @@ -5,11 +5,16 @@ var _DayIndex = [...]uint8{0, 6, 13, 22, 30, 36, 44, 50} const _DayLowerName = "mondaytuesdaywednesdaythursdayfridaysaturdaysunday" -func (i Day) String() string { +func (i Day) string() (string, error) { if i < 0 || i >= Day(len(_DayIndex)-1) { - return fmt.Sprintf("Day(%d)", i) + return "", fmt.Errorf("value is out of enum range") } - return _DayName[_DayIndex[i]:_DayIndex[i+1]] + return _DayName[_DayIndex[i]:_DayIndex[i+1]], nil +} + +func (i Day) String() string { + val, _ := i.string() + return val } // An "invalid array index" compiler error signifies that the constant values have changed. diff --git a/testdata/unum.go b/testdata/unum.go index 2f8508f..f1b3990 100644 --- a/testdata/unum.go +++ b/testdata/unum.go @@ -22,13 +22,13 @@ const ( ) func main() { - ck(^Unum(0)-3, "Unum(252)") + ck(^Unum(0)-3, "") ck(m_2, "m_2") ck(m_1, "m_1") ck(m0, "m0") ck(m1, "m1") ck(m2, "m2") - ck(3, "Unum(3)") + ck(3, "") } func ck(unum Unum, str string) { diff --git a/testdata/unum.golden b/testdata/unum.golden index 9e413dc..d327701 100644 --- a/testdata/unum.golden +++ b/testdata/unum.golden @@ -19,7 +19,7 @@ func (i Unum) String() string { i -= 253 return _UnumName_1[_UnumIndex_1[i]:_UnumIndex_1[i+1]] default: - return fmt.Sprintf("Unum(%d)", i) + return "" } } diff --git a/testdata/unum2.go b/testdata/unum2.go index edbbedf..a08fac5 100644 --- a/testdata/unum2.go +++ b/testdata/unum2.go @@ -20,8 +20,8 @@ func main() { ck(Zero, "Zero") ck(One, "One") ck(Two, "Two") - ck(3, "Unum2(3)") - ck(255, "Unum2(255)") + ck(3, "") + ck(255, "") } func ck(unum Unum2, str string) {