This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
|
|
@ -0,0 +1,78 @@
|
|||
(*_ This file is manually imported from the Jane Street version of the
|
||||
OCaml compiler. Don't make changes directly to this file. *)
|
||||
[@@@ocaml.warning "-missing-record-field-pattern"]
|
||||
|
||||
open! Shadow_compiler_distribution
|
||||
|
||||
(** Language extensions provided by the Jane Street version of the OCaml
|
||||
compiler.
|
||||
|
||||
This is the signature of the {!Language_extension_kernel} module that is
|
||||
directly imported into [ppxlib_jane].
|
||||
*)
|
||||
|
||||
type maturity =
|
||||
| Stable
|
||||
| Beta
|
||||
| Alpha
|
||||
|
||||
(** The type of language extensions. An ['a t] is an extension that can either
|
||||
be off or be set to have any value in ['a], so a [unit t] can be either on
|
||||
or off, while a [maturity t] can have different maturity settings. *)
|
||||
type _ t =
|
||||
| Comprehensions : unit t
|
||||
| Mode : unit t
|
||||
| Unique : unit t
|
||||
| Include_functor : unit t
|
||||
| Polymorphic_parameters : unit t
|
||||
| Immutable_arrays : unit t
|
||||
| Module_strengthening : unit t
|
||||
| Layouts : maturity t
|
||||
| SIMD : unit t
|
||||
| Labeled_tuples : unit t
|
||||
| Small_numbers : unit t
|
||||
|
||||
module Exist : sig
|
||||
type 'a extn = 'a t
|
||||
type t = Pack : _ extn -> t
|
||||
|
||||
val all : t list
|
||||
end
|
||||
with type 'a extn := 'a t
|
||||
|
||||
module Exist_pair : sig
|
||||
type 'a extn = 'a t
|
||||
type t = Pair : 'a extn * 'a -> t
|
||||
end
|
||||
with type 'a extn := 'a t
|
||||
|
||||
(** Print and parse language extensions; parsing is case-insensitive *)
|
||||
val to_string : _ t -> string
|
||||
|
||||
val of_string : string -> Exist.t option
|
||||
val pair_of_string : string -> Exist_pair.t option
|
||||
val maturity_to_string : maturity -> string
|
||||
|
||||
(** Check if a language extension is "erasable", i.e. whether it can be
|
||||
harmlessly translated to attributes and compiled with the upstream
|
||||
compiler. *)
|
||||
val is_erasable : _ t -> bool
|
||||
|
||||
module type Language_extension_for_jane_syntax = sig
|
||||
(** This module type defines the pieces of functionality used by
|
||||
{!Jane_syntax_parsing} and {!Jane_syntax} so that we can more easily
|
||||
import these modules into [ppxlib_jane], without also including all of the
|
||||
[Language_extension] machinery.
|
||||
|
||||
It includes the stateful operations that {!Jane_syntax_parsing} relies on.
|
||||
This limits the number of bindings that [ppxlib_jane] needs to have mock
|
||||
implementations for.
|
||||
*)
|
||||
|
||||
type nonrec 'a t = 'a t
|
||||
|
||||
(** Check if a language extension is currently enabled. *)
|
||||
val is_enabled : _ t -> bool
|
||||
|
||||
val is_at_least : 'a t -> 'a -> bool
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue