This commit is contained in:
parent
2593ba23ce
commit
969d463b01
|
|
@ -1,3 +1,3 @@
|
|||
begin
|
||||
var a := 1;
|
||||
var a := 1
|
||||
end.
|
||||
18
TestSuite/errors/err0398.pas
Normal file
18
TestSuite/errors/err0398.pas
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
var i: integer;
|
||||
|
||||
type
|
||||
I1<T>=interface
|
||||
procedure p1;
|
||||
end;
|
||||
C1<T>=class(I1<T>)
|
||||
|
||||
public procedure I1<T>.p1(i: integer);
|
||||
begin
|
||||
i := 1;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
begin
|
||||
|
||||
end.
|
||||
27
TestSuite/explicitinterface7.pas
Normal file
27
TestSuite/explicitinterface7.pas
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
var i: integer;
|
||||
|
||||
type
|
||||
I1<T>=interface
|
||||
procedure p1;
|
||||
end;
|
||||
|
||||
C1<T>=class(I1<T>)//Класс C1<T> не реализует метод p1 интерфейса I1<T>
|
||||
|
||||
public procedure I1<T>.p1;
|
||||
begin
|
||||
i := 1;
|
||||
end;
|
||||
public procedure p1;
|
||||
begin
|
||||
i := 2;
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
var ii: I1<integer> := new C1<integer>;
|
||||
var o := new C1<integer>;
|
||||
ii.p1;
|
||||
assert(i = 1);
|
||||
o.p1;
|
||||
assert(i = 2);
|
||||
end.
|
||||
23
TestSuite/explicitinterface8.pas
Normal file
23
TestSuite/explicitinterface8.pas
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
uses System;
|
||||
var i: integer;
|
||||
|
||||
type
|
||||
|
||||
C1<T>=class(IComparable<T>)//Класс C1<T> не реализует метод p1 интерфейса I1<T>
|
||||
|
||||
public function IComparable<T>.CompareTo(item: T): integer;
|
||||
begin
|
||||
Result := 1;
|
||||
end;
|
||||
public function CompareTo(item: T): integer;
|
||||
begin
|
||||
Result := -1;
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
var ii: IComparable<integer> := new C1<integer>;
|
||||
var o := new C1<integer>;
|
||||
assert(ii.CompareTo(1) = 1);
|
||||
assert(o.CompareTo(1) = -1);
|
||||
end.
|
||||
|
|
@ -2758,7 +2758,13 @@ namespace PascalABCCompiler.TreeConverter
|
|||
if (meth is compiled_function_node)
|
||||
tmp_si = cnode.find_in_type((meth as compiled_function_node).cont_type.BaseFullName + "." + meth.name, cnode.Scope);
|
||||
else if (meth is common_method_node)
|
||||
tmp_si = cnode.find_in_type((meth as common_method_node).cont_type.BaseFullName + "." + meth.name, cnode.Scope);
|
||||
{
|
||||
string base_type_name = (meth as common_method_node).cont_type.BaseFullName;
|
||||
if (base_type_name != null && (meth as common_method_node).cont_type.original_generic != null && base_type_name.IndexOf('<') != -1)
|
||||
base_type_name = (meth as common_method_node).cont_type.original_generic.BaseFullName;
|
||||
tmp_si = cnode.find_in_type(base_type_name + "." + meth.name, cnode.Scope);
|
||||
}
|
||||
|
||||
if (tmp_si != null)
|
||||
{
|
||||
/*Зачем это?
|
||||
|
|
|
|||
Loading…
Reference in a new issue