я опять в тягостных раздумьях. по специфике компилятора получается забавное: вычислять константы и актуализировать типы можно лениво. но нужно ли?

то есть: если у нас есть `CONST SomethingSomething = AnotherSomething * 69;`, а само `AnotherSomething` отсутствует — то компилятор вычислит константу только в момент её использования. а если нигде не используется — то и не станет, ему не надо.

то же самое с `MyPtr = POINTER TO YetUnknownStruct`: если нигде переменная типа `MyPtr` не объявлена — то и `YetUnknownStruct` может не быть — кому не всё равно?

чтобы этого избежать — надо предпринимать специальные меры. необходимость которых у меня под большим вопросом. с одной стороны — ну да: код типа должен быть корректным. а с другой — не всё ли равно, корректен ли код, который нигде никогда не используется?

та же фигня, кстати, и с процедурами выходит: ежели процедура никем не вызывается и не экспортируется — то её и не резолвят. синтаксически она парзится, но вполне может не пройти проверку типов.


если кто-то кроме роботов таки читает, то как думаете: делать лишние телодвижения, или ну его нафиг? в принципе, с учётом того, что язык вообще больше на скриптовый похож (ибо по сути напрямую выполняет обероновские исходники) — хрен бы с ним, с неисполняемым. а с другой стороны —попахивает.

сделать опцию «проверяй всё» плохой вариант: это как раз проявление дурацкого «фичеризма» — когда автор не может сам решить, как надо делать, и сваливает решение на пользователя, отмазываясь «предоставлением выбора». это плохой, ненужный выбор. псевдовыбор.