|  | @@ -1598,19 +1598,19 @@ implementation
 | 
	
		
			
				|  |  |                CGMessage3(type_e_operator_not_supported_for_types,node2opstr(nodetype),ld.typename,rd.typename);
 | 
	
		
			
				|  |  |            end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -         { class or interface equation }
 | 
	
		
			
				|  |  | -         else if is_class_or_interface_or_dispinterface_or_objc(rd) or is_class_or_interface_or_dispinterface_or_objc(ld) then
 | 
	
		
			
				|  |  | +         { implicit pointer object type comparison }
 | 
	
		
			
				|  |  | +         else if is_implicit_pointer_object_type(rd) or is_implicit_pointer_object_type(ld) then
 | 
	
		
			
				|  |  |            begin
 | 
	
		
			
				|  |  |              if (nodetype in [equaln,unequaln]) then
 | 
	
		
			
				|  |  |                begin
 | 
	
		
			
				|  |  | -                if is_class_or_interface_or_dispinterface_or_objc(rd) and is_class_or_interface_or_dispinterface_or_objc(ld) then
 | 
	
		
			
				|  |  | +                if is_implicit_pointer_object_type(rd) and is_implicit_pointer_object_type(ld) then
 | 
	
		
			
				|  |  |                   begin
 | 
	
		
			
				|  |  |                     if tobjectdef(rd).is_related(tobjectdef(ld)) then
 | 
	
		
			
				|  |  |                      inserttypeconv(right,left.resultdef)
 | 
	
		
			
				|  |  |                     else
 | 
	
		
			
				|  |  |                      inserttypeconv(left,right.resultdef);
 | 
	
		
			
				|  |  |                   end
 | 
	
		
			
				|  |  | -                else if is_class_or_interface_or_dispinterface_or_objc(rd) then
 | 
	
		
			
				|  |  | +                else if is_implicit_pointer_object_type(rd) then
 | 
	
		
			
				|  |  |                    inserttypeconv(left,right.resultdef)
 | 
	
		
			
				|  |  |                  else
 | 
	
		
			
				|  |  |                    inserttypeconv(right,left.resultdef);
 | 
	
	
		
			
				|  | @@ -1633,8 +1633,8 @@ implementation
 | 
	
		
			
				|  |  |                CGMessage3(type_e_operator_not_supported_for_types,node2opstr(nodetype),ld.typename,rd.typename);
 | 
	
		
			
				|  |  |            end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -         { allows comperasion with nil pointer }
 | 
	
		
			
				|  |  | -         else if is_class_or_interface_or_dispinterface_or_objc(rd) or (rd.typ=classrefdef) then
 | 
	
		
			
				|  |  | +         { allow comparison with nil pointer }
 | 
	
		
			
				|  |  | +         else if is_implicit_pointer_object_type(rd) or (rd.typ=classrefdef) then
 | 
	
		
			
				|  |  |            begin
 | 
	
		
			
				|  |  |              if (nodetype in [equaln,unequaln]) then
 | 
	
		
			
				|  |  |                inserttypeconv(left,right.resultdef)
 | 
	
	
		
			
				|  | @@ -1642,7 +1642,7 @@ implementation
 | 
	
		
			
				|  |  |                CGMessage3(type_e_operator_not_supported_for_types,node2opstr(nodetype),ld.typename,rd.typename);
 | 
	
		
			
				|  |  |            end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -         else if is_class_or_interface_or_dispinterface_or_objc(ld) or (ld.typ=classrefdef) then
 | 
	
		
			
				|  |  | +         else if is_implicit_pointer_object_type(ld) or (ld.typ=classrefdef) then
 | 
	
		
			
				|  |  |            begin
 | 
	
		
			
				|  |  |              if (nodetype in [equaln,unequaln]) then
 | 
	
		
			
				|  |  |                inserttypeconv(right,left.resultdef)
 | 
	
	
		
			
				|  | @@ -2710,7 +2710,7 @@ implementation
 | 
	
		
			
				|  |  |                  expectloc:=LOC_FLAGS;
 | 
	
		
			
				|  |  |             end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -         else if is_class_or_interface_or_dispinterface_or_objc(ld) then
 | 
	
		
			
				|  |  | +         else if is_implicit_pointer_object_type(ld) then
 | 
	
		
			
				|  |  |              begin
 | 
	
		
			
				|  |  |                expectloc:=LOC_FLAGS;
 | 
	
		
			
				|  |  |              end
 |