You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Jens Geyer (JIRA)" <ji...@apache.org> on 2012/12/18 22:38:12 UTC
[jira] [Resolved] (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 ]
Jens Geyer resolved THRIFT-1788.
--------------------------------
Resolution: Fixed
Committed, works like a charm.
> 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, 1788-v2.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