Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stop hiding nullability annotations when pretty-printing #3285

Merged
merged 5 commits into from
Dec 5, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
accept tests
  • Loading branch information
d-kalinichenko committed Dec 5, 2024
commit 62e71617a3641c914eae52f54a3392b5753b1a20
2 changes: 1 addition & 1 deletion testsuite/tests/generalized-open/accepted_expect.ml
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ module type S = sig type nonrec t = Set.Make(Bool).t end

let hd _ = ();;
[%%expect{|
val hd : 'a -> unit = <fun>
val hd : ('a : value_or_null). 'a -> unit = <fun>
|}]

open (List : sig val map : ('a -> 'b) -> 'a list -> 'b list end);;
Expand Down
12 changes: 6 additions & 6 deletions testsuite/tests/generalized-open/expansiveness.ml
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,21 @@ module Fn = struct
end
;;
[%%expect{|
module Fn : sig val id : 'a -> 'a end
module Fn : sig val id : ('a : value_or_null). 'a -> 'a end
|}]

let f = fun x -> Fn.id x
;;
[%%expect{|
val f : 'a -> 'a = <fun>
val f : ('a : value_or_null). 'a -> 'a = <fun>
|}]

let g = Fn.(fun x -> id x)
let h = let open Fn in fun x -> id x
;;
[%%expect{|
val g : 'a -> 'a = <fun>
val h : 'a -> 'a = <fun>
val g : ('a : value_or_null). 'a -> 'a = <fun>
val h : ('a : value_or_null). 'a -> 'a = <fun>
|}]

let i =
Expand All @@ -37,8 +37,8 @@ let iM =
fun x -> M.id x
;;
[%%expect{|
val i : 'a -> 'a = <fun>
val iM : 'a -> 'a = <fun>
val i : ('a : value_or_null). 'a -> 'a = <fun>
val iM : ('a : value_or_null). 'a -> 'a = <fun>
|}]

let j =
Expand Down
87 changes: 60 additions & 27 deletions testsuite/tests/let-syntax/let_syntax.ml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,17 @@ module Id = struct

end;;
[%%expect{|
val id : 'a -> 'a = <fun>
val apply : 'a -> ('a -> 'b) -> 'b = <fun>
val pair : 'a -> 'b -> 'a * 'b = <fun>
val id : ('a : value_or_null). 'a -> 'a = <fun>
val apply : ('a : value_or_null) ('b : value_or_null). 'a -> ('a -> 'b) -> 'b =
<fun>
val pair : ('a : value_or_null) ('b : value_or_null). 'a -> 'b -> 'a * 'b =
<fun>
module Id :
sig
val ( let+ ) : 'a -> ('a -> 'b) -> 'b
val ( and+ ) : 'a -> 'b -> 'a * 'b
val ( let+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> ('a -> 'b) -> 'b
val ( and+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> 'b -> 'a * 'b
end
|}];;

Expand Down Expand Up @@ -153,7 +157,11 @@ module And_unbound = struct
let (let+) = Id.(let+)
end;;
[%%expect{|
module And_unbound : sig val ( let+ ) : 'a -> ('a -> 'b) -> 'b end
module And_unbound :
sig
val ( let+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> ('a -> 'b) -> 'b
end
|}];;

let and_unbound =
Expand All @@ -175,7 +183,8 @@ module Ill_typed_1 = struct

end;;
[%%expect{|
module Ill_typed_1 : sig val ( let+ ) : bool -> (bool -> 'a) -> 'a end
module Ill_typed_1 :
sig val ( let+ ) : ('a : value_or_null). bool -> (bool -> 'a) -> 'a end
|}];;

let ill_typed_1 =
Expand All @@ -200,7 +209,8 @@ end;;
[%%expect{|
module Ill_typed_2 :
sig
val ( let+ ) : 'a -> ('a -> 'b) -> 'b
val ( let+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> ('a -> 'b) -> 'b
val ( and+ ) : float -> float -> float * float
end
|}];;
Expand Down Expand Up @@ -250,7 +260,11 @@ module Ill_typed_4 = struct
end;;
[%%expect{|
module Ill_typed_4 :
sig val ( let+ ) : 'a -> ('a -> 'b) -> 'b val ( and+ ) : bool -> bool end
sig
val ( let+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> ('a -> 'b) -> 'b
val ( and+ ) : bool -> bool
end
|}];;

let ill_typed_4 =
Expand All @@ -277,8 +291,9 @@ end;;
[%%expect{|
module Ill_typed_5 :
sig
val ( let+ ) : bool -> 'a -> bool
val ( and+ ) : 'a -> 'b -> 'a * 'b
val ( let+ ) : ('a : value_or_null). bool -> 'a -> bool
val ( and+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> 'b -> 'a * 'b
end
|}];;

Expand Down Expand Up @@ -307,8 +322,9 @@ end;;
[%%expect{|
module Ill_typed_6 :
sig
val ( let+ ) : 'a -> ('a -> 'b) -> 'b
val ( and+ ) : int -> 'a -> int * 'a
val ( let+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> ('a -> 'b) -> 'b
val ( and+ ) : ('a : value_or_null). int -> 'a -> int * 'a
end
|}];;

Expand Down Expand Up @@ -337,8 +353,9 @@ end;;
[%%expect{|
module Ill_typed_7 :
sig
val ( let+ ) : (int -> 'a) -> int -> 'a
val ( and+ ) : 'a -> 'b -> 'a * 'b
val ( let+ ) : ('a : value_or_null). (int -> 'a) -> int -> 'a
val ( and+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> 'b -> 'a * 'b
end
|}];;

Expand Down Expand Up @@ -534,7 +551,8 @@ module Let_principal = struct
end;;
[%%expect{|
module A : sig type t = A end
module Let_principal : sig val ( let+ ) : A.t -> (A.t -> 'a) -> 'a end
module Let_principal :
sig val ( let+ ) : ('a : value_or_null). A.t -> (A.t -> 'a) -> 'a end
|}];;

let let_principal =
Expand All @@ -554,8 +572,9 @@ end;;
[%%expect{|
module And_principal :
sig
val ( let+ ) : 'a -> ('a -> 'b) -> 'b
val ( and+ ) : A.t -> 'a -> A.t * 'a
val ( let+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> ('a -> 'b) -> 'b
val ( and+ ) : ('a : value_or_null). A.t -> 'a -> A.t * 'a
end
|}];;

Expand All @@ -573,7 +592,11 @@ module Let_not_principal = struct
let ( let+ ) = apply
end;;
[%%expect{|
module Let_not_principal : sig val ( let+ ) : 'a -> ('a -> 'b) -> 'b end
module Let_not_principal :
sig
val ( let+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> ('a -> 'b) -> 'b
end
|}];;

let let_not_principal =
Expand All @@ -599,8 +622,9 @@ end;;
[%%expect{|
module And_not_principal :
sig
val ( let+ ) : 'a -> ('a -> 'b) -> 'b
val ( and+ ) : 'a -> 'a -> 'a * 'a
val ( let+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> ('a -> 'b) -> 'b
val ( and+ ) : ('a : value_or_null). 'a -> 'a -> 'a * 'a
end
|}];;

Expand All @@ -626,7 +650,11 @@ module Let_not_propagated = struct
let ( let+ ) = apply
end;;
[%%expect{|
module Let_not_propagated : sig val ( let+ ) : 'a -> ('a -> 'b) -> 'b end
module Let_not_propagated :
sig
val ( let+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> ('a -> 'b) -> 'b
end
|}];;

let let_not_propagated : A.t =
Expand Down Expand Up @@ -656,9 +684,12 @@ module Side_effects_ordering :
val r : string list ref
val msg : string -> unit
val output : unit -> string list
val ( let+ ) : 'a -> ('a -> 'b) -> 'b
val ( and+ ) : 'a -> 'b -> 'a * 'b
val ( and++ ) : 'a -> 'b -> 'a * 'b
val ( let+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> ('a -> 'b) -> 'b
val ( and+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> 'b -> 'a * 'b
val ( and++ ) :
('a : value_or_null) ('b : value_or_null). 'a -> 'b -> 'a * 'b
end
|}];;

Expand Down Expand Up @@ -687,8 +718,10 @@ module GADT_ordering :
sig
type point = { x : int; y : int; }
type _ is_point = Is_point : point is_point
val ( let+ ) : 'a -> ('a -> 'b) -> 'b
val ( and+ ) : 'a -> 'b -> 'a * 'b
val ( let+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> ('a -> 'b) -> 'b
val ( and+ ) :
('a : value_or_null) ('b : value_or_null). 'a -> 'b -> 'a * 'b
end
|}];;

Expand Down
4 changes: 2 additions & 2 deletions testsuite/tests/letrec-check/basic.ml
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ let rec x =
and y =
[x];;
[%%expect{|
val x : unit -> 'a = <fun>
val y : (unit -> 'a) list = [<fun>]
val x : ('a : value_or_null). unit -> 'a = <fun>
val y : ('a : value_or_null). (unit -> 'a) list = [<fun>]
|}];;

let rec x = [|y|] and y = 0;;
Expand Down
2 changes: 1 addition & 1 deletion testsuite/tests/letrec-check/labels.ml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

let f ~x () = x ();;
[%%expect{|
val f : x:(unit -> 'a) -> unit -> 'a = <fun>
val f : ('a : value_or_null). x:(unit -> 'a) -> unit -> 'a = <fun>
|}];;

let rec x = f ~x;;
Expand Down
2 changes: 1 addition & 1 deletion testsuite/tests/letrec-check/lazy_.ml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Error: This kind of expression is not allowed as right-hand side of "let rec"

let rec e = lazy (fun _ -> f) and f = ();;
[%%expect{|
val e : ('a -> unit) lazy_t = lazy <fun>
val e : ('a : value_or_null). ('a -> unit) lazy_t = lazy <fun>
val f : unit = ()
|}];;

Expand Down
24 changes: 18 additions & 6 deletions testsuite/tests/letrec-check/partial_application.ml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@

let f ~x:_ ~y:_ ~z:_ = ();;
[%%expect{|
val f : x:'a -> y:'b -> z:'c -> unit = <fun>
val f :
('a : value_or_null) ('b : value_or_null) ('c : value_or_null).
x:'a -> y:'b -> z:'c -> unit =
<fun>
|}];;

(* Passing self immediately: forbidden *)
Expand All @@ -19,7 +22,8 @@ Error: This kind of expression is not allowed as right-hand side of "let rec"
(* Passing self after an omitted argument: allowed *)
let rec y = f ~y;;
[%%expect{|
val y : x:'a -> z:'b -> unit = <fun>
val y : ('a : value_or_null) ('b : value_or_null). x:'a -> z:'b -> unit =
<fun>
|}];;

(* Passing self immediately: forbidden even if other arguments are omitted *)
Expand All @@ -35,8 +39,13 @@ Error: This kind of expression is not allowed as right-hand side of "let rec"
let g ~omitted ~given = fun ~given:_ -> given ~omitted
let rec f : omitted:_ -> given:_ -> _ = g ~given:(f ~given:0);;
[%%expect{|
val g : omitted:'a -> given:(omitted:'a -> 'b) -> given:'c -> 'b = <fun>
val f : omitted:'a -> given:int -> 'b = <fun>
val g :
('a : value_or_null) ('b : value_or_null) ('c : value_or_null).
omitted:'a -> given:(omitted:'a -> 'b) -> given:'c -> 'b =
<fun>
val f :
('a : value_or_null) ('b : value_or_null). omitted:'a -> given:int -> 'b =
<fun>
|}];;

(* Calling self: forbidden if the first argument is passed *)
Expand All @@ -45,8 +54,11 @@ let rec f : omitted_g:_ -> omitted_f:_ -> given:_ -> _ =
g ~given:(f ~omitted_g:() ~given:0);;
[%%expect{|
val g :
omitted_g:'a ->
given:(omitted_f:unit -> 'b) -> omitted_f:'c -> given:'d -> 'b = <fun>
('a : value_or_null) ('b : value_or_null) ('c : value_or_null)
('d : value_or_null).
omitted_g:'a ->
given:(omitted_f:unit -> 'b) -> omitted_f:'c -> given:'d -> 'b =
<fun>
Line 3, characters 2-37:
3 | g ~given:(f ~omitted_g:() ~given:0);;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down
4 changes: 3 additions & 1 deletion testsuite/tests/lib-lazy/test.ml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ let logger () =
let log v = log := v :: !log in
log, show_log
[%%expect{|
val logger : unit -> ('a -> unit) * ('b -> 'a list * 'b) = <fun>
val logger :
'a ('b : value_or_null). unit -> ('a -> unit) * ('b -> 'a list * 'b) =
<fun>
|}]

let _ =
Expand Down
4 changes: 2 additions & 2 deletions testsuite/tests/match-exception-warnings/placement.ml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ let f x =
;;

[%%expect{|
val f : (unit -> 'a) -> unit = <fun>
val f : ('a : value_or_null). (unit -> 'a) -> unit = <fun>
|}]
;;

Expand All @@ -25,7 +25,7 @@ let f x =
;;

[%%expect{|
val f : (unit -> 'a) -> unit = <fun>
val f : ('a : value_or_null). (unit -> 'a) -> unit = <fun>
|}]
;;

Expand Down
2 changes: 1 addition & 1 deletion testsuite/tests/match-exception-warnings/reachability.ml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,6 @@ let f x =
;;

[%%expect{|
val f : 'a -> unit = <fun>
val f : ('a : value_or_null). 'a -> unit = <fun>
|}]
;;
2 changes: 1 addition & 1 deletion testsuite/tests/match-side-effects/partiality.ml
Original file line number Diff line number Diff line change
Expand Up @@ -190,5 +190,5 @@ type _ t = Int : int -> int t | Bool : bool -> bool t
(~ (field_imm 0 (field_imm 1 *match*/330)))))
3)))))
(apply (field_imm 1 (global Toploop!)) "test" test/325))
val test : 'a -> int = <fun>
val test : ('a : value_or_null). 'a -> int = <fun>
|}]
2 changes: 1 addition & 1 deletion testsuite/tests/misc/exotic.ml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ let f () = let g ~y = (raise Not_found : 'a) in
let _ = Format.printf "%b@." (try f (); false with Not_found -> true)
[%%expect {|
- : unit = ()
val f : t -> y:'a -> 'b = <fun>
val f : ('a : value_or_null) ('b : value_or_null). t -> y:'a -> 'b = <fun>
false
- : unit = ()
|}]
Expand Down
3 changes: 2 additions & 1 deletion testsuite/tests/parsing/extended_indexoperators.ml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ let _ = 1 #? x.%(0);;
[%%expect {|

let (#?) x y = (x, y);;
val ( #? ) : 'a -> 'b -> 'a * 'b = <fun>
val ( #? ) : ('a : value_or_null) ('b : value_or_null). 'a -> 'b -> 'a * 'b =
<fun>

let (.%()) x y = x.(y);;
val ( .%() ) : 'a array -> int -> 'a = <fun>
Expand Down
Loading