mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 04:59:26 +02:00
* correct parameter encoding of formaldef (add array type for formal const,
remove double array type for formal var/out) git-svn-id: branches/jvmbackend@18551 -
This commit is contained in:
parent
2ed430de8c
commit
d7e78b9f95
@ -303,8 +303,7 @@ implementation
|
||||
formaldef :
|
||||
begin
|
||||
{$ifndef nounsupported}
|
||||
{ var x: JLObject }
|
||||
encodedstr:=encodedstr+'[';
|
||||
{ var/const/out x: JLObject }
|
||||
result:=jvmaddencodedtype(java_jlobject,false,encodedstr,forcesignature,founderror);
|
||||
{$else}
|
||||
result:=false;
|
||||
|
@ -4492,16 +4492,16 @@ implementation
|
||||
name }
|
||||
if ([vo_is_funcret,vo_is_self] * vs.varoptions <> []) then
|
||||
continue;
|
||||
{ reference parameters are not yet supported }
|
||||
if (vs.varspez in [vs_var,vs_out,vs_constref]) then
|
||||
begin
|
||||
{ passing by reference is emulated by passing an array of one
|
||||
element containing the value; for types that aren't pointers
|
||||
in regular Pascal, simply passing the underlying pointer type
|
||||
does achieve regular call-by-reference semantics though }
|
||||
if not jvmimplicitpointertype(vs.vardef) then
|
||||
tmpresult:=tmpresult+'[';
|
||||
end;
|
||||
{ passing by reference is emulated by passing an array of one
|
||||
element containing the value; for types that aren't pointers
|
||||
in regular Pascal, simply passing the underlying pointer type
|
||||
does achieve regular call-by-reference semantics though;
|
||||
formaldefs always have to be passed like that because their
|
||||
contents can be replaced }
|
||||
if (vs.vardef.typ=formaldef) or
|
||||
((vs.varspez in [vs_var,vs_out,vs_constref]) and
|
||||
not jvmimplicitpointertype(vs.vardef)) then
|
||||
tmpresult:=tmpresult+'[';
|
||||
{ Add the parameter type. }
|
||||
if not jvmaddencodedtype(vs.vardef,false,tmpresult,signature,founderror) then
|
||||
{ should be checked earlier on }
|
||||
|
Loading…
Reference in New Issue
Block a user