Skip to content

Commit 0265bb0

Browse files
authored
Merge pull request #3972 from mtzguido/errs
Errors: print expected failures as diags
2 parents 9b47d07 + 0261d14 commit 0265bb0

File tree

136 files changed

+743
-1448
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

136 files changed

+743
-1448
lines changed

src/basic/FStarC.Errors.fst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -742,3 +742,11 @@ let _ = Options.check_include_dir := (fun s ->
742742
(Pprint.doc_of_string s)
743743
]
744744
)
745+
746+
let print_expected_failures (issues : list issue) : unit =
747+
(* Add them as diagnostics so we see them in the IDE. *)
748+
let issues = issues |> List.map (fun i -> { i with
749+
issue_level = EInfo;
750+
issue_msg = (text "Expected failure:") :: i.issue_msg;
751+
}) in
752+
add_issues issues

src/basic/FStarC.Errors.fsti

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,3 +203,6 @@ val raise_error_doc : Range.t -> error_code -> error_message -> 'a
203203
val log_issue_doc : Range.t -> error_code -> error_message -> unit
204204
val raise_error_text : Range.t -> error_code -> string -> 'a
205205
val log_issue_text : Range.t -> error_code -> string -> unit
206+
207+
(* Print expected failures as diagnostics, without failing. *)
208+
val print_expected_failures (issues : list issue) : unit

