Skip to content

Commit

Permalink
Thrift-1446:Compile error with Delphi 2009 in constant initializer
Browse files Browse the repository at this point in the history
Client: delphi
Patch: Kenjiro Fukumitsu 

Generated code cannot be compiled with Delphi 2009 due to the bug in constant initializer.



git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1210728 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
jfarrell committed Dec 6, 2011
1 parent 3775a68 commit 6fa2b30
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 11 deletions.
9 changes: 4 additions & 5 deletions compiler/cpp/src/generate/t_delphi_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ class t_delphi_generator : public t_oop_generator
void print_const_prop(std::ostream& out, string name, t_type* type, t_const_value* value);
void print_private_field(std::ostream& out, string name, t_type* type, t_const_value* value);
void print_const_value ( std::ostream& vars, std::ostream& out, std::string name, t_type* type, t_const_value* value);
void initialize_field(std::ostream& vars, std::ostream& out, std::string name, t_type* type, t_const_value* value, std::string cls_nm = "");
void initialize_field(std::ostream& vars, std::ostream& out, std::string name, t_type* type, t_const_value* value);
void finalize_field(std::ostream& out, std::string name, t_type* type, t_const_value* value, std::string cls_nm = "");
std::string render_const_value( std::ostream& local_vars, std::ostream& out, std::string name, t_type* type, t_const_value* value);
void print_const_def_value( std::ostream& vars, std::ostream& out, std::string name, t_type* type, t_const_value* value, std::string cls_nm = "");
Expand Down Expand Up @@ -609,8 +609,8 @@ void t_delphi_generator::generate_consts(std::vector<t_const*> consts) {

indent_up_impl();
for (c_iter = consts.begin(); c_iter != consts.end(); ++c_iter) {
initialize_field( vars, code, "F" + prop_name( (*c_iter)->get_name()),
(*c_iter)->get_type(), (*c_iter)->get_value(), "TConstants" );
initialize_field( vars, code, "TConstants.F" + prop_name( (*c_iter)->get_name()),
(*c_iter)->get_type(), (*c_iter)->get_value());
}
indent_down_impl();

Expand Down Expand Up @@ -723,8 +723,7 @@ void t_delphi_generator::print_const_value( std::ostream& vars, std::ostream& ou

}

void t_delphi_generator::initialize_field(std::ostream& vars, std::ostream& out, string name, t_type* type, t_const_value* value, string cls_nm) {
(void) cls_nm;
void t_delphi_generator::initialize_field(std::ostream& vars, std::ostream& out, string name, t_type* type, t_const_value* value) {
print_const_value( vars, out, name, type, value );
}

Expand Down
14 changes: 8 additions & 6 deletions lib/delphi/test/TestClient.pas
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,14 @@ function BoolToString( b : Boolean) : string;
begin
if b
then result := 'true'
else result := 'false';
end;


{ TTestClient }

else result := 'false';
end;

// not available in all versions, so make sure we have this one imported
function IsDebuggerPresent: BOOL; stdcall; external KERNEL32 name 'IsDebuggerPresent';

{ TTestClient }

class procedure TTestClient.Execute(const args: array of string);
var
i : Integer;
Expand Down

0 comments on commit 6fa2b30

Please sign in to comment.