EvilBeaver / OneScript

Исполняющая среда скриптов на языке 1С
http://oscript.io
Mozilla Public License 2.0
480 stars 107 forks source link

Некорректная привязка номера строки в тексте ошибки к строке исполняемого кода #1429

Closed 240596448 closed 3 months ago

240596448 commented 3 months ago
Функция Тест(Значение)
    а = 1;
    Возврат Значение;
КонецФункции

Массив = Новый Массив();
Тест(Массив[0]);

Данный код выбрасывет ошибку не при передаче значений в функцию, а на строке возврата значения {Модуль ...\test.os / Ошибка в строке: 3 / Значение индекса выходит за пределы диапазона} (ожидается на строке вызова)

Если же добавить к параметру Знач Функция Тест(Знач Значение) то версия 2.Х выдает коректную строку ошибки {Модуль ...\test.os / Ошибка в строке: 7 / Значение индекса выходит за пределы диапазона}

а версии 1.Х выбрасывают исключение

System.ArgumentOutOfRangeException: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
   в System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   в OneScript.Language.LexicalAnalysis.SourceCodeIterator.GetCodeLine(Int32 lineNumber)
   в ScriptEngine.Machine.MachineInstance.SetScriptExceptionSource(RuntimeException exc)
   в ScriptEngine.Machine.MachineInstance.ExecuteCode()
   в ScriptEngine.Machine.MachineInstance.ExecuteModuleBody(IRunnable sdo)
   в ScriptEngine.Machine.Contexts.UserScriptContextInstance.OnInstanceCreation()
   в ScriptEngine.HostedScript.Process.Start()

Проверено на windows 2.0.0.471-rc4-28623755 1.9.1.7 и 1.8.4.54

EvilBeaver commented 3 months ago

Да, так всегда с первой версии работало, если не ошибаюсь. Ссылка разрешается в момент использования. Но по факту баг, конечно

EvilBeaver commented 3 months ago

@akpaevj это починено, верно понимаю?

akpaevj commented 3 months ago

@akpaevj это починено, верно понимаю?

Пока нет, не занимался