Тут главное - определить, что является нормой, а что выходит за рамки нормального. Если: 1. 99% кода не использует рекурсию, SYSTEM.GET для процедурных указателей и проч; 2. а 1% кода вынужден использовать TRACE с рекурсивным обеганием, то вполне можно использовать ограничительную семантику с RESTRICT для 1 случая. А вот случай 2 будет ненормальным, без ограничений, стало быть, программист отдает себе отчет, что наворотил более сложные алгоритмы. И да, программист готов доказывать, что защита для TRACE им дважды проверена и работает. Случай 1 доказывать не надо, там и так все работает.
А вот если усложнение кода является нормой, то RESTRICT уже не поможет. Вместо усложнения компилятора для анализа неоднозначного кода лучше стимулировать разработчика писать ясный код.
|