v8-code-style
v8-code-style copied to clipboard
strict-types: Проверка полного вхождения типа передаваемого параметра в коллекцию принимаемых типов параметра
Описание проблемы
На текущий момент есть проверка которая проверяет пересечение коллекции типов элемента передаваемого в параметр с коллекцией типов принимаемых параметров, одна подобная проверка пропускает подобные случаи:

Описание решения проблемы
Хотелось бы добавить проверку которая проверить что вся коллекция типов передаваемого в параметр элемента, входила в коллекцию типов параметра метода
Дополнительная информация
#Область Тест
// Данные.
//
// Возвращаемое значение:
// Массив из Строка, Число - Данные
Функция Данные() Экспорт
Результат = Новый Массив();
Результат.Добавить(1);
Результат.Добавить("Один");
Возврат Результат;
КонецФункции
// Действие.
//
// Параметры:
// Коллекция - см. Тест.Данные
Процедура Действие(Коллекция) Экспорт
Рез = 0;
Для Каждого Элемент Из Коллекция Цикл
// Хотелось бы видеть ошибки при попытке посчитать логарифм от строки
Рез = Рез + Log(Элемент);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
@sfaqer уточни, здесь речь про исключительно "просты типы" параметров и исключительно про стандартные функции глобального контекста? или про пользовательские тоже и про сложные (расширяемые) типы?
Имею ввиду, вот у нас есть метод, принимающий на вход "просто структуру", а мы ему передаем структуру с полями. или наоборот метод требует структуру с полями, а у нас абстрактная структура - на сколько уровней полей структуры проверять идентичность?
@marmyshev
@sfaqer уточни, здесь речь про исключительно "просты типы" параметров и исключительно про стандартные функции глобального контекста? или про пользовательские тоже и про сложные (расширяемые) типы?
Хотелось бы и для пользовательских конечно тоже, и про расширяемые типы.
Имею ввиду, вот у нас есть метод, принимающий на вход "просто структуру", а мы ему передаем структуру с полями. или наоборот метод требует структуру с полями, а у нас абстрактная структура - на сколько уровней полей структуры проверять идентичность?
Я думаю если метод принимает абстрактную структуру, то его должна устроить любая структура, с любым составом полей. Если у метод требует конкретную структуру а у нас абстрактная то я так понимаю нужно регистрировать ошибку, т.к мы хотим быть уверенны что то что мы передаём методу на самом деле безопасно, а если мы не знаем что мы передаём, такой уверенности нет. По поводу уровней вложенности, конечно хотелось бы контролировать полную глубину, но если такой возможности нет, либо это сильно ударить по перфомансу. я думаю контроля 3ёх уровней вложенности должно покрыть основные случаи.