Skip to content
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

Переопределение функций глобального контекста #1354

Open
Mr-Rm opened this issue Sep 27, 2023 · 11 comments

Comments

@Mr-Rm
Copy link
Collaborator

Mr-Rm commented Sep 27, 2023

Опишите ошибку
Допускается переопределение функций глобального контекста

Воспроизведение ошибки

Функция СтрНайти(знач Стр1, знач Стр2)
	Возврат -1;
КонецФункции

Рез = СтрНайти("Ай!", "!");
Если Рез < 0 Тогда
	Сообщить("Ой!");
КонецЕсли	

Ой!

Ожидаемое поведение
Ошибка в строке: 1,17 / Метод с таким именем уже определен: СтрНайти
при компиляции

Окружение

  • Версия: v1.8.4, v2

Дополнительная информация
Для встроенных функций будет ошибка, но непонятная

Функция СтрДлина(знач Стр1)
	Возврат 0;
КонецФункции

Ошибка в строке: 1,17 / Ожидается идентификатор

@nixel2007
Copy link
Collaborator

А это не фича?

@Mr-Rm
Copy link
Collaborator Author

Mr-Rm commented Sep 27, 2023

Тоже был вопрос "баг или фича?"
В платформе не предусмотрено. Выглядит небезопасно, и никаких предупреждений нет.
Почему СтрНайти можно переопределять, а СтрДлина - нельзя?
Глобальная функция экранируется полностью, ничего подобного ::СтрНайти нет.

@dmpas
Copy link
Collaborator

dmpas commented Sep 27, 2023

А это не фича?

я бы зафичил это. Но как-нибудь в духе @override, например

&Переопределить или &ПереопределитьГлобально (счастливой отладки!)
Функция СтрНайти()
КонецФункции

@Mr-Rm
Copy link
Collaborator Author

Mr-Rm commented Sep 27, 2023

&Вместо ?

@EvilBeaver
Copy link
Owner

Очень странно, кажется стек видимости должен был это проверять. Это баг однозначно. Возможно когда-то давно я это сломал

@Mr-Rm
Copy link
Collaborator Author

Mr-Rm commented Oct 24, 2023

При исправлении падает Осень: модуль (класс) autumn\src\internal\Классы\ЗапускательПриложения.os содержит процедуру ЗапуститьПриложение(), которая есть в глобальном.

@nixel2007
Copy link
Collaborator

Оу. Косяк. Это внутренний класс, так что его можно исправить без последствий для клиентов

@nixel2007
Copy link
Collaborator

Вот только кажется, что эта же процедура есть и в Поделка. А вот она уже публичная

@nixel2007
Copy link
Collaborator

Без волшебной аннотации, да?

@nixel2007
Copy link
Collaborator

@EvilBeaver закрылся ишуз от текста коммита

@EvilBeaver EvilBeaver reopened this Dec 9, 2023
@EvilBeaver EvilBeaver removed this from the v2.0-RC4 milestone Jan 20, 2024
Mr-Rm pushed a commit to Mr-Rm/OneScript that referenced this issue Apr 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants