Изучая книгу Compiler Construction обратил внимание, на методы работы с процедурами OpenScope и CloseScope в парсере языка Oberon-0. Оттуда следовало, что в процедуре можно описать переменную, совпадающую с именем самой процедуры. Попробовал написать тестовый примерчик, скомпилировалось, более того, можно описывать переменную, совпадающую с именем модуля, внутри модуля.
## Код:
```
MODULE TestMod3;

   VAR TestMod3: INTEGER;
   
   PROCEDURE ProcName*;
   VAR ProcName: PROCEDURE;
   BEGIN
      ProcName;
   END ProcName;

END TestMod3.
```


Так было задумано в описании языка?
Или это просто особенность реализации конкретного компилятора? (Если это так, то я бы назвал это багом)