tests for bug List<T> IndexOf

This commit is contained in:
miks1965 2018-05-07 14:21:01 +03:00
parent 449563bc1b
commit 59e1bfc8bc
7 changed files with 33 additions and 6 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3"; public const string Major = "3";
public const string Minor = "3"; public const string Minor = "3";
public const string Build = "5"; public const string Build = "5";
public const string Revision = "1662"; public const string Revision = "1663";
public const string MainVersion = Major + "." + Minor; public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%MINOR%=3
%REVISION%=1662
%COREVERSION%=5 %COREVERSION%=5
%REVISION%=1663
%MINOR%=3
%MAJOR%=3 %MAJOR%=3

View file

@ -1 +1 @@
!define VERSION '3.3.5.1662' !define VERSION '3.3.5.1663'

View file

@ -0,0 +1,12 @@
type
MyList<T> = class(List<T>)
public
end;
begin
var l := new MyList<integer>;
l.Add(3);
l.Add(3);
l.Add(7);
Assert(l.IndexOf(7)=2);
end.

View file

@ -0,0 +1,13 @@
type
Student = class
name: string;
end;
MyList<T> = class(List<T>)
public
end;
begin
var l := new MyList<Student>;
l.Add(new Student);
Assert(l.IndexOf(l[0])=0);
end.

View file

@ -1684,11 +1684,13 @@ namespace PascalABCCompiler.TreeRealization
MethodInfo mi = instmeths[num];*/ MethodInfo mi = instmeths[num];*/
// SSM 2018.05.05 bug fix #664
var mdtok = cfn.method_info.MetadataToken; var mdtok = cfn.method_info.MetadataToken;
MethodInfo[] instmeths = ((compiled_type_node)inst_type)._compiled_type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | MethodInfo[] instmeths = ((compiled_type_node)inst_type)._compiled_type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Static | BindingFlags.Instance); BindingFlags.Static | BindingFlags.Instance);
MethodInfo mi = System.Array.Find(instmeths, m => m.MetadataToken == mdtok); MethodInfo mi = System.Array.Find(instmeths, m => m.MetadataToken == mdtok);
// SSM 2018.05.05 end bug fix #664
return compiled_function_node.get_compiled_method(mi); return compiled_function_node.get_compiled_method(mi);
} }

View file

@ -1943,8 +1943,8 @@ namespace PascalABCCompiler.TreeRealization
{ {
List<SymbolInfo> sil = Scope.FindOnlyInType(name, CurrentScope);//:=,create,x List<SymbolInfo> sil = Scope.FindOnlyInType(name, CurrentScope);//:=,create,x
// SSM test!!! // SSM 2018.04.05
if (base_type is compiled_generic_instance_type_node /*&& name == "IndexOf"*/) if (base_type is compiled_generic_instance_type_node)
{ {
//sil = (base_type as compiled_generic_instance_type_node).original_generic.find_in_type(name, CurrentScope); //sil = (base_type as compiled_generic_instance_type_node).original_generic.find_in_type(name, CurrentScope);
return sil; return sil;