diff --git a/compiler/pgenutil.pas b/compiler/pgenutil.pas index a7f08b8b7a..129f8a15df 100644 --- a/compiler/pgenutil.pas +++ b/compiler/pgenutil.pas @@ -1335,7 +1335,7 @@ uses begin for k:=0 to callerparams.count-1 do begin - if tsym(callerparams[k]).typ=typesym then + if (tsym(callerparams[k]).typ=typesym) and (sp_generic_unnamed_type in ttypesym(callerparams[k]).symoptions) then ttypesym(callerparams[k]).typedef.typesym:=nil; end; end; diff --git a/tests/webtbs/tw41007.pp b/tests/webtbs/tw41007.pp new file mode 100644 index 0000000000..9f66e02188 --- /dev/null +++ b/tests/webtbs/tw41007.pp @@ -0,0 +1,23 @@ +{ %NORUN } + +program tw41007; + +{$mode delphi} +{$modeswitch implicitfunctionspecialization} + +uses + uw41007; + + procedure Test(A: string; B: string); overload; + begin + end; + + procedure Test; overload; + begin + + end; + +begin + Test('aa', 'bb'); +end. + diff --git a/tests/webtbs/uw41007.pp b/tests/webtbs/uw41007.pp new file mode 100644 index 0000000000..a093e23ed4 --- /dev/null +++ b/tests/webtbs/uw41007.pp @@ -0,0 +1,17 @@ +unit uw41007; + +{$mode delphi} + +interface + +procedure Test(A: T); overload; + +implementation + +procedure Test(A: T); +begin + +end; + +end. +