From dfaee4f04b1c2ec66e01978b3d2377685f366354 Mon Sep 17 00:00:00 2001 From: florian Date: Mon, 26 Oct 2020 20:58:24 +0000 Subject: [PATCH] * patch by Jan Bruns to solve an issue with the new overloading selection code, resolves #37969 git-svn-id: trunk@47211 - --- .gitattributes | 1 + compiler/htypechk.pas | 11 ++++++++--- tests/webtbs/tw37969.pp | 11 +++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 tests/webtbs/tw37969.pp diff --git a/.gitattributes b/.gitattributes index 984a22c556..9d1cf035d9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -18498,6 +18498,7 @@ tests/webtbs/tw37878.pp svneol=native#text/plain tests/webtbs/tw37926.pp svneol=native#text/pascal tests/webtbs/tw37949.pp svneol=native#text/pascal tests/webtbs/tw3796.pp svneol=native#text/plain +tests/webtbs/tw37969.pp svneol=native#text/pascal tests/webtbs/tw3805.pp svneol=native#text/plain tests/webtbs/tw3814.pp svneol=native#text/plain tests/webtbs/tw3827.pp svneol=native#text/plain diff --git a/compiler/htypechk.pas b/compiler/htypechk.pas index 38e2a4af74..a3a0b532d5 100644 --- a/compiler/htypechk.pas +++ b/compiler/htypechk.pas @@ -3691,7 +3691,7 @@ implementation end; { Setup the first procdef as best, only count it as a result when it is valid } - if FCandidateProcs^.invalid then + if besthpstart^.invalid then cntpd:=0 else cntpd:=1; @@ -3701,7 +3701,9 @@ implementation restart := decide_restart(hp,besthpstart); if not restart then begin - if not singlevariant then + if besthpstart^.invalid then res := 1 + else if hp^.invalid then res := -1 + else if not singlevariant then res:=is_better_candidate(hp,besthpstart) else res:=is_better_candidate_single_variant(hp,besthpstart); @@ -3721,7 +3723,10 @@ implementation end; { besthpstart is already set to hp } bestpd:=besthpstart^.data; - cntpd:=1; + if besthpstart^.invalid then + cntpd:=0 + else + cntpd:=1; end else if (res<0) then begin diff --git a/tests/webtbs/tw37969.pp b/tests/webtbs/tw37969.pp new file mode 100644 index 0000000000..a72304a7d5 --- /dev/null +++ b/tests/webtbs/tw37969.pp @@ -0,0 +1,11 @@ +{$mode objfpc} +program Project1; + +uses + sysutils; +var + aValue: variant; + s: String; +begin + s := Trim( aValue ); +end.