This commit is contained in:
Mikhalkovich Stanislav 2024-04-29 23:02:34 +03:00
parent 8e6ebc1f28
commit 99845ad152
7 changed files with 24 additions and 13 deletions

View file

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

View file

@ -1,4 +1,4 @@
%MINOR%=9
%REVISION%=3463
%REVISION%=3467
%COREVERSION%=0
%MAJOR%=3

View file

@ -1 +1 @@
3.9.0.3463
3.9.0.3467

View file

@ -1 +1 @@
!define VERSION '3.9.0.3463'
!define VERSION '3.9.0.3467'

View file

@ -2741,7 +2741,7 @@ begin
ColoredMessage($'Неверно составлен тест! Несоответствие типов входных данных в тесте и основном запуске. Возможно, неверно заполнен InputList в GenerateTestData');
end;
end;
// Для задачника надо вызывать процедуру __FinalizeModule__ из модуля PT4 jnhf;tybtv, а в модуле PT4 эту процедуру тогда не вызывть
// Для задачника надо вызывать процедуру __FinalizeModule__ из модуля PT4 отражением, а в модуле PT4 эту процедуру тогда не вызывть
// Для задачника в CheckTaskPT надо сказать, что проверяется задача из задачника. И выводить на экран ничего не надо - только в базу.
TaskResultInfo := TaskException.Info;

View file

@ -2258,20 +2258,31 @@ namespace PascalABCCompiler.TreeConverter
//TODO: Здесь нужно поправить, если создавать возможность вызова метода с параметрами по умолчанию из откомпилированной dll.
if (parameters.Count == fn.parameters.Count)
{
function_node func = null;
if ((func = is_exist_eq_method_in_list(fn, set_of_possible_functions)) != null)
function_node fm = null;
if ((fm = is_exist_eq_method_in_list(fn, set_of_possible_functions)) != null)
{
if (!eq_type_nodes(fn.return_value_type, func.return_value_type))
if (!eq_type_nodes(fn.return_value_type, fm.return_value_type))
{
set_of_possible_functions[set_of_possible_functions.IndexOf(func)] = fn;
set_of_possible_functions[set_of_possible_functions.IndexOf(fm)] = fn;
}
continue;
}
else if ((func = find_eq_method_in_list(fn, set_of_possible_functions)) != null)
else if ((fm = find_eq_method_in_list(fn, set_of_possible_functions)) != null)
{
if (!(fn is compiled_function_node cfn && func is compiled_function_node cfn2 && (cfn.polymorphic_state == polymorphic_state.ps_static || cfn2.polymorphic_state == polymorphic_state.ps_static)))
set_of_possible_functions.Add(fn);
// SSM 29/04/24 - небольшой рефакторинг для большей понятности
if (fn is compiled_function_node cfnfn && fm is compiled_function_node cfnfm && (cfnfn.polymorphic_state == polymorphic_state.ps_static || cfnfm.polymorphic_state == polymorphic_state.ps_static))
{
}
// SSM 29/04/24 - добавил такое же условие что и в предыдущей ветке
else if (fn is compiled_function_node cfnfn1 && fm is compiled_function_node cfnfm1
&& ! (cfnfn1.comperehensive_type.IsInterface || cfnfm1.comperehensive_type.IsInterface)// для интерфейсов обрабатывается ниже
&& cfnfn1.comperehensive_type != cfnfm1.comperehensive_type)
{
// пропускается такая же функция, но из предка!
}
else set_of_possible_functions.Add(fn);
}
else
set_of_possible_functions.Add(fn);

View file

@ -2741,7 +2741,7 @@ begin
ColoredMessage($'Неверно составлен тест! Несоответствие типов входных данных в тесте и основном запуске. Возможно, неверно заполнен InputList в GenerateTestData');
end;
end;
// Для задачника надо вызывать процедуру __FinalizeModule__ из модуля PT4 jnhf;tybtv, а в модуле PT4 эту процедуру тогда не вызывть
// Для задачника надо вызывать процедуру __FinalizeModule__ из модуля PT4 отражением, а в модуле PT4 эту процедуру тогда не вызывть
// Для задачника в CheckTaskPT надо сказать, что проверяется задача из задачника. И выводить на экран ничего не надо - только в базу.
TaskResultInfo := TaskException.Info;