Sebastian Ullrich
8e47d29bf9
feat: debug_assert! ( #7256 )
...
This PR introduces the `assert!` variant `debug_assert!` that is
activated when compiled with `buildType` `debug`.
---------
Co-authored-by: Mac Malone <tydeu@hatpress.net>
2025-03-03 16:34:44 +00:00
Kim Morrison
72e952eadc
chore: avoid runtime array bounds checks ( #6134 )
...
This PR avoids runtime array bounds checks in places where it can
trivially be done at compile time.
None of these changes are of particular consequence: I mostly wanted to
learn how much we do this, and what the obstacles are to doing it less.
2024-11-21 05:04:52 +00:00
Kim Morrison
f85c66789d
feat: Array.insertIdx/eraseIdx take a tactic-provided proof ( #6133 )
...
This PR replaces `Array.feraseIdx` and `Array.insertAt` with
`Array.eraseIdx` and `Array.insertIdx`, both of which take a `Nat`
argument and a tactic-provided proof that it is in bounds. We also have
`eraseIdxIfInBounds` and `insertIdxIfInBounds` which are noops if the
index is out of bounds. We also provide a `Fin` valued version of
`Array.findIdx?`. Together, these quite ergonomically improve the array
indexing safety at a number of places in the compiler/elaborator.
2024-11-20 09:52:38 +00:00
Kim Morrison
218601009b
chore: rename Array.back to back! ( #5897 )
2024-10-31 09:18:18 +00:00
Joachim Breitner
60096e7d15
refactor: more idiomatic syntax for if h: ( #5567 )
...
https://github.com/leanprover/lean4/pull/5552 introduced a fair number
of `if h:`, but the slightly preferred style is `if h :`, with a space,
so here goes a quick `sed`.
2024-10-01 15:23:54 +00:00
Matthew Toohey
b486c6748b
fix: correct typo in invalid reassignment error ( #5080 )
...
Corrects a small typo in the error message for when a user attempts to
mutate something which cannot be mutated.
2024-08-18 08:10:07 +00:00
Sebastian Ullrich
cc33c39cb0
chore: bootstrap fixes
2024-05-28 23:04:19 +02:00
Leonardo de Moura
0684c95d35
fix: do not lift (<- ...) over pure if-then-else ( #3820 )
...
Now, only `(<- ...)`s occurring in the condition of a pure if-then-else
are lifted.
That is, `if (<- foo) then ... else ...` is ok, but `if ... then (<-
foo) else ...` is not. See #3713
closes #3713
This PR also adjusts this repo. Note that some of the `(<- ...)` were
harmless since they were just accessing some
read-only state.
2024-04-01 21:33:59 +00:00
Leonardo de Moura
826f0580a6
fix: propagate expected type at do-match_expr
2024-03-02 10:07:15 -08:00
Leonardo de Moura
17e498c11f
feat: expand let_expr macros
2024-03-02 08:16:18 -08:00
Leonardo de Moura
3c0e575fe0
feat: add matchExprPat parser
2024-03-02 08:16:18 -08:00
Leonardo de Moura
7a27b04d50
feat: monadic match_expr
2024-03-01 22:33:14 -08:00
Henrik Böving
23e49eb519
perf: add prelude to all Lean modules
2024-02-18 14:55:17 -08:00
Eric Wieser
ec39de8cae
fix: allow generalization in let ( #3060 )
...
As suggested by @kmill, removing an unnecessary `let` (possibly only
there in the first place for copy/paste reasons) seems to fix the
included test.
This makes `~q()` matching in quote4 noticeably more useful in things
like `norm_num` (as it fixes
https://github.com/leanprover-community/quote4/issues/29 )
It also makes a quote4 bug slightly more visible
(https://github.com/leanprover-community/quote4/issues/30 ), but the bug
there already existed anyway, and isn't caused by this patch.
Fixes #3065
2024-01-23 09:02:05 +00:00
Sebastian Ullrich
74b8dda181
feat: check task cancellation in elaborator
2023-10-26 08:33:09 +02:00
Scott Morrison
fb0d0245db
Revert "Cancel outstanding tasks on document edit in the language server" ( #2703 )
...
* Revert "perf: inline `checkInterrupted`"
This reverts commit 6494af4513 .
* Revert "fix: switch to C++ interruption whitelist"
This reverts commit 5aae74199b .
* Revert "fix: do not throw interrupt exceptions inside pure functions"
This reverts commit c0e3b9568e .
* Revert "feat: cancel tasks on document edit"
This reverts commit a2e2481c51 .
* Revert "feat: translate `interrupted` kernel exception"
This reverts commit 14c640c15e .
* Revert "feat: check task cancellation in elaborator"
This reverts commit 2070df2328 .
* Revert "feat: move `check_interrupted` from unused thread class to `Task` cancellation"
This reverts commit bf48a18cf9 .
2023-10-17 00:59:11 +00:00
Sebastian Ullrich
2070df2328
feat: check task cancellation in elaborator
2023-10-13 09:52:26 +02:00
int-y1
8d7520b36f
chore: fix typos in comments
2023-10-08 10:46:05 +02:00
Mario Carneiro
a8d6178e19
feat: implement have this (part 2)
2023-06-02 16:19:02 +02:00
Mario Carneiro
43f6d0a761
feat: implement have this (part 1)
2023-06-02 16:19:02 +02:00
Sebastian Ullrich
019707ccf4
fix: do method lifting across choice nodes
2022-11-21 17:52:14 +01:00
Mario Carneiro
4bf89dfa12
feat: allow doSeq in let x <- e | seq
...
fixes #1804
2022-11-08 08:29:21 -08:00
Mario Carneiro
32b6bd0d8b
feat: empty type ascription syntax (e :) (part 2)
2022-11-07 19:10:56 +01:00
Mario Carneiro
02d8a5d56e
feat: empty type ascription syntax (e :)
2022-11-07 19:10:56 +01:00
Mario Carneiro
583e023314
chore: snake-case attributes (part 2)
2022-10-19 09:28:08 -07:00
Gabriel Ebner
ba57ad3480
feat: add implementation-detail hypotheses
2022-10-11 17:24:35 -07:00
Mario Carneiro
85119ba9d1
chore: move Std.* data structures to Lean.*
2022-09-26 05:46:04 -07:00
Gabriel Ebner
f1b5fa53f0
chore: use new comment syntax
2022-09-14 08:26:17 -07:00
Sebastian Ullrich
a2d59b9c93
fix: preserve condition position info in if
2022-08-13 18:07:30 -07:00
Sebastian Ullrich
f117606728
fix: replace uses of token antiquotations for setting position ranges with withRef
2022-08-13 18:07:30 -07:00
Sebastian Ullrich
757da9f6f3
fix: more accurate invalid shadowin error position
2022-08-13 18:07:30 -07:00
Mario Carneiro
0c3383c0b0
feat: support let mut x := e | alt
2022-08-10 06:29:49 -07:00
Leonardo de Moura
1008607b25
chore: cleanup annotate method at Do.lean
2022-08-04 08:44:56 -07:00
Leonardo de Moura
0e0a3e1f63
chore: style
2022-07-30 08:35:45 -07:00
Leonardo de Moura
fbc6bcff92
chore: remove unnecessary french quotes
2022-07-29 20:53:01 -07:00
Leonardo de Moura
3e7d45aaba
fix: improve finer-grained term infos for do blocks
...
see #1248
This commit adds a small hack to fix the term info for the following `do`-elements
```lean
let (x, y) := ...
let (x, y) ← ...
let mut (x, y) ← ...
let some x ← ... | ...
```
2022-07-26 18:18:05 -07:00
Leonardo de Moura
0e3f031660
fix: position information for with_annotate_term when coercions are used
...
see #1248
2022-07-26 16:09:45 -07:00
Leonardo de Moura
c22120371e
feat: finer-grained term infos for do blocks
...
closes #1248
2022-07-26 15:47:37 -07:00
Leonardo de Moura
28fc2f9d37
fix: improve "{varName} cannot be reassigned" error message
...
closes #1341
2022-07-24 07:44:34 -07:00
Leonardo de Moura
ad5ee05a03
chore: consistent use of backticks in error messages at Do.lean
2022-07-24 07:42:04 -07:00
Mario Carneiro
f6211b1a74
chore: convert doc/mod comments from /- to /--//-! ( #1354 )
2022-07-22 12:05:31 -07:00
Gabriel Ebner
a8cab84735
refactor: use computed fields for Expr
2022-07-11 14:19:41 -07:00
Leonardo de Moura
e4b358a01e
refactor: prepare to elaborate a[i] notation using typeclasses
2022-07-09 15:24:22 -07:00
Leonardo de Moura
bdaabd4e7b
feat: propagate return type to for-in block
2022-07-08 17:29:30 -07:00
Leonardo de Moura
7cf31f7360
chore: update comment
2022-07-08 15:34:09 -07:00
Sebastian Ullrich
d7bcc271be
refactor: avoid nested sequence in simpleBinder
2022-07-08 19:06:10 +02:00
Leonardo de Moura
71550c55a9
fix: @ scope
2022-07-06 19:42:43 -07:00
Leonardo de Moura
f8c7bd71aa
fix: position information for toStream application at do-notation
2022-07-06 18:50:45 -07:00
Leonardo de Moura
645c3e777d
feat: disable coeAtOutParam when @ (aka explicit = true) is used
2022-07-06 18:31:39 -07:00
Leonardo de Moura
2ebcf29cde
chore: use a[i]! for array accesses that may panic
2022-07-02 15:12:05 -07:00