(env
  (_
    (flags (:standard -warn-error @22))))

;;; should succeed

;; version syntax
(library
  (name good_version_syntax)
  (preprocess (pps ppx_jane ppx_version ppx_deriving_yojson))
  (libraries base.caml core_kernel bin_prot.shape ppx_version.runtime)
  (modules good_version_syntax))

;; versioning
(library
  (name versioned_good)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules versioned_good))

;; module versioning
(executable
  (name versioned_module_good)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime mina_stdlib)
  (modules versioned_module_good))

(executable
  (name versioned_sig_good)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules versioned_sig_good))

;;; should fail

;; version syntax

(library
  (name bad_version_syntax_missing_versioned)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules bad_version_syntax_missing_versioned))

(library
  (name bad_versioned_in_functor)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules bad_versioned_in_functor))

(library
  (name bad_versioned_in_nested_functor)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules bad_versioned_in_nested_functor))

(library
  (name bad_version_syntax_multiple_errors)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules bad_version_syntax_multiple_errors))

;; versioning

(library
 (name versioned_bad_module_name)
 (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
 (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
 (modules versioned_bad_module_name))

(library
 (name versioned_bad_version_name)
 (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
 (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
 (modules versioned_bad_version_name))

(library
  (name versioned_bad_type_name)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules versioned_bad_type_name))

(library
  (name versioned_bad_option)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules versioned_bad_option))

(library
  (name versioned_bad_contained_types)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules versioned_bad_contained_types))

(library
  (name versioned_bad_arrow_type)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules versioned_bad_arrow_type))

;; module versioning
(library
  (name versioned_module_bad_stable_name)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules versioned_module_bad_stable_name))

(library
  (name versioned_module_bad_version_name)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules versioned_module_bad_version_name))

(library
  (name versioned_module_bad_missing_type)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules versioned_module_bad_missing_type))

(library
  (name versioned_module_bad_version_order)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules versioned_module_bad_version_order))

(library
  (name versioned_module_bad_missing_to_latest)
  (preprocess (pps ppx_jane ppx_deriving_yojson ppx_version))
  (libraries base.caml core_kernel bin_prot.shape sexplib0 ppx_version.runtime)
  (modules versioned_module_bad_missing_to_latest))
