Skip to content

Commit

Permalink
Merge pull request #1482 from Mr-Rm/v2/class-def-params
Browse files Browse the repository at this point in the history
v2: дефолтные значения  в конструкторе сценария +тест
  • Loading branch information
EvilBeaver authored Jan 2, 2025
2 parents 5a45a40 + d4aaf34 commit 71ccd4f
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 4 deletions.
15 changes: 13 additions & 2 deletions src/ScriptEngine/Machine/Contexts/UserScriptContextInstance.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ protected override void OnInstanceCreation()

base.OnInstanceCreation();
var methId = GetScriptMethod(OnInstanceCreationTerms.Russian, OnInstanceCreationTerms.English);
int constructorParamsCount = ConstructorParams.Count();
int constructorParamsCount = ConstructorParams.Length;

if (methId > -1)
{
Expand All @@ -83,7 +83,18 @@ protected override void OnInstanceCreation()
else if (parameters.Skip(constructorParamsCount).Any(param => !param.HasDefaultValue))
throw RuntimeException.TooFewArgumentsPassed();

CallScriptMethod(methId, ConstructorParams);
if (constructorParamsCount < procParamsCount)
{
var ctorParameters = new IValue[procParamsCount];
ConstructorParams.CopyTo(ctorParameters, 0);
for (int i = constructorParamsCount; i < procParamsCount; i++)
{
ctorParameters[i] = (IValue)parameters[i].DefaultValue;
}
CallScriptMethod(methId, ctorParameters);
}
else
CallScriptMethod(methId, ConstructorParams);
}
else
{
Expand Down
9 changes: 7 additions & 2 deletions tests/native-lib/test-native-use.os
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
Тесты.Добавить("ТестДолжен_ПроверитьВызовМетодовСПропущеннымиПараметрами");
Тесты.Добавить("ТестДолжен_ПроверитьВызовМетодовСОшибочноПропущеннымиПараметрами");
Тесты.Добавить("ТестДолжен_ПроверитьВызовМетодовСЛишнимиПараметрами");

Тесты.Добавить("ТестДолжен_ПроверитьВызовКонструктораСПараметрамиПоУмолчанию");

Возврат Тесты;

КонецФункции
Expand Down Expand Up @@ -86,4 +87,8 @@
КонецПопытки;

юТест.ПроверитьИстину(ОК, "Не было исключения о лишнем параметре."+Ошибка);
КонецПроцедуры
КонецПроцедуры

Процедура ТестДолжен_ПроверитьВызовКонструктораСПараметрамиПоУмолчанию() Экспорт
Сценарий = Новый ПараметрыКонструктораПоУмолчанию("Парам1");
КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#native

Процедура ПриСозданииОбъекта(Параметр1, Параметр2="Парам2")

КонецПроцедуры

0 comments on commit 71ccd4f

Please sign in to comment.