lean4-htt/tests/compiler
Cameron Zwarich 81740da50a
fix: avoid caching uses of never_extract constants in toLCNF (#8956)
This PR changes `toLCNF` to stop caching translations of expressions
upon seeing an expression marked `never_extract`. This is more
coarse-grained than it needs to be, but it is difficult to do any
better, as the new compiler's `Expr` cache is based on structural
identity (rather than the pointer identity of the old compiler).

The newly added `tests/compiler/never_extract.lean` is also converted
into a `run` tests, because during development I found the order of the
output to `stderr` to be a bit finicky. The reason for making it a
`compiler` test in the first place is that closed term decls work
slightly differently between native code and the interpreter, and it
would be good to test both, but we already have separate tests for
`never_extract` and closed term extraction.

Fixes #8944.
2025-06-24 02:04:56 +00:00
..
foreign
.gitignore chore: add .dSYM files (Mac debug symbols) to tests .gitignore files (#8771) 2025-06-13 15:27:46 +00:00
534.lean
534.lean.expected.out
append.lean
append.lean.expected.out
array.lean
array.lean.expected.out
array_test.lean
array_test.lean.expected.out
array_test2.lean
array_test2.lean.expected.out
arrayMk.lean
arrayMk.lean.expected.out
bigctor.lean
bigctor.lean.expected.out
bytearray_bug.lean
bytearray_bug.lean.expected.out
closure_bug1.lean
closure_bug1.lean.expected.out
closure_bug2.lean
closure_bug2.lean.expected.out
closure_bug3.lean
closure_bug3.lean.expected.out
closure_bug4.lean
closure_bug4.lean.expected.out
closure_bug5.lean
closure_bug5.lean.expected.out
closure_bug6.lean
closure_bug6.lean.expected.out
closure_bug7.lean
closure_bug7.lean.expected.out
closure_bug8.lean
closure_bug8.lean.expected.out
computedFieldsExtern.lean.no_interpreter
escape.lean
escape.lean.expected.out
expr.lean
expr.lean.expected.out
extractClosedMutualBlock.lean
extractClosedMutualBlock.lean.expected.out
float.lean
float.lean.expected.out
float_cases_bug.lean
float_cases_bug.lean.expected.out
init.lean
init.lean.expected.out
init.lean.no_interpreter
initUnboxed.lean
initUnboxed.lean.expected.out
initUnboxed.lean.no_interpreter
lazylist.lean
lazylist.lean.expected.out
lazylist.lean.no_interpreter
link_lake.lean
link_lake.lean.expected.out
map_big.lean
map_big.lean.expected.out
map_big.lean.no_interpreter
nat_shiftr.lean
nat_shiftr.lean.expected.out
overflow1.lean
overflow1.lean.expected.out
overflow2.lean
overflow2.lean.expected.out
overflow3.lean
overflow3.lean.expected.out
partial.lean
partial.lean.expected.out
phashmap.lean
phashmap.lean.expected.out
phashmap2.lean
phashmap2.lean.expected.out
phashmap3.lean
phashmap3.lean.expected.out
print_error.lean
print_error.lean.expected.out
print_error.lean.expected.ret
qsortBadLt.lean
qsortBadLt.lean.expected.out
rbmap_library.lean
rbmap_library.lean.expected.out
reusebug.lean
reusebug.lean.expected.out
StackOverflow.lean
StackOverflow.lean.expected.out
StackOverflow.lean.expected.ret
StackOverflow.lean.no_interpreter
StackOverflowTask.lean
StackOverflowTask.lean.expected.out
StackOverflowTask.lean.expected.ret
StackOverflowTask.lean.no_interpreter
str.lean
str.lean.expected.out
strictAndOr.lean
strictAndOr.lean.expected.out
strictOrSimp.lean.expected.out
t1.lean
t1.lean.expected.out
t2.lean
t2.lean.expected.out
t4.lean
t4.lean.expected.out
test_single.sh
test_single_interpret.sh
thunk.lean
thunk.lean.expected.out
trie.lean
trie.lean.expected.out
trigraphs.lean
trigraphs.lean.expected.out
tuple.lean
tuple.lean.expected.out
uint_fold.lean
uint_fold.lean.expected.out
unreachable.lean
unreachable.lean.expected.out
uset.lean
uset.lean.expected.out
wait_dedicated.lean
wait_dedicated.lean.expected.out