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

[coq] Check version for Coq's (theories ...) field. #3283

Merged
merged 1 commit into from
Mar 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
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
5 changes: 4 additions & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,15 @@ Unreleased

- [coq] Support for theory dependencies and compositional builds using
new field `(theories ...)` (#2053, @ejgallego, @rgrinberg)

- From now on, each version of a syntax extension must be explicitely tied to a
minimum version of the dune language. Inconsistent versions in a
`dune-project` will trigger a warning for version <=2.4 and an error for
versions >2.4 of the dune language. (#3270, fixes #2957, @voodoos)

- [coq] Bump coq-lang version to 0.2, put new features under it
(#3283, @ejgallego)

2.4.0 (06/03/2020)
------------------

Expand Down
15 changes: 8 additions & 7 deletions doc/dune-files.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1526,17 +1526,18 @@ in the ``dune-project`` file. For example:

.. code:: scheme

(using coq 0.1)
(using coq 0.2)

This will enable support for the ``coq.theory`` stanza in the current project. If the
language version is absent, dune will automatically add this line with the
latest Coq version to the project file once a ``(coq.theory ...)`` stanza is used anywhere.

The only version supported is ``0.1`` and it doesn't provide any kind
of guarantees with respect to stability, however, as implementation of
features progresses, we hope to bump ``0.1`` to ``1.0`` soon. The 1.0
version will commit to a stable set of functionality; features marked
``1.0`` below are expected to reach 1.0 unchanged.
The supported Coq language versions are ``0.1``, and ``0.2`` which
adds support for the ``theories`` field. We don't provide any
guarantees with respect to stability yet, however, as implementation
of features progresses, we hope reach ``1.0`` soon. The ``1.0``
version will commit to a stable set of functionality; all the features
below are expected to reach 1.0 unchanged or minimally modified.

The basic form for defining Coq libraries is very similar to the OCaml form:

Expand Down Expand Up @@ -1589,7 +1590,7 @@ The stanza will build all ``.v`` files on the given directory. The semantics of
domain). We will lift this restriction in the future. Note that
composition with the Coq's standard library is supported, but in
this case the ``Coq`` prefix will be made available in a qualified
way.
way. Since Coq's lang version ``0.2``.

Recursive qualification of modules
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down
11 changes: 8 additions & 3 deletions src/dune/dune_file.ml
Original file line number Diff line number Diff line change
Expand Up @@ -1994,7 +1994,8 @@ module Coq = struct

let syntax =
Dune_lang.Syntax.create ~name:"coq" ~desc:"the coq extension (experimental)"
[ ((0, 1), `Since (1, 9)) ]
[ ((0, 1), `Since (1, 9))
; ((0, 2), `Since (2, 5)) ]

let coq_public_decode =
map_validate
Expand Down Expand Up @@ -2043,11 +2044,15 @@ module Coq = struct
and+ synopsis = field_o "synopsis" string
and+ flags = Ordered_set_lang.Unexpanded.field "flags"
and+ boot =
field_b "boot" ~check:(Dune_lang.Syntax.since Stanza.syntax (2, 3))
field_b "boot" ~check:(Dune_lang.Syntax.since syntax (0, 2))
and+ modules = modules_field "modules"
and+ libraries =
field "libraries" (repeat (located Lib_name.decode)) ~default:[]
and+ theories = field "theories" (repeat Coq_lib_name.decode) ~default:[]
and+ theories =
field "theories"
( Dune_lang.Syntax.since syntax (0, 2)
>>> repeat Coq_lib_name.decode )
~default:[]
and+ enabled_if = enabled_if ~since:None in
let package = select_deprecation ~package ~public in
{ name
Expand Down
4 changes: 2 additions & 2 deletions test/blackbox-tests/test-cases/coq/compose_boot/dune-project
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
(lang dune 2.4)
(lang dune 2.5)

(using coq 0.1)
(using coq 0.2)
4 changes: 2 additions & 2 deletions test/blackbox-tests/test-cases/coq/compose_cycle/dune-project
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
(lang dune 2.4)
(lang dune 2.5)

(using coq 0.1)
(using coq 0.2)
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
(lang dune 2.4)
(lang dune 2.5)

(using coq 0.1)
(using coq 0.2)
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
(lang dune 2.4)
(lang dune 2.5)

(using coq 0.1)
(using coq 0.2)
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
(lang dune 2.4)
(lang dune 2.5)

(using coq 0.1)
(using coq 0.2)
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
(lang dune 2.4)
(lang dune 2.5)

(using coq 0.1)
(using coq 0.2)
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
(lang dune 2.4)
(lang dune 2.5)

(using coq 0.1)
(using coq 0.2)