mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-09 18:18:31 +02:00
Changed implicit type conversion helper for interface assignments. This is needed for _IMPLEMENTS. Will be optimized to be more optimal for non-implements interfaces
git-svn-id: trunk@4363 -
This commit is contained in:
parent
dceda55abf
commit
f0a62b1e47
@ -637,11 +637,26 @@ implementation
|
|||||||
{ call helpers for interface }
|
{ call helpers for interface }
|
||||||
if is_interfacecom(left.resulttype.def) then
|
if is_interfacecom(left.resulttype.def) then
|
||||||
begin
|
begin
|
||||||
hp:=ccallparanode.create(ctypeconvnode.create_internal
|
{
|
||||||
(right,voidpointertype),
|
hp:=
|
||||||
ccallparanode.create(ctypeconvnode.create_internal
|
ccallparanode.create(
|
||||||
(left,voidpointertype),nil));
|
ctypeconvnode.create_internal(right,voidpointertype),
|
||||||
|
ccallparanode.create(
|
||||||
|
ctypeconvnode.create_internal(left,voidpointertype),
|
||||||
|
nil));
|
||||||
result:=ccallnode.createintern('fpc_intf_assign',hp);
|
result:=ccallnode.createintern('fpc_intf_assign',hp);
|
||||||
|
}
|
||||||
|
|
||||||
|
hp:=
|
||||||
|
ccallparanode.create(
|
||||||
|
cguidconstnode.create(tobjectdef(left.resulttype.def).iidguid^),
|
||||||
|
ccallparanode.create(
|
||||||
|
ctypeconvnode.create_internal(right,voidpointertype),
|
||||||
|
ccallparanode.create(
|
||||||
|
ctypeconvnode.create_internal(left,voidpointertype),
|
||||||
|
nil)));
|
||||||
|
result:=ccallnode.createintern('fpc_intf_assign_by_iid',hp);
|
||||||
|
|
||||||
left:=nil;
|
left:=nil;
|
||||||
right:=nil;
|
right:=nil;
|
||||||
exit;
|
exit;
|
||||||
|
Loading…
Reference in New Issue
Block a user