Konstantin Shaposhnikov created THRIFT-3144:
-----------------------------------------------
Summary: Proposal: make String representation of enums in
generated go code less verbose
Key: THRIFT-3144
URL: https://issues.apache.org/jira/browse/THRIFT-3144
Project: Thrift
Issue Type: Improvement
Components: Go - Compiler
Affects Versions: 0.9.2
Reporter: Konstantin Shaposhnikov
Generated Go code for enums provides String() and EnumFromString methods for
enums. E.g.:
{code}
func (p TestEnum) String() string {
switch p {
case TestEnum_FIRST:
return "TestEnum_FIRST"
case TestEnum_SECOND:
return "TestEnum_SECOND"
case TestEnum_THIRD:
return "TestEnum_THIRD"
case TestEnum_FOURTH:
return "TestEnum_FOURTH"
}
return "<UNSET>"
}
func TestEnumFromString(s string) (TestEnum, error) {
switch s {
case "TestEnum_FIRST":
return TestEnum_FIRST, nil
case "TestEnum_SECOND":
return TestEnum_SECOND, nil
case "TestEnum_THIRD":
return TestEnum_THIRD, nil
case "TestEnum_FOURTH":
return TestEnum_FOURTH, nil
}
}
{code}
The current implementation uses enum name as string representation. E.g.
String(TestEnum_FIRST) = "TestEnum_FIRST" which seems to be unnecessary verbose
to me.
I propose to change it to use enum values from the thrift file instead. E.g.:
{code}
func (p TestEnum) String() string {
switch p {
case TestEnum_FIRST:
return "FIRST"
case TestEnum_SECOND:
return "SECOND"
case TestEnum_THIRD:
return "THIRD"
case TestEnum_FOURTH:
return "FOURTH"
}
return "<UNSET>"
}
func TestEnumFromString(s string) (TestEnum, error) {
switch s {
case "FIRST":
return TestEnum_FIRST, nil
case "SECOND":
return TestEnum_SECOND, nil
case "THIRD":
return TestEnum_THIRD, nil
case "FOURTH":
return TestEnum_FOURTH, nil
}
}
{code}
This is also consistent with generated code for other languages (e.g. Python,
C++).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)