Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions src/Классы/ПарсерВстроенногоЯзыка.os
Original file line number Diff line number Diff line change
Expand Up @@ -2529,8 +2529,15 @@
Имя = "";
Если Парсер_Токен = Токены.Идентификатор Тогда
Имя = Парсер_Литерал;
СледующийТокен();
Ожидать(Токены.ЗнакРавно);
Если СледующийТокен() <> Токены.ЗнакРавно Тогда
// параметр задан одним лишь именем: &Аннотация(ПростоИмя)
ПараметрАннотации = Парсер_Узлы.ПараметрАннотации.Добавить();
ПараметрАннотации.Тип = Типы.ПараметрАннотации;
ПараметрАннотации.Имя = Имя;
ПараметрАннотации.Начало = Начало;
ПараметрАннотации.Конец = Парсер_ДанныеПредыдущегоТокена;
Возврат ПараметрАннотации;
КонецЕсли;
СледующийТокен();
КонецЕсли;
Если Парсер_Токен = Токены.Аннотация Тогда
Expand Down
56 changes: 56 additions & 0 deletions tests/Аннотации.os
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,62 @@

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

&Тест
Процедура АннотацияСПараметромБезЗначения() Экспорт

// Когда

Модуль = Разобрать("
|&Аннотация(ПростоИмя)
|Процедура ТестЧегоТо() Экспорт
|КонецПроцедуры");

// Тогда

Параметр = ПерваяАннотацияМетода(Модуль).Параметры[0];

Ожидаем.Что(Параметр.Имя, "Имя параметра")
.Равно("ПростоИмя");

Ожидаем.Что(Параметр.Значение, "Значение параметра")
.ЭтоНеопределено();

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

&Тест
Процедура АннотацияСоСмешаннымиПараметрами() Экспорт

// Когда

Модуль = Разобрать("
|&Аннотация(ПростоИмя, ""значение"", Имя = 1)
|Процедура ТестЧегоТо() Экспорт
|КонецПроцедуры");

// Тогда

Параметры = ПерваяАннотацияМетода(Модуль).Параметры;

Ожидаем.Что(Параметры.Количество(), "Количество параметров")
.Равно(3);

Ожидаем.Что(Параметры[0].Имя, "Имя первого параметра")
.Равно("ПростоИмя");

Ожидаем.Что(Параметры[0].Значение, "Значение первого параметра")
.ЭтоНеопределено();

Ожидаем.Что(Параметры[1].Литерал, "Значение второго параметра")
.Равно("значение");

Ожидаем.Что(Параметры[2].Имя, "Имя третьего параметра")
.Равно("Имя");

Ожидаем.Что(Параметры[2].Литерал, "Значение третьего параметра")
.Равно(1);

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

&Тест
Процедура АннотацияСВложеннойАннотацией() Экспорт

Expand Down
Loading