New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
При использовании строгой типизации IDE не сигнализтрует о неправильных типах аргументов при вызове функции/процедуры #913
Comments
Не знаю как быть со структурами. На мой взгляд нужно проверять наличие всех ключей (и правильность типов значений), определённых в описании аргумента вызываемой процедуры/функции. |
Я тоже думал на эту тему. Но тут не всё так просто! Вот у тебя есть процедура (экспортная!!!) которая принимает на вход общую структуру без описания полей, универсально обрабатывает и передаёт ее дальше в другу процедуру в которой уже описаны поля. Проконтролировать поля структуры уже будет невозможно т.к. тип общий на входе первой экспортной процедуры без полей, а выше по стеку возможно всё правильно даже сформировано... но в этом месте мы об этом не узнаем... Получается довольно жесткая, и немного бесполезная диагностика проблемы которой может и не быть на самом деле. Короче, я на такую не решился сразу, но надо ещё раз обдумать. Есть аргументы ещё за или против проверки полей типа (Структура, ТЗ, Массив итд)? |
Мне кажется надо исходить из философии строгой типизации. Если её философия избавляться от неожиданностей в рантайме, когда мы передаем не тот объект, под который разрабатывали функцию, то сценарий когда мы общую структуру передаем в функцию, ожидающую на вход конкретную структуру, не подойдёт, т. к. можем в рантайме словить, как минимум, ошибку "поле объекта не обнаружено", а может и не словим явной ошибки, но логика приложения не отработает так как нужно и будут более неприятные последствия. |
Правда не хорошо привязываться к БСП |
Если мы передаем структуру, то нужно жестко проверять что структура создана той же функцией конструктором, что и в указанном параметре. Иначе выдавать ошибку. |
#913 Исправлен расчет типов для вызова метода с учетом док.комментов
Описание ошибки
Если я включаю в модуле режим строгой типизации, то при вызове процедур/функций ide не проверяет соответствие типов передаваемых аргументов
Как воспроизвести
Скриншоты
Ожидаемое поведение
IDE выдаёт предупреждение, а лучше ошибку в месте передачи в функцию/процедуру объекта неправильного типа.
Лог рабочей области
Версия 1С:Code style V8
0.2.0.114
Версия 1С:EDT
2021.2.12, 2021.3.0
Операционная система
Linux
Дополнительная информация
No response
The text was updated successfully, but these errors were encountered: