Переопределение функций глобального контекста
Опишите ошибку Допускается переопределение функций глобального контекста
Воспроизведение ошибки
Функция СтрНайти(знач Стр1, знач Стр2)
Возврат -1;
КонецФункции
Рез = СтрНайти("Ай!", "!");
Если Рез < 0 Тогда
Сообщить("Ой!");
КонецЕсли
Ой!
Ожидаемое поведение Ошибка в строке: 1,17 / Метод с таким именем уже определен: СтрНайти при компиляции
Окружение
- Версия: v1.8.4, v2
Дополнительная информация Для встроенных функций будет ошибка, но непонятная
Функция СтрДлина(знач Стр1)
Возврат 0;
КонецФункции
Ошибка в строке: 1,17 / Ожидается идентификатор
А это не фича?
Тоже был вопрос "баг или фича?"
В платформе не предусмотрено. Выглядит небезопасно, и никаких предупреждений нет.
Почему СтрНайти можно переопределять, а СтрДлина - нельзя?
Глобальная функция экранируется полностью, ничего подобного ::СтрНайти нет.
А это не фича?
я бы зафичил это. Но как-нибудь в духе @override, например
&Переопределить или &ПереопределитьГлобально (счастливой отладки!)
Функция СтрНайти()
КонецФункции
&Вместо ?
Очень странно, кажется стек видимости должен был это проверять. Это баг однозначно. Возможно когда-то давно я это сломал
При исправлении падает Осень: модуль (класс) autumn\src\internal\Классы\ЗапускательПриложения.os содержит процедуру ЗапуститьПриложение(), которая есть в глобальном.
Оу. Косяк. Это внутренний класс, так что его можно исправить без последствий для клиентов
Вот только кажется, что эта же процедура есть и в Поделка. А вот она уже публичная
https://github.com/autumn-library/autumn/blob/master/src/%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D1%8B/%D0%9F%D0%BE%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0.os#L271
Без волшебной аннотации, да?
@EvilBeaver закрылся ишуз от текста коммита