Jkind.ConstConstant jkinds are used for user-written annotations. They are not actually constant, though: they might contain variables in with-types. The "constant" refers to the fact that there are no sort variables here. The existence of with-types means, though, that we still need the allowance machinery here.
include Allowance.Allow_disallow with type (_, _, 'd) sided = 'd ttype (_, _, 'd) sided = 'd tval disallow_right :
('a, 'b, 'l * 'r) sided ->
('a, 'b, 'l * Allowance.disallowed) sidedDisallows on the right.
val disallow_left :
('a, 'b, 'l * 'r) sided ->
('a, 'b, Allowance.disallowed * 'r) sidedDisallows a the left.
val allow_right :
('a, 'b, 'l * Allowance.allowed) sided ->
('a, 'b, 'l * 'r) sidedGeneralizes a right-hand-side allowed to be any allowance.
val allow_left :
('a, 'b, Allowance.allowed * 'r) sided ->
('a, 'b, 'l * 'r) sidedGeneralizes a left-hand-side allowed to be any allowance.
val to_out_jkind_const : 'd t -> Outcometree.out_jkind_constThis returns true iff both types have no with-bounds and they are equal. Normally, we want an equality check to happen only on values that are allowed on both the left and the right. But a type with no with-bounds is allowed on the left and the right, so we test for that condition first before doing the proper equality check.
module Builtin : sig ... end