src/tosyntax/FStarC.ToSyntax.ToSyntax.fst

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3408,12 +3408,8 @@ and desugar_decl_maybe_fail_attr env (d: decl) (attrs : list S.term) : (env_t &
34083408

34093409
| errs, ropt -> (* failed! check that it failed as expected *)
34103410
let errnos = List.concatMap (fun i -> FStarC.Common.list_of_option i.issue_number) errs in
3411-
if Options.print_expected_failures () then (
3412-
(* Print errors if asked for *)
3413-
Format.print_string ">> Got issues: [\n";
3414-
List.iter Errors.print_issue errs;
3415-
Format.print_string ">>]\n"
3416-
);
3411+
if Options.print_expected_failures () then
3412+
Errors.print_expected_failures errs;
34173413
if expected_errs = [] then
34183414
env0, []
34193415
else begin

src/typechecker/FStarC.TypeChecker.Tc.fst

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -625,13 +625,8 @@ let tc_decl' env0 se: list sigelt & list sigelt & Env.env =
625625
Options.with_saved_options (fun () ->
626626
Some?.v (!tc_decls_knot) env' ses)) in
627627

628-
if Options.print_expected_failures ()
629-
|| Debug.low () then
630-
begin
631-
Format.print_string ">> Got issues: [\n";
632-
List.iter Errors.print_issue errs;
633-
Format.print_string ">>]\n"
634-
end;
628+
if Options.print_expected_failures () || Debug.low () then
629+
Errors.print_expected_failures errs;
635630

636631
(* Pop environment, reset SMT context *)
637632
let _ = Env.pop env' "expect_failure" in
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
{"msg":["AQualMismatch.f\nis declared but no definition was found","Add an 'assume' if this is intentional"],"level":"Warning","range":{"def":{"file_name":"AQualMismatch.fst","start_pos":{"line":3,"col":4},"end_pos":{"line":3,"col":5}},"use":{"file_name":"AQualMismatch.fst","start_pos":{"line":3,"col":4},"end_pos":{"line":3,"col":5}}},"number":240,"ctx":["While desugaring module AQualMismatch"]}
2-
>> Got issues: [
3-
{"msg":["Inconsistent implicit argument annotation on argument x","Got: '#'","Expected: ''"],"level":"Error","range":{"def":{"file_name":"AQualMismatch.fst","start_pos":{"line":6,"col":7},"end_pos":{"line":6,"col":8}},"use":{"file_name":"AQualMismatch.fst","start_pos":{"line":6,"col":7},"end_pos":{"line":6,"col":8}}},"number":91,"ctx":["While typechecking the top-level declaration `let f`","While typechecking the top-level declaration `[@@expect_failure] let f`"]}
4-
>>]
2+
{"msg":["Expected failure:","Inconsistent implicit argument annotation on argument x","Got: '#'","Expected: ''"],"level":"Info","range":{"def":{"file_name":"AQualMismatch.fst","start_pos":{"line":6,"col":7},"end_pos":{"line":6,"col":8}},"use":{"file_name":"AQualMismatch.fst","start_pos":{"line":6,"col":7},"end_pos":{"line":6,"col":8}}},"number":91,"ctx":["While typechecking the top-level declaration `let f`","While typechecking the top-level declaration `[@@expect_failure] let f`"]}
53
{"msg":["Missing definitions in module AQualMismatch: f"],"level":"Warning","range":{"def":{"file_name":"dummy","start_pos":{"line":0,"col":0},"end_pos":{"line":0,"col":0}},"use":{"file_name":"AQualMismatch.fst","start_pos":{"line":6,"col":0},"end_pos":{"line":6,"col":12}}},"number":240,"ctx":[]}

tests/error-messages/AQualMismatch.fst.output.expected

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22
- AQualMismatch.f is declared but no definition was found
33
- Add an 'assume' if this is intentional
44

5-
>> Got issues: [
6-
* Error 91 at AQualMismatch.fst(6,7-6,8):
5+
* Info at AQualMismatch.fst(6,7-6,8):
6+
- Expected failure:
77
- Inconsistent implicit argument annotation on argument x
88
- Got: '#'
99
- Expected: ''
1010

11-
>>]
1211
* Warning 240 at AQualMismatch.fst(6,0-6,12):
1312
- Missing definitions in module AQualMismatch: f
1413

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,2 @@
1-
>> Got issues: [
2-
{"msg":["Type annotation Prims.int for inductive AnotType.tc is not Type or eqtype, or it\nis eqtype but contains noeq/unopteq qualifiers"],"level":"Error","range":{"def":{"file_name":"AnotType.fst","start_pos":{"line":19,"col":5},"end_pos":{"line":19,"col":7}},"use":{"file_name":"AnotType.fst","start_pos":{"line":19,"col":5},"end_pos":{"line":19,"col":7}}},"number":309,"ctx":["While typechecking the top-level declaration `type AnotType.tc`","While typechecking the top-level declaration `[@@expect_failure] type AnotType.tc`"]}
3-
>>]
4-
>> Got issues: [
5-
{"msg":["Expected expression of type Type0\ngot expression tb\nof type Type"],"level":"Error","range":{"def":{"file_name":"AnotType.fst","start_pos":{"line":27,"col":14},"end_pos":{"line":27,"col":16}},"use":{"file_name":"AnotType.fst","start_pos":{"line":27,"col":14},"end_pos":{"line":27,"col":16}}},"number":189,"ctx":["While typechecking the top-level declaration `let uu___0`","While typechecking the top-level declaration `[@@expect_failure] let uu___0`"]}
6-
>>]
1+
{"msg":["Expected failure:","Type annotation Prims.int for inductive AnotType.tc is not Type or eqtype, or it\nis eqtype but contains noeq/unopteq qualifiers"],"level":"Info","range":{"def":{"file_name":"AnotType.fst","start_pos":{"line":19,"col":5},"end_pos":{"line":19,"col":7}},"use":{"file_name":"AnotType.fst","start_pos":{"line":19,"col":5},"end_pos":{"line":19,"col":7}}},"number":309,"ctx":["While typechecking the top-level declaration `type AnotType.tc`","While typechecking the top-level declaration `[@@expect_failure] type AnotType.tc`"]}
2+
{"msg":["Expected failure:","Expected expression of type Type0\ngot expression tb\nof type Type"],"level":"Info","range":{"def":{"file_name":"AnotType.fst","start_pos":{"line":27,"col":14},"end_pos":{"line":27,"col":16}},"use":{"file_name":"AnotType.fst","start_pos":{"line":27,"col":14},"end_pos":{"line":27,"col":16}}},"number":189,"ctx":["While typechecking the top-level declaration `let uu___0`","While typechecking the top-level declaration `[@@expect_failure] let uu___0`"]}
Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
>> Got issues: [
2-
* Error 309 at AnotType.fst(19,5-19,7):
1+
* Info at AnotType.fst(19,5-19,7):
2+
- Expected failure:
33
- Type annotation Prims.int for inductive AnotType.tc is not Type or eqtype,
44
or it is eqtype but contains noeq/unopteq qualifiers
55

6-
>>]
7-
>> Got issues: [
8-
* Error 189 at AnotType.fst(27,14-27,16):
6+
* Info at AnotType.fst(27,14-27,16):
7+
- Expected failure:
98
- Expected expression of type Type0 got expression tb of type Type
109

11-
>>]
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
{"msg":["ArgsAndQuals.test1\nis declared but no definition was found","Add an 'assume' if this is intentional"],"level":"Warning","range":{"def":{"file_name":"ArgsAndQuals.fst","start_pos":{"line":23,"col":4},"end_pos":{"line":23,"col":9}},"use":{"file_name":"ArgsAndQuals.fst","start_pos":{"line":23,"col":4},"end_pos":{"line":23,"col":9}}},"number":240,"ctx":["While desugaring module ArgsAndQuals"]}
2-
>> Got issues: [
3-
{"msg":["Inconsistent implicit argument annotation on argument uu___","Got: '#'","Expected: '$'"],"level":"Error","range":{"def":{"file_name":"ArgsAndQuals.fst","start_pos":{"line":25,"col":16},"end_pos":{"line":25,"col":18}},"use":{"file_name":"ArgsAndQuals.fst","start_pos":{"line":25,"col":16},"end_pos":{"line":25,"col":18}}},"number":91,"ctx":["While typechecking the top-level declaration `let test1`","While typechecking the top-level declaration `[@@expect_failure] let test1`"]}
4-
>>]
2+
{"msg":["Expected failure:","Inconsistent implicit argument annotation on argument uu___","Got: '#'","Expected: '$'"],"level":"Info","range":{"def":{"file_name":"ArgsAndQuals.fst","start_pos":{"line":25,"col":16},"end_pos":{"line":25,"col":18}},"use":{"file_name":"ArgsAndQuals.fst","start_pos":{"line":25,"col":16},"end_pos":{"line":25,"col":18}}},"number":91,"ctx":["While typechecking the top-level declaration `let test1`","While typechecking the top-level declaration `[@@expect_failure] let test1`"]}
53
{"msg":["Missing definitions in module ArgsAndQuals: test1"],"level":"Warning","range":{"def":{"file_name":"dummy","start_pos":{"line":0,"col":0},"end_pos":{"line":0,"col":0}},"use":{"file_name":"ArgsAndQuals.fst","start_pos":{"line":25,"col":0},"end_pos":{"line":25,"col":29}}},"number":240,"ctx":[]}

tests/error-messages/ArgsAndQuals.fst.output.expected

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22
- ArgsAndQuals.test1 is declared but no definition was found
33
- Add an 'assume' if this is intentional
44

5-
>> Got issues: [
6-
* Error 91 at ArgsAndQuals.fst(25,16-25,18):
5+
* Info at ArgsAndQuals.fst(25,16-25,18):
6+
- Expected failure:
77
- Inconsistent implicit argument annotation on argument uu___
88
- Got: '#'
99
- Expected: '$'
1010

11-
>>]
1211
* Warning 240 at ArgsAndQuals.fst(25,0-25,29):
1312
- Missing definitions in module ArgsAndQuals: test1
1413

0 commit comments

Comments
 (0)