Skip to content

Commit e097ab7

Browse files
committed
fix EvilBeaver#1626.2: корректное сообщение об ошибочном типе аргумента
1 parent 8de2f06 commit e097ab7

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-3
lines changed

src/ScriptEngine/Machine/Contexts/ContextValuesMarshaller.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,11 @@ private static object ConvertValueType(IValue value, Type type, IBslProcess proc
242242
valueObj = value.AsBoolean();
243243
}
244244
else if (typeof(IRuntimeContextInstance).IsAssignableFrom(type))
245-
{
246-
valueObj = value.AsObject();
245+
{
246+
if (value.GetType().IsAssignableTo(type))
247+
valueObj = value.AsObject();
248+
else
249+
throw new InvalidCastException();
247250
}
248251
else if (value is EnumerationValue && typeof(EnumerationValue).IsAssignableFrom(type))
249252
{

tests/valuetable.os

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,10 @@
7878
ВсеТесты.Добавить("ТестДолжен_ПроверитьЗапятуюВИменахКолонок_СПустыми");
7979
ВсеТесты.Добавить("ТестДолжен_ПроверитьИсключениеДляИндекса");
8080

81-
8281
ВсеТесты.Добавить("ТестДолжен_ВызватьИсключениеПриДобавленииКолонкиСНевернымИменем");
8382
ВсеТесты.Добавить("ТестДолжен_ВызватьИсключениеПриВставкеКолонкиСНевернымИменем");
83+
ВсеТесты.Добавить("ТестДолжен_ВызватьИсключениеНаПоискеИндексаКолонкиСНевернымПримитивнымТипом");
84+
ВсеТесты.Добавить("ТестДолжен_ВызватьИсключениеНаПоискеИндексаКолонкиСНевернымОбъектнымТипом");
8485

8586

8687
Возврат ВсеТесты;
@@ -1261,3 +1262,29 @@
12611262

12621263
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
12631264
КонецПроцедуры
1265+
1266+
Процедура ТестДолжен_ВызватьИсключениеНаПоискеИндексаКолонкиСНевернымПримитивнымТипом() Экспорт
1267+
ТЗ = Новый ТаблицаЗначений();
1268+
Попытка
1269+
ТЗ.Колонки.Индекс(0);
1270+
Исключение
1271+
Ошибка = ИнформацияОбОшибке().Описание;
1272+
юТест.ПроверитьНеРавенство(Найти(Ошибка,"Неверный тип аргумента"), 0, "Неверный вид ошибки: "+Ошибка);
1273+
Возврат;
1274+
КонецПопытки;
1275+
1276+
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
1277+
КонецПроцедуры
1278+
1279+
Процедура ТестДолжен_ВызватьИсключениеНаПоискеИндексаКолонкиСНевернымОбъектнымТипом() Экспорт
1280+
ТЗ = Новый ТаблицаЗначений();
1281+
Попытка
1282+
ТЗ.Колонки.Индекс(ТЗ);
1283+
Исключение
1284+
Ошибка = ИнформацияОбОшибке().Описание;
1285+
юТест.ПроверитьНеРавенство(Найти(Ошибка,"Неверный тип аргумента"), 0, "Неверный вид ошибки: "+Ошибка);
1286+
Возврат;
1287+
КонецПопытки;
1288+
1289+
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
1290+
КонецПроцедуры

0 commit comments

Comments
 (0)