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

No code generated for defaults when complex constants are referenced

    XMLWordPrintableJSON

Details

    Description

      The assignment of more complex constants looks like not fully implemented. Here's a test case:

      testcase.thrift
      struct thing {
        1: i32 hello,
        2: i32 goodbye
      }
      
      const map<i32,thing> GEN_WHAT = { 35 : { 'hello' : 325, 'goodbye' : 325352 } }
      
      struct Foo {
        1:  map<i32,thing> complex = GEN_WHAT
      }
      
      service Bar {
        void Baz( 4: map<i32,thing> complex = GEN_WHAT)
      }
      
      

      At least for the languages I tested (C++, C# and Delphi) there is no code generated to assign the GEN_WHAT constant at all, altough it is used at two places in the IDL. I have not checked all the other languages, but there are very likely some more candidates around. The problem can be solved by testing against CV_IDENTIFIER and proper treatment of that special case in all of the affected places.

      Remarks:

      • Regarding the service args, there's a general problem for which another ticket exists: THRIFT-2315.
      • I already fixed the HTML compiler with THRIFT-2370.

      Attachments

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated: