diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\321\201\320\265\321\200\320\222\321\201\321\202\321\200\320\276\320\265\320\275\320\275\320\276\320\263\320\276\320\257\320\267\321\213\320\272\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\321\201\320\265\321\200\320\222\321\201\321\202\321\200\320\276\320\265\320\275\320\275\320\276\320\263\320\276\320\257\320\267\321\213\320\272\320\260.os" index db5b1fa..bbfd009 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\321\201\320\265\321\200\320\222\321\201\321\202\321\200\320\276\320\265\320\275\320\275\320\276\320\263\320\276\320\257\320\267\321\213\320\272\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\321\201\320\265\321\200\320\222\321\201\321\202\321\200\320\276\320\265\320\275\320\275\320\276\320\263\320\276\320\257\320\267\321\213\320\272\320\260.os" @@ -2529,8 +2529,15 @@ Имя = ""; Если Парсер_Токен = Токены.Идентификатор Тогда Имя = Парсер_Литерал; - СледующийТокен(); - Ожидать(Токены.ЗнакРавно); + Если СледующийТокен() <> Токены.ЗнакРавно Тогда + // параметр задан одним лишь именем: &Аннотация(ПростоИмя) + ПараметрАннотации = Парсер_Узлы.ПараметрАннотации.Добавить(); + ПараметрАннотации.Тип = Типы.ПараметрАннотации; + ПараметрАннотации.Имя = Имя; + ПараметрАннотации.Начало = Начало; + ПараметрАннотации.Конец = Парсер_ДанныеПредыдущегоТокена; + Возврат ПараметрАннотации; + КонецЕсли; СледующийТокен(); КонецЕсли; Если Парсер_Токен = Токены.Аннотация Тогда diff --git "a/tests/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\320\270.os" "b/tests/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\320\270.os" index eff219f..bb14489 100644 --- "a/tests/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\320\270.os" +++ "b/tests/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\320\270.os" @@ -101,6 +101,62 @@ КонецПроцедуры +&Тест +Процедура АннотацияСПараметромБезЗначения() Экспорт + + // Когда + + Модуль = Разобрать(" + |&Аннотация(ПростоИмя) + |Процедура ТестЧегоТо() Экспорт + |КонецПроцедуры"); + + // Тогда + + Параметр = ПерваяАннотацияМетода(Модуль).Параметры[0]; + + Ожидаем.Что(Параметр.Имя, "Имя параметра") + .Равно("ПростоИмя"); + + Ожидаем.Что(Параметр.Значение, "Значение параметра") + .ЭтоНеопределено(); + +КонецПроцедуры + +&Тест +Процедура АннотацияСоСмешаннымиПараметрами() Экспорт + + // Когда + + Модуль = Разобрать(" + |&Аннотация(ПростоИмя, ""значение"", Имя = 1) + |Процедура ТестЧегоТо() Экспорт + |КонецПроцедуры"); + + // Тогда + + Параметры = ПерваяАннотацияМетода(Модуль).Параметры; + + Ожидаем.Что(Параметры.Количество(), "Количество параметров") + .Равно(3); + + Ожидаем.Что(Параметры[0].Имя, "Имя первого параметра") + .Равно("ПростоИмя"); + + Ожидаем.Что(Параметры[0].Значение, "Значение первого параметра") + .ЭтоНеопределено(); + + Ожидаем.Что(Параметры[1].Литерал, "Значение второго параметра") + .Равно("значение"); + + Ожидаем.Что(Параметры[2].Имя, "Имя третьего параметра") + .Равно("Имя"); + + Ожидаем.Что(Параметры[2].Литерал, "Значение третьего параметра") + .Равно(1); + +КонецПроцедуры + &Тест Процедура АннотацияСВложеннойАннотацией() Экспорт