Thrift-1408: Delphi Test Server: Exception test case fails due to naming conflict with e.message
Client: delphi
Patch: jens Geyer
Fix name comflict with e.message
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1195461 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/generate/t_delphi_generator.cc b/compiler/cpp/src/generate/t_delphi_generator.cc
index fc684df..569afe3 100644
--- a/compiler/cpp/src/generate/t_delphi_generator.cc
+++ b/compiler/cpp/src/generate/t_delphi_generator.cc
@@ -981,7 +981,7 @@
}
out << "class(";
if ( is_exception && (! is_x_factory)) {
- out << "Exception";
+ out << "TException";
} else {
out << "TInterfacedObject, IBase, " << struct_intf_name;
}
diff --git a/lib/delphi/src/Thrift.pas b/lib/delphi/src/Thrift.pas
index 6f352b1..48c3d47 100644
--- a/lib/delphi/src/Thrift.pas
+++ b/lib/delphi/src/Thrift.pas
@@ -54,8 +54,22 @@
procedure Write( oprot: IProtocol );
end;
+ // base class for IDL-generated exceptions
+ TException = class( SysUtils.Exception)
+ public
+ procedure Message; // hide inherited property to prevent accidental read/write
+ end;
+
implementation
+{ TException }
+
+procedure TException.Message;
+// hide inherited property to prevent accidental read/write
+begin
+ ASSERT( FALSE, 'Unexpected call to '+ClassName+'.message. Forgot the underscore?');
+end;
+
{ TApplicationException }
constructor TApplicationException.Create;
diff --git a/lib/delphi/test/TestServer.pas b/lib/delphi/test/TestServer.pas
index c120712..67cce77 100644
--- a/lib/delphi/test/TestServer.pas
+++ b/lib/delphi/test/TestServer.pas
@@ -276,7 +276,7 @@
begin
x := TXception.Create;
x.ErrorCode := 1001;
- x.Message := 'This is an Xception';
+ x.Message_ := 'This is an Xception';
raise x;
end else
if ( arg0 = 'Xception2') then