OneScript icon indicating copy to clipboard operation
OneScript copied to clipboard

Несогласованное завершение Функции (Процедуры) по КонецПроцедуры (КонецФункции)

Open Mr-Rm opened this issue 3 years ago • 6 comments

Опишите ошибку Если последним оператором в Функции (Процедуре) является ключевое слово, то возможно её завершение несогласованным парным ключевым словом КонецПроцедуры (КонецФункции)

Воспроизведение ошибки

Процедура Проц1()
    Возврат
КонецФункции

Функция Функ1()
    Если Истина Тогда
        Возврат 0
    КонецЕсли
КонецПроцедуры

Процедура Проц2()
    Для й=0 по 1 Цикл
    // ...
    КонецЦикла
КонецФункции

и т.п. - компилируется, хотя не должно.

А так уже нормально, с ошибкой Ожидается символ: EndProcedure:

Процедура Проц3()
    Возврат;
КонецФункции

Ожидаемое поведение Должна всегда выдаваться ошибка для несогласованной пары ключевых слов

Дополнительная информация В сообщении "Ожидается символ: EndProcedure" ожидаемый символ (ключевое слово) всегда на английском языке

Mr-Rm avatar Jun 24 '22 09:06 Mr-Rm

Всё гораздо хуже

Процедура Проц4()
    Для й=0 по 1 Цикл
    КонецЦикла
ИначеЕсли

Функция Функ2()
    Если Истина Тогда
        Возврат 0
    КонецЕсли
КонецПопытки
Сообщить("Это тоже работает")

Mr-Rm avatar Jun 24 '22 09:06 Mr-Rm

И ещё баг в парсере

Процедура Проц3()
	Попытка
		Возврат
	Исключение
	КонецПопытки
КонецПроцедуры

Ошибка в строке: 4,12 / Процедуры не могут возвращать значение Исключение

В том числе и в v2

Mr-Rm avatar Jun 24 '22 10:06 Mr-Rm

А в 1.x тоже? Интересно, когда сломалось

EvilBeaver avatar Jun 24 '22 20:06 EvilBeaver

Сломалось на PR #608. И там в ревью было замечание на этот счёт.

Mr-Rm avatar Jun 25 '22 10:06 Mr-Rm

Тоже в парсере, косвенно связанное с обсуждаемым (не углубляясь в обработчики событий). Успешно компилируется:

Процедура Обработчик()
КонецПроцедуры

Если Истина Тогда 
	 ДобавитьОбработчик ЭтотОбъект.Событие ИначеЕсли ЭтотОбъект.Обработчик
КонецЕсли

Mr-Rm avatar Jun 25 '22 11:06 Mr-Rm

Сломалось на PR https://github.com/EvilBeaver/OneScript/pull/608. И там в ревью было замечание на этот счёт.

@dmpas смотри, как ты умеешь надежно ломать - пять лет никто не находил! 😏

EvilBeaver avatar Jun 28 '22 12:06 EvilBeaver

А влить PR#1181 для v1?

Mr-Rm avatar Aug 29 '22 10:08 Mr-Rm

Разве в v1 не влито???

EvilBeaver avatar Aug 29 '22 11:08 EvilBeaver

Да, был уверен, что мы это влили в 1.8... мой косяк

EvilBeaver avatar Aug 29 '22 11:08 EvilBeaver