Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
None
-
None
Description
The csharp service client generator creates some local variables that prevent the usage of those names in the Thrift file.
For example the following thrift file breaks:
service Test { void Calculate( 1 : i32 x, # This breaks because the variable name x is the same as the TApplicationException variable name x 2 : i32 result, # This breaks because the variable name result is the same as the InternalStructs variable name result ) }
The above example will generate the following C# code which does not compile because x and result are also used below:
public async global::System.Threading.Tasks.Task Calculate(int x, int result, CancellationToken cancellationToken = default) { await OutputProtocol.WriteMessageBeginAsync(new TMessage("Calculate", TMessageType.Call, SeqId), cancellationToken); var args = new InternalStructs.CalculateArgs() { X = x, Result = result, }; await args.WriteAsync(OutputProtocol, cancellationToken); await OutputProtocol.WriteMessageEndAsync(cancellationToken); await OutputProtocol.Transport.FlushAsync(cancellationToken); var msg = await InputProtocol.ReadMessageBeginAsync(cancellationToken); if (msg.Type == TMessageType.Exception) { var x = await TApplicationException.ReadAsync(InputProtocol, cancellationToken); await InputProtocol.ReadMessageEndAsync(cancellationToken); throw x; } var result = new InternalStructs.CalculateResult(); await result.ReadAsync(InputProtocol, cancellationToken); await InputProtocol.ReadMessageEndAsync(cancellationToken); return; }
When compiling this code with `-gen java` the generated sources build fine.
Attachments
Issue Links
- links to