[
https://issues.apache.org/jira/browse/THRIFT-1028?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12987773#action_12987773
]
Christian Lavoie commented on THRIFT-1028:
------------------------------------------
Oh, I see what you mean.
Yeah, right now the bindings decapitalize a few more things than they could --
part of the problem is that Haskell requires certain things to capitalized and
others not too. I think the current code generator tries (too) hard to stay
consistent across cases where parts of the code want a given identifier
capitalized and others parts wants that same identifier non-capitalized (Types
vs function and field names, for example).
I wonder what's the right rule of thumb here -- "keep what the .thrift file
uses unless Haskell's grammar requires otherwise"?
> field names of structs used with wrong casing in the generated haskell code
> ---------------------------------------------------------------------------
>
> Key: THRIFT-1028
> URL: https://issues.apache.org/jira/browse/THRIFT-1028
> Project: Thrift
> Issue Type: Bug
> Components: Haskell - Compiler
> Affects Versions: 0.5
> Environment: ghc 6.12.1, Thrift version 0.5.0, ubuntu 10.10
> Reporter: Jesper Reenberg
> Assignee: Christian Lavoie
> Priority: Minor
>
> Invalid haskell code is generated using the following thrift code:
> --------------------------------------------------------
> struct Test {
> 1:string Foo,
> 3:i32 BarBaz,
> 4:i32 HestTest
> }
> service Test {
> bool makeTest(1:Test tst, 2:double i)
> }
> --------------------------------------------------------
> The wrong casing is generated in the record setter parts of the generated
> data in read_Test_fields and generation of the initial "record" in read_Test.
> The wrong casing is the first letter from the thrift struct specification
> always being lowercase when used in the above two generated functions.
> The generated data type is
> data Test = Test
> {
> f_Test_Foo :: Maybe String
> , f_Test_BarBaz :: Maybe Int32
> , f_Test_HestTest :: Maybe Int32
> }
> deriving (Show,Eq,Ord,Typeable)
> Where it is used with the field names f_Test_foo, f_Test_barBaz and
> f_Test_hestTest as seen below
> read_Test iprot = do
> _ <- readStructBegin iprot
> record <- read_Test_fields iprot
>
> (Test{f_Test_foo=Nothing,f_Test_barBaz=Nothing,f_Test_hestTest=Nothing})
> readStructEnd iprot
> return record
> I have downloaded and build the 0.5.0 from http://thrift.apache.org/ and i
> don't know if it affect older versions as well.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.