|
@@ -22060,7 +22060,9 @@ begin
|
|
begin
|
|
begin
|
|
if IsBaseType(FromResolved.LoTypeEl,btPointer) then
|
|
if IsBaseType(FromResolved.LoTypeEl,btPointer) then
|
|
Result:=cExact; // untyped pointer to class instance
|
|
Result:=cExact; // untyped pointer to class instance
|
|
- end;
|
|
|
|
|
|
+ end
|
|
|
|
+ else if FromResolved.BaseType=btNil then
|
|
|
|
+ Result:=cExact; // nil to class or interface
|
|
end
|
|
end
|
|
else if C=TPasClassOfType then
|
|
else if C=TPasClassOfType then
|
|
begin
|
|
begin
|
|
@@ -22081,7 +22083,9 @@ begin
|
|
begin
|
|
begin
|
|
if IsBaseType(FromResolved.LoTypeEl,btPointer) then
|
|
if IsBaseType(FromResolved.LoTypeEl,btPointer) then
|
|
Result:=cExact; // untyped pointer to class-of
|
|
Result:=cExact; // untyped pointer to class-of
|
|
- end;
|
|
|
|
|
|
+ end
|
|
|
|
+ else if FromResolved.BaseType=btNil then
|
|
|
|
+ Result:=cExact; // nil to class-of
|
|
end
|
|
end
|
|
else if C=TPasRecordType then
|
|
else if C=TPasRecordType then
|
|
begin
|
|
begin
|
|
@@ -22112,7 +22116,12 @@ begin
|
|
begin
|
|
begin
|
|
if IsDynArray(ToResolved.LoTypeEl)
|
|
if IsDynArray(ToResolved.LoTypeEl)
|
|
and IsBaseType(FromResolved.LoTypeEl,btPointer) then
|
|
and IsBaseType(FromResolved.LoTypeEl,btPointer) then
|
|
- Result:=cExact; // untyped pointer to dynnamic array
|
|
|
|
|
|
+ Result:=cExact; // untyped pointer to dynamic array
|
|
|
|
+ end
|
|
|
|
+ else if FromResolved.BaseType=btNil then
|
|
|
|
+ begin
|
|
|
|
+ if IsDynArray(ToResolved.LoTypeEl) then
|
|
|
|
+ Result:=cExact; // nil to dynamic array
|
|
end;
|
|
end;
|
|
end
|
|
end
|
|
else if (C=TPasProcedureType) or (C=TPasFunctionType) then
|
|
else if (C=TPasProcedureType) or (C=TPasFunctionType) then
|
|
@@ -22214,7 +22223,10 @@ begin
|
|
else
|
|
else
|
|
Result:=cCompatible;
|
|
Result:=cCompatible;
|
|
end;
|
|
end;
|
|
- end;
|
|
|
|
|
|
+ end
|
|
|
|
+ else if FromResolved.BaseType=btNil then
|
|
|
|
+ // typecast nil to procedure type
|
|
|
|
+ Result:=cExact;
|
|
end
|
|
end
|
|
else if C=TPasPointerType then
|
|
else if C=TPasPointerType then
|
|
begin
|
|
begin
|