Commit graph

2569 commits

Author SHA1 Message Date
Leonardo de Moura
2837873db5 fix: longestMatch error recovery
@kha When replacing an error with a longer one, we were keeping the
message for the longer error, but losing its node.
2021-03-31 20:09:36 -07:00
Leonardo de Moura
2fc775954c fix: error recovery
@kha We have a few parsers that invoke `tokenFn`, and return error
depending of what is on the top of the stack (e.g., `ident`).
These parsers were not restoring the stack size when reporting errord,
and messing up the error recovery. We never notice the problem because
operators such as <|> restore the stack size, and we were not trying
to elaborate syntacticly incorrect terms.
2021-03-31 17:05:34 -07:00
Leonardo de Moura
c35f96ac82 feat: avoid bizarre error message for definition without body
@kha This is a temporary hack to avoid a incomprehensible error
message. I will try to tweak the parser error recovery in another
commit.
2021-03-31 17:05:34 -07:00
Leonardo de Moura
ae4f3242d4 feat: handle Syntax.missing at TermElab 2021-03-31 17:05:34 -07:00
Leonardo de Moura
3846fa0432 feat: add evalUnknown 2021-03-31 17:05:34 -07:00
Leonardo de Moura
583afaab10 chore: indent syntax 2021-03-31 17:05:34 -07:00
Leonardo de Moura
7c2338546c feat: add pp.rawOnError
@Kha after I enabled elaboration on syntactically incorrect terms, the
fallback is activated more often, and the raw term seems to have
little value for most users, and it is just scary.
Not sure whether the flag is a good idea, but it produces are more
user friendly output.
2021-03-31 17:05:34 -07:00
Leonardo de Moura
148594ca67 chore: use register_builtin_option 2021-03-31 17:05:34 -07:00
Leonardo de Moura
de024274fe feat: elaborate syntactically incorrect commands 2021-03-31 17:05:34 -07:00
Leonardo de Moura
9d45ea6721 feat: try to improve dependent pattern matching failure error message 2021-03-30 23:40:11 -07:00
Daniel Fabian
42c172eeec feat: simplify Hashable implementation, allowing mutual recursive calls
change the generated to code recursively call the fields of recursive
and mutually recursive types. Currently, this can emit `partial`
functions due to lacking structural recursion. The code is prepared,
however, for the full implementation and can be trivially turned into
code generating non-`partial` functions
2021-03-30 13:36:52 -07:00
Daniel Fabian
fee3390dd1 feat: add Hashable deriving
add support for the `Hashable` deriving by combining structural
hashes over fields
2021-03-30 13:36:52 -07:00
Leonardo de Moura
9f9529467e chore: document recent modifications 2021-03-30 13:29:23 -07:00
Leonardo de Moura
b3a665118a feat: add isAtomicDiscr? 2021-03-30 13:09:56 -07:00
Leonardo de Moura
4ec6804667 fix: issue at expandMatchAlts 2021-03-30 12:55:59 -07:00
Leonardo de Moura
19e0a84817 fix: make the match behavior more uniform 2021-03-30 12:19:31 -07:00
Sebastian Ullrich
7391e0ef92 fix: "unknown goal" on tactics nested in terms 2021-03-30 14:09:39 +02:00
Sebastian Ullrich
ac8f0526f6 feat: report goals from multiple info states 2021-03-30 11:38:34 +02:00
Sebastian Ullrich
06df67313c refactor: goalsAt? 2021-03-30 11:27:42 +02:00
Leonardo de Moura
f7d055830b feat: save TacticInfo at ; 2021-03-29 20:31:48 -07:00
Leonardo de Moura
745cff41db feat: (try to) improve InfoTree.goalsAt? (yet another heuristic) 2021-03-29 19:30:00 -07:00
Leonardo de Moura
f75d9f50a6 feat: (try to) improve InfoTree.goalsAt? 2021-03-29 18:43:33 -07:00
Leonardo de Moura
913669f081 chore: add InfoTree.findInfo? 2021-03-29 17:08:47 -07:00
Leonardo de Moura
41539a7725 fix: leftovers in the local context when applying induction 2021-03-27 19:42:22 -07:00
Leonardo de Moura
566fad77d4 chore: helper methods 2021-03-27 18:48:03 -07:00
Leonardo de Moura
b32b542a85 chore: fix mkForbiddenSet 2021-03-27 14:59:05 -07:00
Leonardo de Moura
2e5a9d9c99 chor: fix import 2021-03-27 14:34:44 -07:00
Leonardo de Moura
4a0f8bf21a feat: improve generalizing at induction 2021-03-27 14:28:03 -07:00
Leonardo de Moura
ba3d6103fa chore: spaces 2021-03-27 14:07:45 -07:00
Leonardo de Moura
4705532231 chore: add missing instance 2021-03-27 14:06:33 -07:00
Leonardo de Moura
b899447817 refactor: move collectFVars to Meta 2021-03-26 19:16:21 -07:00
Leonardo de Moura
f20fc6328c fix: better error message when cases fails and there are no alternatives 2021-03-26 16:28:21 -07:00
Leonardo de Moura
6cfc8d0937 fix: ensure discriminants are distinct variables 2021-03-26 16:28:21 -07:00
Leonardo de Moura
4a5368fd93 fix: accidental name capture 2021-03-26 16:28:21 -07:00
Sebastian Ullrich
2647cdf813 chore: fix trace.Elab.info position & redundancy 2021-03-26 11:39:44 +01:00
Sebastian Ullrich
170fc62c18 fix: tactic info post state 2021-03-26 11:25:52 +01:00
Leonardo de Moura
81e986c11c fix: intro with pattern 2021-03-25 17:19:17 -07:00
Leonardo de Moura
333646bc41 fix: add elabTermForApply 2021-03-25 16:50:37 -07:00
Leonardo de Moura
05022cc80b fix: disable implicit lambda insertion at _, ?h, and by ...
@Kha This commit addresses an issue reported by Kevin. Holes and tactic
blocks represent a discontinuity in the elaboration process.
By introducing inaccessible variables (or "things" as Kevin calls
them), we create error message that are harder to understand (see
affected test), and goals where we didn't allow the user to select the
variable name and/or eagerly unfolded a definition.

