OberonCore https://forum.oberoncore.ru/ |
|
Баг компилятора - передача в VAR-параметр не-lvalue. https://forum.oberoncore.ru/viewtopic.php?f=127&t=6081 |
Страница 1 из 1 |
Автор: | Илья Ермаков [ Пятница, 07 Июль, 2017 05:57 ] |
Заголовок сообщения: | Баг компилятора - передача в VAR-параметр не-lvalue. |
Тест: Код: MODULE Test; TYPE Obj = POINTER TO RECORD END; PROCEDURE Fun (): ANYPTR; VAR obj: Obj; BEGIN NEW(obj); RETURN obj END Fun; PROCEDURE Proc (VAR p: Obj); BEGIN p := NIL END Proc; PROCEDURE Do*; BEGIN Proc(Fun()(Obj)) END Do; END Test. (!)Test.Do Компилятор пропускает. При выполнении TRAP: illegal instruction: E850C08DH А вот так уже компилятор отсекает: Код: MODULE Test;
TYPE Obj = POINTER TO RECORD END; PROCEDURE Fun (): [b]Obj;[/b] VAR obj: Obj; BEGIN NEW(obj); RETURN obj END Fun; PROCEDURE Proc (VAR p: Obj); BEGIN p := NIL END Proc; PROCEDURE Do*; BEGIN Proc(Fun()(Obj)) END Do; END Test. (!)Test.Do |
Автор: | Comdiv [ Пятница, 07 Июль, 2017 11:31 ] |
Заголовок сообщения: | Re: Баг компилятора - передача в VAR-параметр не-lvalue. |
Код: PROCEDURE Fun (): [b]Obj;[/b] С первого взгляда не понял, чем являются эти нововведния в языке. |
Автор: | Илья Ермаков [ Пятница, 07 Июль, 2017 18:48 ] |
Заголовок сообщения: | Re: Баг компилятора - передача в VAR-параметр не-lvalue. |
Да, форум жирности в [code] не понимает. |
Автор: | Илья Ермаков [ Понедельник, 10 Июль, 2017 14:25 ] |
Заголовок сообщения: | Re: Баг компилятора - передача в VAR-параметр не-lvalue. |
Насколько я помню, у тега типа будет size = 0, а уже менеджер памяти при выделении округлит размер блока в какую-то большую сторону. |
Автор: | maliya [ Среда, 19 Июль, 2017 03:40 ] |
Заголовок сообщения: | Re: Баг компилятора - передача в VAR-параметр не-lvalue. |
I have posted this issue to the bbCenter, a fixup is out https://forum.blackboxframework.org/viewtopic.php?f=40&t=645 welcome check and feedback. luowy |
Автор: | prospero78 [ Понедельник, 31 Июль, 2017 14:13 ] |
Заголовок сообщения: | Re: Баг компилятора - передача в VAR-параметр не-lvalue. |
Размер покажет ноль. Но фактически объект будет иметь размер, так как: 1. Счётчик ссылок 2. Тип 3. Указатель на родителя. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |