Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-2422 Merge fbthrift
  3. THRIFT-2444

pull request 88: thrift: clean up enum value assignment

    XMLWordPrintableJSON

Details

    • Sub-task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 0.9.2
    • Compiler (General)
    • None
    • Patch Available

    Description

      GitHub user djwatson opened a pull request:

      https://github.com/apache/thrift/pull/88

      thrift: clean up enum value assignment

      Summary:
      Clean up how enum values are handled if an integer value is not
      explicitly specified in the thrift file.

      For example, the following used to be a compile error, but
      works now:

      enum MyEnum

      { SOMEVALUE }
      struct MyStruct { 1: MyEnum e = SOMEVALUE }

      This change also cleans up some of the error handling with out-of-range
      values. Previously thrift simply issued a warning for enum values that
      didn't fit in an i32, but serialized them as i32 anyway. Now
      out-of-range enum values result in a compile failure.

      Test Plan:
      Included a new unit test to verify the assignment of enum values. I
      also verified that g++ makes the same enum value assignments when
      compiling these enums as C++ code.

      You can merge this pull request into a Git repository by running:

      $ git pull https://github.com/djwatson/thrift enum_parser

      Alternatively you can review and apply these changes as the patch at:

      https://github.com/apache/thrift/pull/88.patch

      To close this pull request, make a commit to your master/trunk branch
      with (at least) the following in the commit message:

      This closes #88

      ----
      commit 066cdfc0846dce8128263592efffa88084632a74
      Author: Dave Watson <davejwatson@fb.com>
      Date: 2014-03-25T18:51:47Z

      thrift: clean up enum value assignment

      Summary:
      Clean up how enum values are handled if an integer value is not
      explicitly specified in the thrift file.

      For example, the following used to be a compile error, but
      works now:

      enum MyEnum { SOMEVALUE }

      struct MyStruct

      { 1: MyEnum e = SOMEVALUE }

      This change also cleans up some of the error handling with out-of-range
      values. Previously thrift simply issued a warning for enum values that
      didn't fit in an i32, but serialized them as i32 anyway. Now
      out-of-range enum values result in a compile failure.

      Test Plan:
      Included a new unit test to verify the assignment of enum values. I
      also verified that g++ makes the same enum value assignments when
      compiling these enums as C++ code.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jensg Jens Geyer
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: