[ https://issues.apache.org/jira/browse/THRIFT-2628?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14066104#comment-14066104 ]
alisdair sullivan commented on THRIFT-2628: ------------------------------------------- i missed that the thrift definitions did not have repeated names and that the problem was specifically the erlang representation (or rather the normalization as atoms) what exactly is allowed as a thrift field name? ideally, {code} struct foo { 1: string bar, 2: string Bar } {code} would compile to: {code} -record(foo, {bar :: string() | binary(), 'Bar' :: string() | binary()}). {code} or {code} -record(foo, {bar :: string() | binary(), <<"bar">> :: string() | binary()}). {code} but not all thrift field names may be representable by either of these schemes and normalization/conversion may introduce further conflicts also note this would probably have to be gated behind a generator option as anthony suggests to preserve backwards compatibility > erlang: struct member name conflicts due to lowercased names > ------------------------------------------------------------ > > Key: THRIFT-2628 > URL: https://issues.apache.org/jira/browse/THRIFT-2628 > Project: Thrift > Issue Type: Bug > Components: Erlang - Compiler, Erlang - Library > Reporter: alisdair sullivan > Labels: erlang > > the erlang backend generates records to represent structs. instead of the > unique sequential id they use the struct field name as the record keys. > records in erlang do not support repeated keys so generated erlang modules do > not compile > the most obvious fix is to refuse to generate code from structs with repeated > keys but this means the erlang backend is not capable of handling all valid > structs > the easiest fix is to switch structs to use the unique sequential ids as the > keys of the record but this breaks backwards compatibility and probably > necessitates generating helper functions to retrieve fields by name > also possible is switching to an erlang data structure that supports repeated > keys but this would also require breaking backwards compatibility -- This message was sent by Atlassian JIRA (v6.2#6252)