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

[BUG] Неверное определение приоритета операторов встроенного языка #3349

Open
berlinsky-nk opened this issue Oct 3, 2024 · 4 comments
Labels
component/diagnostics Доработка / создание диагностики type/FP False positive

Comments

@berlinsky-nk
Copy link

Версия
Language 1C (BSL) v1.27.2 (VSCode)

Описание ошибки диагностики
Неверное определение приоритета операторов встроенного языка: = имеет больший приоритет, чем Не.
image

Пример кода

	Если Не БезопасныйРежим() = Ложь Тогда
		УстановитьОтключениеБезопасногоРежима(Истина);
	КонецЕсли;

Скриншоты
image

Дополнительная информация
https://its.1c.ru/db/v836doc#bookmark:dev:TI000000146

@berlinsky-nk berlinsky-nk added the type/bug Something isn't working label Oct 3, 2024
@nixel2007
Copy link
Member

Проверка ругается не на "не безопасныйрежим()", а на сравнение с ложью как таковое. Я вообще не уверен, что она производит вычисление дерева выражения, а не просто ищет булев литерал слева или справа от равно. В любом случае, спасибо, это фп. (и в очередной раз спасибо 1с за бомбический api)

@nixel2007 nixel2007 added component/diagnostics Доработка / создание диагностики type/FP False positive and removed type/bug Something isn't working labels Oct 4, 2024
@berlinsky-nk
Copy link
Author

Исходя из формулировки замечания, диагностика как раз предлагает нам сравниваться с булево, что в примере и делается, а до знака равно она как будто даже не дошла, и до «ложь» тем более.

@berlinsky-nk
Copy link
Author

Т.е. это не про «не сравнивайте булево с ложь/истина», а про «не используйте не_булево как логическое выражение»

@nixel2007
Copy link
Member

Да, потому что диагностика не подозревает, что БезопасныйРежим может вернуть строку. приоритеты унарного "не" проверить тоже стоит. Но опять же, я не уверен, что там есть расчёт выражения, а не обычное шагание по дереву разбора/токенам

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/diagnostics Доработка / создание диагностики type/FP False positive
Projects
None yet
Development

No branches or pull requests

2 participants