* always put parameters in left-to-right order in rtti (Delphi-compatible)

* adapted test (and removed BOM)

git-svn-id: trunk@13708 -
This commit is contained in:
Jonas Maebe 2009-09-13 20:56:22 +00:00
parent 47e90bbdf3
commit da7fdf76d5
2 changed files with 9 additions and 18 deletions

View File

@ -681,18 +681,9 @@ implementation
{ write parameter info. The parameters must be written in reverse order
if this method uses right to left parameter pushing! }
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_8bit(def.maxparacount));
{$ifdef i386}
if def.proccalloption in pushleftright_pocalls then
begin
for i:=0 to def.paras.count-1 do
write_para(tparavarsym(def.paras[i]));
end
else
{$endif}
begin
for i:=def.paras.count-1 downto 0 do
write_para(tparavarsym(def.paras[i]));
end;
for i:=0 to def.paras.count-1 do
write_para(tparavarsym(def.paras[i]));
{ write name of result type }
write_rtti_name(def.returndef);

View File

@ -1,4 +1,4 @@
{$M+}
{$M+}
program RTTI132;
{$IFDEF FPC}
@ -357,11 +357,11 @@ end;
const
expectedresults: array[0..6] of ansistring = (
'',
'function (out Out1: Int64; const P: Pointer; var array of reference ?Array1: AnsiString): Int64 of object;',
'procedure (const adresse ?Component4: TComponent; adresse ?out Component3: TComponent; var adresse ?Component2: TComponent; adresse ?Component1: TComponent) of object;',
'function (array of reference ?out D: Byte; var array of reference ?C: Byte; const array of reference ?B: Byte; array of reference ?A: Byte): TComponent of object;',
'function (const A: LongInt; var S: AnsiString): Int64 of object;',
'function (Six: LongInt; array of reference ?Five: Byte; Four: PInteger; adresse ?out Three: TMyObject; var Two: LongInt; const A: AnsiString): AnsiString of object;',
'function (var array of reference ?Array1: AnsiString; const P: Pointer; out Out1: Int64): Int64 of object;',
'procedure (adresse ?Component1: TComponent; var adresse ?Component2: TComponent; adresse ?out Component3: TComponent; const adresse ?Component4: TComponent) of object;',
'function (array of reference ?A: Byte; const array of reference ?B: Byte; var array of reference ?C: Byte; array of reference ?out D: Byte): TComponent of object;',
'function (var S: AnsiString; const A: LongInt): Int64 of object;',
'function (const A: AnsiString; var Two: LongInt; adresse ?out Three: TMyObject; Four: PInteger; array of reference ?Five: Byte; Six: LongInt): AnsiString of object;',
'procedure (var S: AnsiString) of object;'
);
begin