Commit graph

24104 commits

Author SHA1 Message Date
Sebastian Ullrich
35e4f7391a feat: publish fatal worker error as diagnostic 2021-01-19 19:06:01 +01:00
Sebastian Ullrich
2eb0f58bdd chore: restart worker only on didChange
will otherwise be constantly retriggered by documentSymbol in Emacs
2021-01-19 19:06:01 +01:00
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
0a6d83127d chore: cleanup 2021-01-18 11:46:13 -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
4950440014 fix: --run flag 2021-01-17 10:00:17 +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
Wojciech Nawrocki
af04c66e22 chore: comment style in Init.String.Basic 2021-01-15 13:29:22 -08:00
Wojciech Nawrocki
f3ab908888 fix: substring APIs 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
Andrew Kent
4f6bb1feb6
feat: add Float.ofInt 2021-01-15 15:45:28 +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
Christian Pehle
225fae9dc2
feat: add shiftLeft and shiftRight for UInt16 and UInt8
The same operations are implemented for UInt32, UInt64 and USize
already.
2021-01-14 15:30:35 +01: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
e2773113a9 feat: add Float.neg and casts 2021-01-13 10:26:45 -08:00
Leonardo de Moura
b3703739af chore: internal panic meesage 2021-01-13 10:26:25 -08:00
Leonardo de Moura
b6bb31a131 feat: "compile" 'extern' axioms 2021-01-13 09:43:25 -08:00
Leonardo de Moura
f6e5b13591 feat: "implement" sorry using panic 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
a199f35330 fix: leanpkg: do not rely on PATH 2021-01-13 16:39:00 +01: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