mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-03 01:09:40 +01:00
compiler: move current_objectdef variable to implementation of pdecobj and use explicit type conversion to tobjectdef in other places where current_objectdef is needed
git-svn-id: trunk@16660 -
This commit is contained in:
parent
ee78cf0f06
commit
2af416e145
@ -562,7 +562,7 @@ implementation
|
||||
{ parameter 2 : pointer to vmt }
|
||||
{ parameter 1 : self pointer }
|
||||
para:=ccallparanode.create(
|
||||
cordconstnode.create(current_objectdef.vmt_offset,s32inttype,false),
|
||||
cordconstnode.create(tobjectdef(current_structdef).vmt_offset,s32inttype,false),
|
||||
ccallparanode.create(
|
||||
ctypeconvnode.create_internal(
|
||||
load_vmt_pointer_node,
|
||||
|
||||
@ -55,6 +55,8 @@ implementation
|
||||
Declaring it as string here results in an error when compiling (PFV) }
|
||||
current_procinfo = 'error';
|
||||
|
||||
var
|
||||
current_objectdef : tobjectdef absolute current_structdef;
|
||||
|
||||
function class_constructor_head:tprocdef;
|
||||
var
|
||||
|
||||
@ -328,7 +328,7 @@ implementation
|
||||
that memory was allocated }
|
||||
{ parameter 1 : self pointer }
|
||||
para:=ccallparanode.create(
|
||||
cordconstnode.create(current_objectdef.vmt_offset,s32inttype,false),
|
||||
cordconstnode.create(tobjectdef(current_structdef).vmt_offset,s32inttype,false),
|
||||
ccallparanode.create(
|
||||
ctypeconvnode.create_internal(
|
||||
load_vmt_pointer_node,
|
||||
@ -448,7 +448,7 @@ implementation
|
||||
{ parameter 2 : pointer to vmt }
|
||||
{ parameter 1 : self pointer }
|
||||
para:=ccallparanode.create(
|
||||
cordconstnode.create(current_objectdef.vmt_offset,s32inttype,false),
|
||||
cordconstnode.create(tobjectdef(current_structdef).vmt_offset,s32inttype,false),
|
||||
ccallparanode.create(
|
||||
ctypeconvnode.create_internal(
|
||||
load_vmt_pointer_node,
|
||||
@ -643,11 +643,11 @@ implementation
|
||||
internalerror(200305106);
|
||||
end;
|
||||
|
||||
if withexceptblock then
|
||||
if withexceptblock and (current_structdef.typ=objectdef) then
|
||||
begin
|
||||
{ Generate the implicit "fail" code for a constructor (destroy
|
||||
in case an exception happened) }
|
||||
pd:=current_objectdef.find_destructor;
|
||||
pd:=tobjectdef(current_structdef).find_destructor;
|
||||
{ this will always be the case for classes, since tobject has
|
||||
a destructor }
|
||||
if assigned(pd) then
|
||||
|
||||
@ -642,12 +642,11 @@ interface
|
||||
|
||||
var
|
||||
current_structdef: tabstractrecorddef; { used for private functions check !! }
|
||||
current_objectdef : tobjectdef absolute current_structdef;
|
||||
current_genericdef : tabstractrecorddef; { used to reject declaration of generic class inside generic class }
|
||||
current_specializedef : tabstractrecorddef; { used to implement usage of generic class in itself }
|
||||
|
||||
{ default types }
|
||||
generrordef, { error in definition }
|
||||
generrordef, { error in definition }
|
||||
voidpointertype, { pointer for Void-pointeddef }
|
||||
charpointertype, { pointer for Char-pointeddef }
|
||||
widecharpointertype, { pointer for WideChar-pointeddef }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user