This commit is contained in:
Ivan Bondarev 2022-05-08 13:44:13 +02:00
parent 60e650be99
commit 7e923bbb74
2 changed files with 21 additions and 4 deletions

19
TestSuite/interface6.pas Normal file
View file

@ -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<T>(o: T); where T: I1;
begin
assert(o.GetHashCode(5) = 5);
end;
begin
p1&<I1>(new t1);
end.

View file

@ -1109,11 +1109,9 @@ namespace SymbolTable
{ {
FindAllInClass(Name, CurrentArea, OnlyInThisClass, Result); FindAllInClass(Name, CurrentArea, OnlyInThisClass, Result);
if (Result.Count > 0) //если что-то нашли то заканчиваем //if (Result.Count > 0) //если что-то нашли то заканчиваем
return Result; // return Result;
//Зачем искать в интерфейсах?
//(ssyy) Не понимаю вопрос. Спросившему подумать, зачем в компиляторе нужен поиск.
FindAllInAreaList(Name, (CurrentArea as IInterfaceScope).TopInterfaceScopeArray, true, Result); FindAllInAreaList(Name, (CurrentArea as IInterfaceScope).TopInterfaceScopeArray, true, Result);
if (Result.Count > 0 || OnlyInType) //если что-то нашли то заканчиваем if (Result.Count > 0 || OnlyInType) //если что-то нашли то заканчиваем