-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[quickfix] warnings and errors can carry a qf in the vscode sense
- Loading branch information
Showing
23 changed files
with
170 additions
and
65 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
(************************************************************************) | ||
(* * The Coq Proof Assistant / The Coq Development Team *) | ||
(* v * Copyright INRIA, CNRS and contributors *) | ||
(* <O___,, * (see version control and CREDITS file for authors & dates) *) | ||
(* \VV/ **************************************************************) | ||
(* // * This file is distributed under the terms of the *) | ||
(* * GNU Lesser General Public License Version 2.1 *) | ||
(* * (see LICENSE file for the text of the license) *) | ||
(************************************************************************) | ||
|
||
(* Quickfix management *) | ||
|
||
type t = Loc.t * Pp.t | ||
let make ~loc txt = loc, txt | ||
let pp (_,x) = x | ||
let loc (l,_) = l | ||
|
||
let handle_stack = ref [] | ||
|
||
let register h = handle_stack := h::!handle_stack | ||
|
||
let rec accumulate_qf acc stk e = | ||
match stk with | ||
| [] -> acc | ||
| h::stk -> accumulate_qf (h e :: acc) stk e | ||
|
||
let from_exception e = | ||
try | ||
Ok (CList.flatten (accumulate_qf [] !handle_stack e)) | ||
with exn -> | ||
let ei = Exninfo.capture exn in | ||
Error ei | ||
|
||
let print e = | ||
let open Pp in | ||
match e with | ||
| [] -> mt () | ||
| qf -> | ||
let open Pp in | ||
let qf = prlist_with_sep cut pp qf in | ||
v 0 (prlist_with_sep cut (fun x -> x) [str "Quickfix:"; qf]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
(************************************************************************) | ||
(* * The Coq Proof Assistant / The Coq Development Team *) | ||
(* v * Copyright INRIA, CNRS and contributors *) | ||
(* <O___,, * (see version control and CREDITS file for authors & dates) *) | ||
(* \VV/ **************************************************************) | ||
(* // * This file is distributed under the terms of the *) | ||
(* * GNU Lesser General Public License Version 2.1 *) | ||
(* * (see LICENSE file for the text of the license) *) | ||
(************************************************************************) | ||
|
||
type t | ||
|
||
val make : loc:Loc.t -> Pp.t -> t | ||
|
||
val pp : t -> Pp.t | ||
|
||
val loc : t -> Loc.t | ||
|
||
(** [register h] registers [h] as a quickfix generator. | ||
When an error is generated the toplevel can check if there is | ||
quick fix for it. | ||
Quickfix generators signal that they don't deal with some exception | ||
by returning []. Raising any other exception is | ||
forbidden. | ||
Exceptions that are considered anomalies should not be | ||
handled by Quickfix generators. | ||
*) | ||
|
||
val register : (exn -> t list) -> unit | ||
|
||
(** computes all the quickfixes for a given exception *) | ||
val from_exception : exn -> (t list, Exninfo.iexn) result | ||
|
||
(** Prints all the quickfixes in a vertical box *) | ||
val print : t list -> Pp.t |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.