BTW, I first considered using "reducible" setting when deciding
whether to insert implicit lambdas or not. This is a bad idea.
See `monotone.lean` test. The decision should not depend on
reducibility status, but whether there is "discontinuity" on the
elaboration process or not. As Kevin pointed out,
"introducing implicits work great if you finish the job".
2021-03-25 16:13:15 -07:00
Leonardo de Moura
dd9cc7a273 fix: typo 2021-03-25 15:57:10 -07:00
Leonardo de Moura
083301e286 fix: non-dependent arrow vs dependent arrow issue at DiscrTree 2021-03-25 13:04:24 -07:00
Leonardo de Moura
b7acc38810 feat: add support for "arrow" at DiscrTree 2021-03-25 12:21:10 -07:00
Leonardo de Moura
59ac5be60d chore: add `` 2021-03-25 12:21:10 -07:00
Sebastian Ullrich
3557d521d5 fix: don't unconditionally format InfoTrees in the server 2021-03-25 14:45:42 +01:00
Sebastian Ullrich
7b9ee8611c fix: trace.Elab.Info in the server 2021-03-25 14:36:30 +01:00
Leonardo de Moura
3176be136c feat: improve "discriminant refinement" 2021-03-24 21:05:08 -07:00
Leonardo de Moura
ceba38526a fix: save errToSorry 2021-03-24 20:54:14 -07:00
Leonardo de Moura
66a8683f08 fix: updateMatchType may generate type incorrect terms
If generated type is not correct, we should abort "discriminant
refinement", and use the original error message because users may
be confused by a type error on something they did not write.
2021-03-24 19:41:25 -07:00
Leonardo de Moura
ce1dda8eea fix: missing withMVarContext 2021-03-24 18:25:41 -07:00
Leonardo de Moura
ec5afce45b feat: contextual := true at simp_all
cc @Kha
2021-03-24 15:49:31 -07:00