По полному имени обращаемся к внешнему идентификатору. Внутри модуля его имя неизвестно. Его самого ещё как бы нет. Даже технически - модуль только компилируется, откуда ему быть.
Ваша логика тоже понятна, и не менее логична, чем моя
Но к чему огород городить (в случае, если полная квалификация в языке обязательна). Тупее - так, как есть в Обероне. Тупее = меньше мест для каких-то потенциальных проблем.
Просто, когда есть возможность явно указывать имена, то не нужно изощраться с тем, чтобы имена нижнего уровня ни в коем случае не перекрывали имена верхнего. Это то, что я по наивности всегда считал ключевой фишкой паскаля.
Правило затемнения - отлично. Но при чём тут оно к возможности при этом обращаться к любому идентификатору по полному имени? Вы вспомните файловую систему. Краткое имя обращается к файлу в текущем каталоге, но кто мешает явно указать путь до родительского? В чём концептуальная проблема?
Вы про что вообще говорите: 1. Про свое ЛИЧНОЕ мироощущение 2. Общепринятые нормы 3. Ошибку в компиляторе Делфи(его несоответствие нормам Объектного Паскаля),
4. Несоответствие Объектного Паскаля общепринятым нормам.?
Я так понял (из исходного сообщения), что о п.3 и п.4 и ответил вам -т.е. не обнаружил ни ошибки ни разрыва в моем понимании Делфи и общих принципов (слава богу).
Я говорю про практику. Делфи, Free Pascal, Virtual Pascal как минимум поддерживают нотацию обращения к своему модулю. Но при этом они не поддерживают чуть более длинную нотацию, чтобы от имени своего модуля перейти к другим модулям: A.B.Const. Вот эта длинная нотация помогла бы решить проблему. Ну и в целом высказал пожелание, чтобы и к подпрограммам применить это правило и дать возможность ссылаться на Proc.Consts, указав, что отношение между подпрограммой и дочерней подпрограммой точно такие же, как между модулем и подпрограммами верхнего уровня.