Не нашел в репорте ни слова про возможность/невозможность рекурсивного описания:
Репорт здесь ни причем. Невозможность рекурсивного описания я ввел, чтобы не допускать такие объявления:
CONST c = c;
TYPE A = ARRAY 10 OF A;
TYPE R = RECORD x: R END;
VAR v: v;
такое объявление:
TYPE P = POINTER TO RECORD x: P END;
можно заменить на
TYPE P = POINTER TO R; R = RECORD x: P END;
а об этом:
TYPE P = PROCEDURE(): P;
я просто не подумал
Вообще же, в репорте много неясностей. Например, если следовать репорту, то:
TYPE
P1 = POINTER TO R1;
P2 = POINTER TO R2;
R1 = RECORD ... END;
R2 = RECORD (R1) ... END;
VAR a: P1; b: P2;
a := b; (*запрещено*)
TYPE
p1 = PROCEDURE;
p2 = PROCEDURE;
VAR a: p1; b: p2;
a := b; (*запрещено*)
хотя в репорте Oberon-2 (и в реализации Oberon-07 Astrobe) эти присваивания разрешены (что вполне логично).