Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-1028

field names of structs used with wrong casing in the generated haskell code

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Cannot Reproduce
    • 0.5
    • 0.9.2
    • Haskell - Compiler
    • None
    • ghc 6.12.1, Thrift version 0.5.0, ubuntu 10.10

    Description

      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.

      Attachments

        Activity

          People

            clavoie Christian Lavoie
            reenberg Jesper Reenberg
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: