OberonCore https://forum.oberoncore.ru/ |
|
Ошибка компилятора: семантика IN https://forum.oberoncore.ru/viewtopic.php?f=131&t=3919 |
Страница 1 из 1 |
Автор: | Илья Ермаков [ Вторник, 03 Апрель, 2012 09:43 ] |
Заголовок сообщения: | Ошибка компилятора: семантика IN |
Вот это работает, хотя должно давать ошибку на этапе компиляции: Код: MODULE Test;
TYPE A = RECORD x: INTEGER END; PROCEDURE (VAR a: A) SetX (x: INTEGER), NEW; BEGIN a.x := x END SetX; PROCEDURE SetX (IN a: A); BEGIN a.SetX(1000) END SetX; PROCEDURE DoSetX*; VAR a: A; BEGIN SetX(a); HALT(0) END DoSetX; END Test. |
Автор: | Александр Ильин [ Вторник, 03 Апрель, 2012 10:48 ] |
Заголовок сообщения: | Re: Ошибка компилятора: семантика IN |
Илья Ермаков писал(а): Вот это работает, хотя должно давать ошибку на этапе компиляции Не вижу проблемы. В чём по-вашему ошибка?Неужели у IN-рекордов нельзя вызывать методы? |
Автор: | Евгений Темиргалеев [ Вторник, 03 Апрель, 2012 11:36 ] |
Заголовок сообщения: | Re: Ошибка компилятора: семантика IN |
Код: MODULE Test;
TYPE A = RECORD x: INTEGER END; PROCEDURE (VAR a: A) Set2 (x: INTEGER), NEW; BEGIN a.x := x END Set2; PROCEDURE (IN a: A) Set1 (x: INTEGER), NEW; BEGIN a.Set2(x) (* нет ошибки *) END Set1; PROCEDURE Set2 (VAR a: A; x: INTEGER); BEGIN a.x := x END Set2; PROCEDURE Set1 (IN a: A; x: INTEGER); BEGIN Set2(a(* X = this variable (field) is read only *), x) END Set1; END Test. |
Автор: | Александр Ильин [ Вторник, 03 Апрель, 2012 13:03 ] |
Заголовок сообщения: | Re: Ошибка компилятора: семантика IN |
Евгений Темиргалеев писал(а): Set2(a(* X = this variable (field) is read only *), x) Так гораздо понятнее, спасибо!INconsistency. |
Автор: | Oleg N. Cher [ Пятница, 28 Февраль, 2014 18:59 ] |
Заголовок сообщения: | Re: Ошибка компилятора: семантика IN |
Исправление предложено Wening Luo в рассылке по ББ сегодня: Эта ошибка не исправлена в BB 1.6. Думаю, все сборки ББ должны включать этот фикс: https://github.com/Oleg-N-Cher/BB-XDev/commit/d4418a62f2d5321ca91f5df0eb8a948470f77c50 |
Автор: | Пётр Кушнир [ Пятница, 28 Февраль, 2014 19:13 ] |
Заголовок сообщения: | Re: Ошибка компилятора: семантика IN |
Непонятно поведение расширенных записей, если вызвать .Set у скрытой реализации, то отслеживание ошибки должно быть еще и в рантайме. Ну и в целом, я же специально написал этот метод, чтобы менять скрытую переменную, в чем проблема? |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |