Leonardo de Moura
f1ed13efff
feat: improve elabMatchAux
...
We now (try to) postpone `match ... with` elaboration when pattern
variables and patterns still contain metavariables before invoking `mkMatcher`.
This improvement makes sure we can elaborate an example submitted by
Daniel Selsam.
Remark: this update may create performance problems since we
backtrack `elabMatchTypeAndDiscrs` and `elabMatchAltView`.
We hope this is not a problem in practice since we use the "quick-check"
`waitExpectedTypeAndDiscrs`. Recall that we could compile Lean
without this commit. So, it suggests cases where we need to postpone
after `elabMatchAltView` are rare.
2021-01-18 15:33:48 -08:00
Leonardo de Moura
6df66bf0ac
feat: generalize observing
...
We can now "observe" any `TermElabM α` action.
2021-01-18 15:10:42 -08:00
Leonardo de Moura
711d1754a6
chore: improve error message
...
closes #276
2021-01-17 07:51:08 -08:00
Christian Pehle
066baeccc0
fix: pass (some) cmdline arguments to watchdog and workers
...
Capture some of the command line arguments in an argument
vector, that then gets passed to the watchdog and
subsequently the worker processes. Currently flags like
"-T" and "-j2" are not passed on to the watchdog and
worker processes.
Addresses #246
2021-01-17 15:06:11 +01:00
zygi
65c0c787ef
fix: make Meta.transform use matching aux functions
...
visitForall should probably be used in forallE case, same for lambda
2021-01-17 10:04:33 +01:00
Sebastian Ullrich
fcb1616c20
chore: reduce dependencies
2021-01-16 19:45:45 +01:00
Leonardo de Moura
eb25b97501
fix: pattern variables cannot shadow each other
2021-01-16 08:23:45 -08:00
Leonardo de Moura
7e0d76aff0
fix: losing local instances at assertAfter
...
closes #270
2021-01-15 19:30:03 -08:00
Leonardo de Moura
f73eb1246a
feat: add pp.safe_shadowing
...
When `pp.safe_shadowing` is set to true, we still use the
suggested name if the "body" does not contain a free variable with the
suggested name. This is the approach used in Lean 3, and I think it
improved the result in all affected tests.
The implementation was simple. The only nasty case was `delabAppMatch`.
The main motivation for this feature was hovering information such as
```lean
f : {α_1 : Type} → α_1 → α_1
```
when hovering over the `f` at
```lean
def g (α : Type) (a : α) :=
f a
```
With `safe_shadowing`, we get the nicer
```lean
f : {α : Type} → α → α
```
cc @Kha
2021-01-15 18:53:25 -08:00
Leonardo de Moura
dcc2283426
fix: refineCore
...
closes #269
2021-01-15 17:03:40 -08:00
Leonardo de Moura
58d51bc764
feat: add FieldInfo
2021-01-15 15:01:45 -08:00
Leonardo de Moura
0672247ce8
chore: make comments VS Code friendly
2021-01-15 13:53:37 -08:00
Wojciech Nawrocki
d7c201a2d4
chore: minor hover code cleanup
2021-01-15 13:29:22 -08:00
Wojciech Nawrocki
46e9d2533d
fix: resolving French-quoted field names
2021-01-15 13:29:22 -08:00
Sebastian Ullrich
fa7e679c73
feat: hover: use syntax highlighting
2021-01-15 13:29:22 -08:00
Wojciech Nawrocki
310a2ab6a3
feat: minimal hovers MVP
2021-01-15 13:29:22 -08:00
Wojciech Nawrocki
a711ccc0fd
chore: tail-recursive JSON printing
2021-01-15 13:29:22 -08:00
Wojciech Nawrocki
cba3d69e78
feat: enable info trees in server
2021-01-15 13:29:22 -08:00
Wojciech Nawrocki
5a46f43b56
fix: elab cancellation on server exit
2021-01-15 13:29:22 -08:00
Leonardo de Moura
223a5d5ded
fix: bug at isDefEqOffset
...
closes #268
2021-01-15 13:08:37 -08:00
Leonardo de Moura
ae60360d7a
feat: add resolveName' which produces Syntax with position information for each field
2021-01-15 11:19:01 -08:00
Sebastian Ullrich
021a823f49
feat: add option printMessageEndPos
2021-01-15 16:27:59 +01:00
Sebastian Ullrich
d1ff0991f4
fix: copy position for identifiers in quotations, not just for atoms
2021-01-15 16:27:59 +01:00
Sebastian Ullrich
dc77c45787
fix: mvar check trace message
2021-01-15 14:34:06 +01:00
Sebastian Ullrich
720f06d251
fix: interpreted bracketedBinder.quot
2021-01-15 14:34:06 +01:00
Leonardo de Moura
6a39c65bd2
feat: improve match error message
2021-01-14 14:58:34 -08:00
Leonardo de Moura
4752c56fe8
feat: improve range of missing cases: ... error message
...
@Kha I added the helper combinator `withHeadRefOnly x`. I executes `x`
using the head token of the current `ref` as the new `ref`.
2021-01-14 14:48:53 -08:00
Leonardo de Moura
791388400b
feat: improve do error messages
...
cc @Kha @Vtec234
2021-01-14 14:18:56 -08:00
Leonardo de Moura
25c9727a92
feat: add TermInfo for LVal
...
@Vtec234 Added the missing info.
Given
```lean
def f3 (s : Nat × Array (Array Nat)) : Array Nat :=
s.2[1].push s.1
```
We produce the following `InfoTree` for the body (originally at line 30)
```
Array.push (Array.getOp s.snd 1) s.fst : Array Nat @ ⟨30, 2⟩-⟨30, 17⟩
s : Nat × Array (Array Nat) @ ⟨30, 2⟩-⟨30, 3⟩
Prod.snd : {α β : Type} → α × β → β @ ⟨30, 4⟩-⟨30, 5⟩
Array.getOp : {α : Type} → [inst : Inhabited α] → Array α → Nat → α @ ⟨30, 5⟩-⟨30, 6⟩
1 : Nat @ ⟨30, 6⟩-⟨30, 7⟩
Array.push : {α : Type} → Array α → α → Array α @ ⟨30, 9⟩-⟨30, 13⟩
s.fst : Nat @ ⟨30, 14⟩-⟨30, 17⟩
s : Nat × Array (Array Nat) @ ⟨30, 14⟩-⟨30, 15⟩
Prod.fst : {α β : Type} → α × β → α @ ⟨30, 16⟩-⟨30, 17⟩
```
2021-01-14 12:19:21 -08:00
Leonardo de Moura
fb52ec8ef5
feat: store binder information in the InfoTree
...
@Vtec234 I am storing the binder information using `TermInfo`.
If it helps, I can add a custom `Info` constructor.
Example: `| Info.ofBinderInfo (i : BinderInfo)`.
2021-01-14 12:19:21 -08:00
Leonardo de Moura
4d1097327c
feat: store ref syntax at LVal
2021-01-14 12:19:21 -08:00
Leonardo de Moura
bfc1a16c02
chore: adjust instance param order
2021-01-13 18:31:41 -08:00
Leonardo de Moura
74a9331571
feat: use left-to-right resolution
2021-01-13 16:33:30 -08:00
Leonardo de Moura
8d9339a856
feat: improve error message position for termination check failures
2021-01-13 10:59:28 -08:00
Leonardo de Moura
b6bb31a131
feat: "compile" 'extern' axioms
2021-01-13 09:43:25 -08:00
Leonardo de Moura
3ca0aef098
feat: generate warning when sorry is used
2021-01-13 09:43:25 -08:00
Sebastian Ullrich
3a9658b91f
chore: obsolete comment
2021-01-13 16:39:00 +01:00
Leonardo de Moura
fdc0f906f4
feat: improve error message position for compiler errors
2021-01-12 17:10:11 -08:00
Leonardo de Moura
9f7435b5be
chore: cleanup Message.toString
2021-01-12 09:57:46 -08:00
Sebastian Ullrich
79abd5fec6
chore: remove C++ messages
2021-01-12 09:51:14 -08:00
Sebastian Ullrich
a6c319a25c
chore: remove message_builder from time_task
2021-01-12 09:51:14 -08:00
Sebastian Ullrich
b2e42a3ea6
chore: remove --json option
2021-01-12 09:51:14 -08:00
Sebastian Ullrich
7282470f24
fix: Message.toString: use same formatting as C++ code
2021-01-12 09:51:14 -08:00
Leonardo de Moura
b6abf19656
fix: unfold abbreviations only
...
For example, we should not reduce types of the form `let x := ...; ...`
2021-01-12 08:11:04 -08:00
Leonardo de Moura
c1f3c724e1
fix: missing alternative
2021-01-12 07:44:31 -08:00
Leonardo de Moura
b5fdc5e364
fix: expand abbreviations at isClass?
2021-01-12 06:56:23 -08:00
Leonardo de Moura
1ebf69e163
fix: simple-match macro
2021-01-12 06:41:32 -08:00
Leonardo de Moura
36008271ea
feat: ensure no unassigned metavariables in the declaration header when type is explicitly provided
2021-01-11 16:40:14 -08:00
Leonardo de Moura
8d0085ae31
feat: unification hints + type classes
2021-01-11 15:34:57 -08:00
Leonardo de Moura
ec7be1d801
feat: add processAssignment'
2021-01-11 15:22:10 -08:00