OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 19 Июль, 2018 16:12

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




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Суббота, 12 Май, 2012 08:02 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8958
Откуда: Россия, Орёл
Ну да. На практике WITH и применяется обычно в паре с полиморфным VAR RECORD, а не с указателем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 12 Май, 2012 13:01 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7834
Откуда: Троицк, Москва
В общем, проблема достаточно маргинальная и давно понятая.
А какой латратус.
Раз в год приходит новый пассионарий -- и начинается ... Опять сто двадцать пять.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 13 Май, 2012 18:40 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2105
Откуда: Красноярск
ИМХО «Опять сто двадцать пять» — это тоже «Опять сто двадцать пять».


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 13 Май, 2012 19:06 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 229
Насколько я понял, Kemet утверждает, что проблема не в WITH, а в другом месте.
А именно, предупреждение 302
Цитата:
List of Oberon Error Numbers
...
3. Warnings
...
302 guarded variable can be side-effected
...

должно бы выдаваться при компиляции обсуждаемого кода: Dev/Mod/CPP.mod, но не выдается, т.к. предупереждения с отрицательными номерами > -700 игнорируются в Dev/Mod/CPM.mod. Соответственно, если подправить код в CPP.mod (-302 -> 302), то "опасный" код компилироваться не будет. (Предупреждение: сам ничего не проверял).


Последний раз редактировалось QWERTYProgrammer Понедельник, 14 Май, 2012 00:57, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 13 Май, 2012 19:24 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7834
Откуда: Троицк, Москва
Латратус всё равно латратус.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 13 Май, 2012 23:14 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Info21 писал(а):
В общем, проблема достаточно маргинальная и давно понятая.
А какой латратус.
Раз в год приходит новый пассионарий -- и начинается ... Опять сто двадцать пять.

Выходит, на данную уязвимость компилятора не нужно обращать внимания, потому что это маловероятный случай и на практике почти не встречается. Я правильно уловил мысль?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 13 Май, 2012 23:40 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7834
Откуда: Троицк, Москва
Роман М. писал(а):
Я правильно уловил мысль?
Нет, не правильно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 17 Май, 2012 12:38 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4485
Откуда: Россия, Орёл
viewtopic.php?p=72598#p72598
Info21 писал(а):
Возникнет ли проблема в такой конструкции:
viewtopic.php?p=72641#p72641
Илья Ермаков писал(а):
На практике WITH и применяется обычно в паре с полиморфным VAR RECORD, а не с указателем.
В этом случае приведение получится вынесением в процедуры.
Код:
PROCEDURE HandleType1 (VAR msg: Type1);
PROCEDURE HandleType2 (VAR msg: Type2);

PROCEDURE HandleMsg (VAR msg: ANYREC);
BEGIN
  IF msg IS Type1 THEN HandleType1(msg(Type1))
  ELSIF msg IS Type2 THEN HandleType2(msg(Type2))
  ...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 20 Май, 2012 16:35 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 229
Попробовал пример из диссертации Шиперски в A2. Пример компилируется без ошибок или предупреждений. При выполнении комманды выдается трап Type guard failed.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2

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


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

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


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

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