OberonCore
https://forum.oberoncore.ru/

Особенность WITH - предупреждение при компиляции
https://forum.oberoncore.ru/viewtopic.php?f=2&t=3959
Страница 2 из 2

Автор:  Илья Ермаков [ Суббота, 12 Май, 2012 08:02 ]
Заголовок сообщения:  Re: Особенность WITH - предупреждение при компиляции

Ну да. На практике WITH и применяется обычно в паре с полиморфным VAR RECORD, а не с указателем.

Автор:  Info21 [ Суббота, 12 Май, 2012 13:01 ]
Заголовок сообщения:  Re: Особенность WITH - предупреждение при компиляции

В общем, проблема достаточно маргинальная и давно понятая.
А какой латратус.
Раз в год приходит новый пассионарий -- и начинается ... Опять сто двадцать пять.

Автор:  Иван Денисов [ Воскресенье, 13 Май, 2012 18:40 ]
Заголовок сообщения:  Re: Особенность WITH - предупреждение при компиляции

ИМХО «Опять сто двадцать пять» — это тоже «Опять сто двадцать пять».

Автор:  QWERTYProgrammer [ Воскресенье, 13 Май, 2012 19:06 ]
Заголовок сообщения:  Re: Особенность WITH - предупреждение при компиляции

Насколько я понял, 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), то "опасный" код компилироваться не будет. (Предупреждение: сам ничего не проверял).

Автор:  Info21 [ Воскресенье, 13 Май, 2012 19:24 ]
Заголовок сообщения:  Re: Особенность WITH - предупреждение при компиляции

Латратус всё равно латратус.

Автор:  Роман М. [ Воскресенье, 13 Май, 2012 23:14 ]
Заголовок сообщения:  Re: Особенность WITH - предупреждение при компиляции

Info21 писал(а):
В общем, проблема достаточно маргинальная и давно понятая.
А какой латратус.
Раз в год приходит новый пассионарий -- и начинается ... Опять сто двадцать пять.

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

Автор:  Info21 [ Воскресенье, 13 Май, 2012 23:40 ]
Заголовок сообщения:  Re: Особенность WITH - предупреждение при компиляции

Роман М. писал(а):
Я правильно уловил мысль?
Нет, не правильно.

Автор:  Евгений Темиргалеев [ Четверг, 17 Май, 2012 12:38 ]
Заголовок сообщения:  Re: Особенность WITH - предупреждение при компиляции

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))
  ...

Автор:  QWERTYProgrammer [ Воскресенье, 20 Май, 2012 16:35 ]
Заголовок сообщения:  Re: Особенность WITH - предупреждение при компиляции

Попробовал пример из диссертации Шиперски в A2. Пример компилируется без ошибок или предупреждений. При выполнении комманды выдается трап Type guard failed.

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/