From 7e923bbb742dfc1ce62eeefa849be10fd0241ca6 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 8 May 2022 13:44:13 +0200 Subject: [PATCH] #2659 --- TestSuite/interface6.pas | 19 +++++++++++++++++++ TreeConverter/SymbolTable/DSST/SymbolTable.cs | 6 ++---- 2 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 TestSuite/interface6.pas diff --git a/TestSuite/interface6.pas b/TestSuite/interface6.pas new file mode 100644 index 000000000..41e0bf308 --- /dev/null +++ b/TestSuite/interface6.pas @@ -0,0 +1,19 @@ +type + i1 = interface + + function GetHashCode(x: byte): byte; + + end; + + t1 = class(i1) + public function GetHashCode(x: byte) := x; + end; + +procedure p1(o: T); where T: I1; +begin + assert(o.GetHashCode(5) = 5); +end; + +begin + p1&(new t1); +end. \ No newline at end of file diff --git a/TreeConverter/SymbolTable/DSST/SymbolTable.cs b/TreeConverter/SymbolTable/DSST/SymbolTable.cs index 4fb930142..491d1f77e 100644 --- a/TreeConverter/SymbolTable/DSST/SymbolTable.cs +++ b/TreeConverter/SymbolTable/DSST/SymbolTable.cs @@ -1109,11 +1109,9 @@ namespace SymbolTable { FindAllInClass(Name, CurrentArea, OnlyInThisClass, Result); - if (Result.Count > 0) //если что-то нашли то заканчиваем - return Result; + //if (Result.Count > 0) //если что-то нашли то заканчиваем + // return Result; - //Зачем искать в интерфейсах? - //(ssyy) Не понимаю вопрос. Спросившему подумать, зачем в компиляторе нужен поиск. FindAllInAreaList(Name, (CurrentArea as IInterfaceScope).TopInterfaceScopeArray, true, Result); if (Result.Count > 0 || OnlyInType) //если что-то нашли то заканчиваем