mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 06:49:13 +02:00
* only abort due to a missing overload directive if there indeed was any procdef found (due to implicit specializations there might be none), fixes compilation of tests webtbs/tw38310b and webtbs/tw38310c
This commit is contained in:
parent
59672a6982
commit
b1d9d34665
@ -2441,6 +2441,7 @@ implementation
|
|||||||
srsym : tsym;
|
srsym : tsym;
|
||||||
checkstack : psymtablestackitem;
|
checkstack : psymtablestackitem;
|
||||||
hashedid : THashedIDString;
|
hashedid : THashedIDString;
|
||||||
|
foundanything,
|
||||||
hasoverload : boolean;
|
hasoverload : boolean;
|
||||||
begin
|
begin
|
||||||
{ we search all overloaded operator definitions in the symtablestack. The found
|
{ we search all overloaded operator definitions in the symtablestack. The found
|
||||||
@ -2491,8 +2492,9 @@ implementation
|
|||||||
begin
|
begin
|
||||||
{ add all definitions }
|
{ add all definitions }
|
||||||
hasoverload:=false;
|
hasoverload:=false;
|
||||||
|
foundanything:=false;
|
||||||
if tprocsym(srsym).could_be_implicitly_specialized then
|
if tprocsym(srsym).could_be_implicitly_specialized then
|
||||||
try_implicit_specialization(srsym,FParaNode,ProcdefOverloadList,FParaAnonSyms,tsym(FProcsym),hasoverload);
|
foundanything:=try_implicit_specialization(srsym,FParaNode,ProcdefOverloadList,FParaAnonSyms,tsym(FProcsym),hasoverload);
|
||||||
for j:=0 to tprocsym(srsym).ProcdefList.Count-1 do
|
for j:=0 to tprocsym(srsym).ProcdefList.Count-1 do
|
||||||
begin
|
begin
|
||||||
pd:=tprocdef(tprocsym(srsym).ProcdefList[j]);
|
pd:=tprocdef(tprocsym(srsym).ProcdefList[j]);
|
||||||
@ -2509,10 +2511,12 @@ implementation
|
|||||||
if po_overload in pd.procoptions then
|
if po_overload in pd.procoptions then
|
||||||
hasoverload:=true;
|
hasoverload:=true;
|
||||||
ProcdefOverloadList.Add(pd);
|
ProcdefOverloadList.Add(pd);
|
||||||
|
foundanything:=true;
|
||||||
end;
|
end;
|
||||||
{ when there is no explicit overload we stop searching,
|
{ when there is no explicit overload we stop searching,
|
||||||
except for Objective-C methods called via id }
|
except for Objective-C methods called via id }
|
||||||
if not hasoverload and
|
if foundanything and
|
||||||
|
not hasoverload and
|
||||||
not objcidcall then
|
not objcidcall then
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user