You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Carl Yeksigian (JIRA)" <ji...@apache.org> on 2012/12/13 04:15:21 UTC

[jira] [Updated] (THRIFT-1788) C#: Constants static constructor does not compile

     [ https://issues.apache.org/jira/browse/THRIFT-1788?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Carl Yeksigian updated THRIFT-1788:
-----------------------------------

    Attachment: 1788.patch

Patch which uses property name rather than field name.
                
> C#: Constants static constructor does not compile
> -------------------------------------------------
>
>                 Key: THRIFT-1788
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1788
>             Project: Thrift
>          Issue Type: Bug
>          Components: C# - Compiler
>    Affects Versions: 0.8, 0.9
>            Reporter: Carl Yeksigian
>            Assignee: Carl Yeksigian
>             Fix For: 1.0
>
>         Attachments: 1788.patch
>
>
> The following Thrift IDL does not correctly compile to C# (from test/ConstantsDemo.thrift):
> {code}
> struct thing {
>   1: i32 hello,
>   2: i32 goodbye
> }
> enum enumconstants {
>   ONE = 1,
>   TWO = 2
> }
> // struct thing2 {
> //   /** standard docstring */
> //   1: enumconstants val = TWO
> // }
> typedef i32 myIntType
> const myIntType myInt = 3
> //const map<enumconstants,string> GEN_ENUM_NAMES = {ONE : "HOWDY", TWO: "PARTNER"}
> const i32 hex_const = 0x0001F
> const i32 GEN_ME = -3523553
> const double GEn_DUB = 325.532
> const double GEn_DU = 085.2355
> const string GEN_STRING = "asldkjasfd"
> const map<i32,i32> GEN_MAP = { 35532 : 233, 43523 : 853 }
> const list<i32> GEN_LIST = [ 235235, 23598352, 3253523 ]
> const map<i32, map<i32, i32>> GEN_MAPMAP = { 235 : { 532 : 53255, 235:235}}
> const map<string,i32> GEN_MAP2 = { "hello" : 233, "lkj98d" : 853, 'lkjsdf' : 098325 }
> const thing GEN_THING = { 'hello' : 325, 'goodbye' : 325352 }
> const map<i32,thing> GEN_WHAT = { 35 : { 'hello' : 325, 'goodbye' : 325352 } }
> const set<i32> GEN_SET = [ 235, 235, 53235 ]
> exception Blah {
>   1:  i32 bing }
> exception Gak {}
> service yowza {
>   void blingity(),
>   i32 blangity() throws (1: Blah hoot )
> }
> {code}
> The constructor generated does not use the correct property name, instead using the field name.
> {code}
> /**
>  * Autogenerated by Thrift Compiler (0.8.0)
>  *
>  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
>  *  @generated
>  */
> using System;
> using System.Collections;
> using System.Collections.Generic;
> using System.Text;
> using System.IO;
> using Thrift;
> using Thrift.Collections;
> public class Constants
> {
>   public static int   public static int hex_const = 31;
>   public static int GEN_ME = -3523553;
>   public static double GEn_DUB = 325.532;
>   public static double GEn_DU = 85.2355;
>   public static string GEN_STRING = "asldkjasfd";
>   public static Dictionary<int, int> GEN_MAP = new Dictionary<int, int>();
>   public static List<int> GEN_LIST = new List<int>();
>   public static Dictionary<int, Dictionary<int, int>> GEN_MAPMAP = new Dictionary<int, Dictionary<int, int>>();
>   public static Dictionary<string, int> GEN_MAP2 = new Dictionary<string, int>();
>   public static thing GEN_THING = new thing();
>   public static Dictionary<int, thing> GEN_WHAT = new Dictionary<int, thing>();
>   public static THashSet<int> GEN_SET = new THashSet<int>();
>   static Constants()
>   {
>     GEN_MAP[35532] = 233;
>     GEN_MAP[43523] = 853;
>     GEN_LIST.Add(235235);
>     GEN_LIST.Add(23598352);
>     GEN_LIST.Add(3253523);
>     Dictionary<int, int> tmp0 = new Dictionary<int, int>();
>     tmp0[532] = 53255;
>     tmp0[235] = 235;
>     GEN_MAPMAP[235] = tmp0;
>     GEN_MAP2["hello"] = 233;
>     GEN_MAP2["lkj98d"] = 853;
>     GEN_MAP2["lkjsdf"] = 98325;
>     GEN_THING.hello = 325;
>     GEN_THING.goodbye = 325352;
>     thing tmp1 = new thing();
>     tmp1.hello = 325;
>     tmp1.goodbye = 325352;
>     GEN_WHAT[35] = tmp1;
>     GEN_SET.Add(235);
>     GEN_SET.Add(235);
>     GEN_SET.Add(53235);
>   }
> }
> {code}
> I think it should be tmp1.Hello = 325, tmp1.Goodbye = 325352; this is in line with what the Java compiler produces.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira