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

Аннотация после #Область - Недопустимые символы в директиве #1087

Closed
asosnoviy opened this issue Jun 1, 2021 · 9 comments

Comments

@asosnoviy
Copy link

Опишите ошибку
Если первый метод в Области содержит аннотацию то получаем ошибку
Недопустимые символы в директиве

#Область Первая

&Аннотация
Процедура Метод()

КонецПроцедуры

#КонецОбласти

Окружение

  • ОС: Microsoft Windows [Version 10.0.19042.985]
  • Версия: 1.6.0.213
@asosnoviy asosnoviy changed the title Аннотация после #Область Аннотация после #Область - Недопустимые символы в директиве Jun 1, 2021
@asosnoviy
Copy link
Author

отработает нормально

#Область Первая

Процедура Метод2()

КонецПроцедуры


&Аннотация
Процедура Метод()

КонецПроцедуры

#КонецОбласти

@Mr-Rm
Copy link
Collaborator

Mr-Rm commented Jun 4, 2021

Сломалось при исправлении препроцессора.
Быстрая заплатка есть, но надо бы дополнительно уточнить синтаксис аннотаций.
Аннотация сейчас - лексема из двух слитных токенов (причина ошибки), поэтому

& Аннотация
Процедура Метод()
КонецПроцедуры

– не компилируется. Но при этом допускается создание безымянных аннотаций, в том числе с параметрами:

& ("Параметр") // ок
Процедура Метод2()
КонецПроцедуры

Должна ли каждая аннотация начинаться на новой строке?
Должны ли параметры аннотаций располагаться полностью на той же строке, что и её имя?
Сейчас разрешаются одинаковые имена аннотаций для одного объекта или одинаковые имена параметров для одной аннотации. Это правильно?

На странице https://oscript.io/docs/page/annotations есть ошибки

@nixel2007
Copy link
Collaborator

Должна ли каждая аннотация начинаться на новой строке?

Нет.

Должны ли параметры аннотаций располагаться полностью на той же строке, что и её имя?

Не хотелось бы иметь такое ограничение.

Сейчас разрешаются одинаковые имена аннотаций для одного объекта или одинаковые имена параметров для одной аннотации. Это правильно?

Первое - да, нормально. Второе - не уверен, что правильно , но такое поведение может быть полезно для параметров-массивов. @dmpas?

@nixel2007
Copy link
Collaborator

Но при этом допускается создание безымянных аннотаций, в том числе с параметрами:

А вот это странно... Кажется, это какое-то не запланированное поведение

@dmpas
Copy link
Collaborator

dmpas commented Jun 4, 2021

Сейчас разрешаются одинаковые имена аннотаций для одного объекта или одинаковые имена параметров для одной аннотации. Это правильно?

такое поведение было заложено, да. Насчёт "правильно" - тут хз, нет на это "правила" ни у нас, ни у Мамки

@EvilBeaver
Copy link
Owner

Множественные аннотации должны быть, мы их закладывали

@Mr-Rm
Copy link
Collaborator

Mr-Rm commented Jun 7, 2021

Отложим пока множественные имена. Надо определиться с работой лексера.
Сейчас имя аннотации (если оно есть!) должно быть строго слитно с предшествующим '&'.
С другой стороны, компилируется следующее:

&Аннотация1
&("Параметр")
&&
&Аннотация2 & Процедура Метод() 
КонецПроцедуры 

В результате имеем у Метода 6 аннотаций с именами: "Аннотация1", "(", "&", Символы.ПС, "Аннотация2", " " (пробел).
Поменяв местами 2-ю и 3-ю строку, получаем ошибку:
Модуль G:\OneScript\issue1087.os / Ошибка в строке: 3,13 / Неизвестная операция}
&("Параметр")

В аналогичных конструкциях 1С допускает пробельные символы:

& НаКлиенте
// или даже на новой строке:
&
НаКлиенте

@nixel2007
Copy link
Collaborator

Аннотаций без имён точно не должно быть.
А вот в чем проблема с пробелами я не совсем понимаю.

@EvilBeaver
Copy link
Owner

EvilBeaver commented Jun 8, 2021

Нет, между & и именем аннотации не должно быть пробелов, на мой взгляд. Хотя, если в 1С так, наверное из соображений совместимости нам тоже надо бы так сделать. А вот аннотации && и &() - это баги, это не несет смысла.

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

5 participants