This commit is contained in:
Mikhalkovich Stanislav 2019-05-30 06:56:22 +03:00
parent 4d72da78b0
commit a73085a953
6 changed files with 18 additions and 12 deletions

View file

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

View file

@ -1,4 +1,4 @@
%MINOR%=5
%REVISION%=2069
%REVISION%=2075
%COREVERSION%=0
%MAJOR%=3

View file

@ -1 +1 @@
!define VERSION '3.5.0.2069'
!define VERSION '3.5.0.2075'

View file

@ -1318,6 +1318,13 @@ type
public
constructor(params l: array of AnimationBase) := ll := Lst(l);
constructor(l: List<AnimationBase>) := ll := l;
function Clone: AnimationBase; override;
begin
var r := new CompositeAnimation(new List<AnimationBase>());
for var i := 0 to ll.Count-1 do
r.ll.Add(ll[i].Clone);
Result := r;
end;
end;
GroupAnimation = class(CompositeAnimation)
@ -1376,7 +1383,7 @@ type
// lf надо в любом случае клонировать
// Клонируем. Надо еще списки клонировать! А то в a+a во втором списке последний элемент - клонированный - в обоих списках!
lf := lf.Clone;
//lf := lf.Clone;
llf[lli] := lf;
lf.Completed += procedure ->
begin

View file

@ -813,13 +813,12 @@ namespace PascalABCCompiler.TreeRealization
static bool not_contains_type(type_node right, type_node left) // вызывать только если left - generic parameter
{
System.Diagnostics.Debug.Assert(left.is_generic_parameter); // вроде рекурсивно не надо просматривать right т.к. это обрезается другой проверкой - один из типов должен быть t1<T>
if (!right.is_generic_type_instance)
return false;
for (int i = 0; i < right.instance_params.Count; i++)
{
if (right.instance_params[i] == left)
return false;
}
if (right.is_generic_type_instance)
for (int i = 0; i < right.instance_params.Count; i++)
{
if (right.instance_params[i] == left)
return false;
}
return true;
}
public static bool is_type_or_original_generics_equal(type_node left, type_node right)
@ -840,7 +839,7 @@ namespace PascalABCCompiler.TreeRealization
return true;
}
if (left.is_generic_parameter) // SSM 29.05.19 надо проверять, что right не содержит T
return not_contains_type(right, left);
return not_contains_type(right, left); // нет, другие тесты падают
//return true;
if (left.type_special_kind == SemanticTree.type_special_kind.set_type && right == SystemLibrary.SystemLibInitializer.TypedSetType.sym_info
|| right.type_special_kind == SemanticTree.type_special_kind.set_type && left == SystemLibrary.SystemLibInitializer.TypedSetType.sym_info)