OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 15 Декабрь, 2017 09:22

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: Пятница, 07 Июль, 2017 05:57 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8903
Откуда: Россия, Орёл
Тест:

Код:
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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 07 Июль, 2017 11:31 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 500
Откуда: Киев
Код:
PROCEDURE Fun (): [b]Obj;[/b]

С первого взгляда не понял, чем являются эти нововведния в языке.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 07 Июль, 2017 18:48 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8903
Откуда: Россия, Орёл
Да, форум жирности в [code] не понимает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 08 Июль, 2017 03:57 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 169
Откуда: Украина, Днепропетровская обл.
А интересно, что должен выделить NEW(obj), если obj имеет тип POINTER TO RECORD END ? Это же запись пустая, без данных.

Проверил в Ofront'е, но там нет типа ANYPTR, а с SYSTEM.PTR вместо него не проходит компиляцию. А в CPfront компиляцию проходит, так что там тот же баг. Но CPfront использует часть кода компилятора BlackBox.


Вложения:
Ofront.png
Ofront.png [ 60.24 КБ | Просмотров: 630 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 10 Июль, 2017 14:25 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8903
Откуда: Россия, Орёл
Насколько я помню, у тега типа будет size = 0, а уже менеджер памяти при выделении округлит размер блока в какую-то большую сторону.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 19 Июль, 2017 03:40 

Зарегистрирован: Четверг, 12 Июнь, 2008 17:30
Сообщения: 35
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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Июль, 2017 14:13 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1049
Откуда: СССР v2.0 rc 1
Размер покажет ноль. Но фактически объект будет иметь размер, так как:
1. Счётчик ссылок
2. Тип
3. Указатель на родителя.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2017, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB