C# constant code generation fails
---------------------------------
Key: THRIFT-1026
URL: https://issues.apache.org/jira/browse/THRIFT-1026
Project: Thrift
Issue Type: Bug
Components: C# - Compiler
Affects Versions: 0.5
Environment: Windows, Mac
Reporter: William Blinn
I have a thrift file that looks like this:
{code}
// Time stamp with a timezone specification for normalization.
struct DateTimeZone
{
1: i64 ticks,
2: optional string timeZone = "UTC",
}
{code}
When I generate C#, it produces code like this:
{code}
[Serializable]
public partial class DateTimeZone : TBase
{
private long _ticks;
private string _timeZone;
public long Ticks
{
get
{
return _ticks;
}
set
{
__isset.ticks = true;
this._ticks = value;
}
}
public string TimeZone
{
get
{
return _timeZone;
}
set
{
__isset.timeZone = true;
this._timeZone = value;
}
}
public Isset __isset;
[Serializable]
public struct Isset {
public bool ticks;
public bool timeZone;
}
public DateTimeZone() {
this.timeZone = "UTC";
}
...
{code}
The constructor, which sets the default value should be this.TimeZone = "UTC"
because the property is TimeZone, not timeZone. The constructor should set the
property rather than the field so that __isset is marked properly.
The compile error I get when I try to compile the code that thrift generates is
like this:
{code}
[csc] d:\code\Thrift\Generated\DateTimeZone.cs(59,12): error CS1061:
'Thrift.Generated.DateTimeZone' does not contain a definition for 'timeZone'
and no extension method 'timeZone' accepting a first argument of type
'Thrift.Generated.DateTimeZone' could be found (are you missing a using
directive or an assembly reference?)
{code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.