This PR gives a simpler semantics to `noncomputable`, improving predictability as well as preparing codegen to be moved into a separate build step without breaking immediate generation of error messages. Specifically, `noncomputable` is now needed whenever an axiom or another `noncomputable` def is used by a def except for the following special cases: * uses inside proofs, types, type formers, and constructor arguments corresponding to (fixed) inductive parameters are ignored * uses of functions marked `@[extern]/@[implemented_by]/@[csimp]` are ignored * for applications of a function marked `@[macro_inline]`, noncomputability of the inlining is instead inspected # Breaking change After this change, more `noncomputable` annotations than before may be required in exchange for improved future stability. |
||
|---|---|---|
| .. | ||
| bench | ||
| bench-radar | ||
| compiler | ||
| elabissues | ||
| ir | ||
| lake | ||
| lean | ||
| pkg | ||
| playground | ||
| plugin | ||
| simpperf | ||
| .gitignore | ||
| common.sh | ||
| lakefile.toml | ||
| lean-toolchain | ||