flang компилятор доказывает, что программа не зациклится 0.6.2 GitHub

Когда свидетеля не отдают наружу, эталон сверяют с третьим тем, что в дереве уже есть

Слой на flang (эталон) обычно сверяют побайтово с реализацией на JavaScript (свидетелем). Приём ломается, когда нужная функция свидетеля не экспортирована: дописать ей export — это правка чужого файла ради собственной проверки, а без неё сверять вроде бы не с чем.

Вывод «значит, сверить нельзя» ошибочен, и ошибку эту в дереве делали дважды. Правильный вопрос другой: есть ли в дереве ТРЕТИЙ предмет, который обязан совпасть с ответом эталона.

Два случая, оба закрыты этим приёмом:

Второй случай оказался ЛУЧШЕ прямой сверки со свидетелем: разбор — независимый предмет, и совпадение с ним ловит ошибку, которую совпадение с самим свидетелем не поймало бы (если бы ошибались оба одинаково).

Чем подтверждено. Ветка vypusk/raspredelyonnost-do-konca, flang/test/self-distributed.test.mjs: 11 надзоров в 9 программах каталога flang/conc/examples, расхождений 0. Проверено снятием правки: поменять в эталоне местами имя и стратегию — краснеют все девять программ сразу.

Чем ограничено. Третий предмет обязан быть НЕЗАВИСИМЫМ. Сверка с константой, переписанной в тот же файл проверки, — не сверка, а тавтология; именно поэтому «кого роняет разрыв» спрашивают у самого узла (связи()), а не у формулы, скопированной в проверку.

Связано: a-removal-must-turn-a-test-red, distribution-splits-into-world-and-wire