Skip to content

Commit a745eeb

Browse files
authored
Merge pull request sfaqer#4 from sfaqer/bugfix/annotationsWithLineBreak
Исправлена ошибка парсинга в случае если в аннотациях встречался перевод строки
2 parents c073386 + 04b3f62 commit a745eeb

File tree

4 files changed

+17
-9
lines changed

4 files changed

+17
-9
lines changed

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Описание.Имя("lambdas")
2-
.Версия("0.3.1")
2+
.Версия("0.3.2")
33
.Автор("Кирилл Черненко")
44
.АдресАвтора("https://github.com/sfaqer")
55
.Описание("API для реализации функциональных интерфейсов для OneScript")

src/internal/Модули/ЛямбдыКешируемыеЗначения.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
Если ЭтоЛямбдаВыражение = Неопределено Тогда
99

1010
ЭтоЛямбдаВыражение = Новый РегулярноеВыражение(
11-
"(.*)->\s*([\s\S]*)"
11+
"((?:\s|\S)*?)->\s*([\s\S]*)"
1212
);
1313

1414
КонецЕсли;

src/internal/Модули/ПарсерЛямбдаВыражений.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
Продолжить;
5656
КонецЕсли;
5757

58-
Если Токен = " " Тогда
58+
Если Токен = " " Или Токен = Символы.ПС Тогда
5959
Этап = "";
6060
РазбираемыеАннотации.Добавить(Аннотация);
6161
Продолжить;

tests/ЛямбдаВыражение.os

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -446,11 +446,17 @@
446446

447447
// Дано
448448
ЛямбдаВыражение = Новый ЛямбдаВыражение(
449-
"&АннотацияБезПараметра &Аннотация('20200101') &Аннотация(Значение = Истина, Параметра = 1) " +
450-
"(&АннотацияБезПараметра x, &Аннотация(Значение = ""С двумя"", Параметра = ""ми"") y, " +
451-
"&АннотацияБезПараметра &Аннотация(""с одним параметром"") " +
452-
"&Аннотация(Значение = ""С двумя"", Параметра = ""ми"") z) " +
453-
"-> a = x+y+z"
449+
"&АннотацияБезПараметра
450+
|&Аннотация('20200101')
451+
|&Аннотация(Значение = Истина, Параметра = 1)
452+
|(
453+
| &АннотацияБезПараметра x,
454+
| &Аннотация(Значение = ""С двумя"", Параметра = ""ми"") y,
455+
| &АннотацияБезПараметра &Аннотация(""с одним параметром"")
456+
| &Аннотация(Значение = ""С двумя"", Параметра = ""ми"")
457+
| z
458+
|) ->
459+
| Возврат x+y+z"
454460
);
455461

456462
// Когда
@@ -460,7 +466,7 @@
460466

461467
Методы = Рефлектор.ПолучитьТаблицуМетодов(Объект);
462468

463-
Метод = Методы.Найти("Принять", "Имя");
469+
Метод = Методы.Найти("Применить", "Имя");
464470

465471
Ожидаем.Что(Метод).Существует();
466472

@@ -535,6 +541,8 @@
535541
Ожидаем.Что(Аннотация.Параметры[1].Имя).Равно("Параметра");
536542
Ожидаем.Что(Аннотация.Параметры[1].Значение).Равно("ми");
537543

544+
Ожидаем.Что(Объект.Применить(1, 2, 3)).Равно(6);
545+
538546
КонецПроцедуры
539547

540548
&Тест

0 commit comments

Comments
 (0)