diff --git a/compiler/defutil.pas b/compiler/defutil.pas index 087fb3683f..979e8428ae 100644 --- a/compiler/defutil.pas +++ b/compiler/defutil.pas @@ -979,7 +979,7 @@ implementation end; objectdef : begin - if is_class_or_interface_or_objc(def) then + if is_class_or_interface_or_dispinterface_or_objc(def) then result := OS_ADDR else result:=int_cgsize(def.size); diff --git a/compiler/htypechk.pas b/compiler/htypechk.pas index eba113d8db..ca791bab78 100644 --- a/compiler/htypechk.pas +++ b/compiler/htypechk.pas @@ -219,7 +219,7 @@ implementation pointerdef : begin if ((rd.typ in [orddef,enumdef,pointerdef,classrefdef,procvardef]) or - is_class_or_interface_or_objc(rd)) then + is_class_or_interface_or_dispinterface_or_objc(rd)) then begin allowed:=false; exit; @@ -850,7 +850,7 @@ implementation end; subscriptn : begin - if is_class_or_interface_or_objc(tunarynode(p).left.resultdef) then + if is_class_or_interface_or_dispinterface_or_objc(tunarynode(p).left.resultdef) then newstate := vs_read; p:=tunarynode(p).left; end; @@ -1004,7 +1004,7 @@ implementation pointerdef : gotpointer:=true; objectdef : - gotclass:=is_class_or_interface_or_objc(hp.resultdef); + gotclass:=is_class_or_interface_or_dispinterface_or_objc(hp.resultdef); recorddef : gotrecord:=true; classrefdef : @@ -1121,7 +1121,7 @@ implementation pointerdef : gotpointer:=true; objectdef : - gotclass:=is_class_or_interface_or_objc(hp.resultdef); + gotclass:=is_class_or_interface_or_dispinterface_or_objc(hp.resultdef); classrefdef : gotclass:=true; arraydef : @@ -1218,7 +1218,7 @@ implementation { a class/interface access is an implicit } { dereferencing } hp:=tsubscriptnode(hp).left; - if is_class_or_interface_or_objc(hp.resultdef) then + if is_class_or_interface_or_dispinterface_or_objc(hp.resultdef) then gotderef:=true; end; muln, @@ -1307,7 +1307,7 @@ implementation pointerdef : gotpointer:=true; objectdef : - gotclass:=is_class_or_interface_or_objc(hp.resultdef); + gotclass:=is_class_or_interface_or_dispinterface_or_objc(hp.resultdef); recorddef, { handle record like class it needs a subscription } classrefdef : gotclass:=true; diff --git a/compiler/nadd.pas b/compiler/nadd.pas index d602510b09..8456f9bbd9 100644 --- a/compiler/nadd.pas +++ b/compiler/nadd.pas @@ -2704,7 +2704,7 @@ implementation expectloc:=LOC_FLAGS; end - else if is_class_or_interface_or_objc(ld) then + else if is_class_or_interface_or_dispinterface_or_objc(ld) then begin expectloc:=LOC_FLAGS; end diff --git a/compiler/ncgmem.pas b/compiler/ncgmem.pas index 2dfa1fbcbd..5bda795c87 100644 --- a/compiler/ncgmem.pas +++ b/compiler/ncgmem.pas @@ -291,7 +291,7 @@ implementation exit; paraloc1.init; { classes and interfaces must be dereferenced implicitly } - if is_class_or_interface_or_objc(left.resultdef) then + if is_class_or_interface_or_dispinterface_or_objc(left.resultdef) then begin { the contents of a class are aligned to a sizeof(pointer) } location_reset_ref(location,LOC_REFERENCE,def_cgsize(resultdef),sizeof(pint)); diff --git a/compiler/nmem.pas b/compiler/nmem.pas index a5be4173f1..7ca1a34753 100644 --- a/compiler/nmem.pas +++ b/compiler/nmem.pas @@ -649,7 +649,7 @@ implementation exit; { classes must be dereferenced implicitly } - if is_class_or_interface_or_objc(left.resultdef) then + if is_class_or_interface_or_dispinterface_or_objc(left.resultdef) then expectloc:=LOC_REFERENCE else begin diff --git a/compiler/nutils.pas b/compiler/nutils.pas index 8a0fbde2ea..6b2c0c3b54 100644 --- a/compiler/nutils.pas +++ b/compiler/nutils.pas @@ -668,7 +668,7 @@ implementation end; subscriptn: begin - if is_class_or_interface_or_objc(tunarynode(p).left.resultdef) then + if is_class_or_interface_or_dispinterface_or_objc(tunarynode(p).left.resultdef) then inc(result,2); if (result = NODE_COMPLEXITY_INF) then exit; diff --git a/compiler/pstatmnt.pas b/compiler/pstatmnt.pas index b9c479454e..974ab4857e 100644 --- a/compiler/pstatmnt.pas +++ b/compiler/pstatmnt.pas @@ -603,7 +603,7 @@ implementation typecheckpass(p); end; { classes and interfaces have implicit dereferencing } - hasimplicitderef:=is_class_or_interface_or_objc(p.resultdef) or + hasimplicitderef:=is_class_or_interface_or_dispinterface_or_objc(p.resultdef) or (p.resultdef.typ = classrefdef); if hasimplicitderef then hdef:=p.resultdef diff --git a/compiler/ptconst.pas b/compiler/ptconst.pas index 46a11f5ba5..e601319ae8 100644 --- a/compiler/ptconst.pas +++ b/compiler/ptconst.pas @@ -1223,7 +1223,7 @@ implementation end; { only allow nil for class and interface } - if is_class_or_interface_or_objc(def) then + if is_class_or_interface_or_dispinterface_or_objc(def) then begin n:=comp_expr(true); if n.nodetype<>niln then diff --git a/compiler/symdef.pas b/compiler/symdef.pas index c70eb3d99b..c281ea8868 100644 --- a/compiler/symdef.pas +++ b/compiler/symdef.pas @@ -1148,7 +1148,7 @@ implementation procvardef : is_intregable:=not(po_methodpointer in tprocvardef(self).procoptions); objectdef: - is_intregable:=(is_class_or_interface_or_objc(self)) and not needs_inittable; + is_intregable:=(is_class_or_interface_or_dispinterface_or_objc(self)) and not needs_inittable; setdef: is_intregable:=is_smallset(self); recorddef: