diff --git a/doc/migration.rst b/doc/migration.rst index cf968429..c6d4bd89 100644 --- a/doc/migration.rst +++ b/doc/migration.rst @@ -169,7 +169,7 @@ Jbuild Dune ======================== ============ ``${@}`` ``%{targets}`` ``${^}`` ``%{deps}`` -``${<}`` ``%{deps[0]}`` +``${<}`` ``%{first-dep}`` ``${path:file}`` ``%{dep:file}`` ``${SCOPE_ROOT}`` ``%{project_root}`` ``${findlib:..}`` ``%{lib:..}`` diff --git a/doc/quick-start.rst b/doc/quick-start.rst index ed6024a9..f9272534 100644 --- a/doc/quick-start.rst +++ b/doc/quick-start.rst @@ -136,7 +136,7 @@ Add this field to your ``library`` or ``executable`` stanzas: .. code:: scheme - (preprocess (action (run %{bin:cppo} -V OCAML:%{ocaml_version} %{deps[0]}))) + (preprocess (action (run %{bin:cppo} -V OCAML:%{ocaml_version} %{first-dep}))) Additionally, if you are include a ``config.h`` file, you need to declare the dependency to this file via: @@ -155,7 +155,7 @@ Write this in your ``dune`` file: (rule (targets foo.ml) (deps foo.cppo.ml ) - (action (run %{bin:cppo} %{deps[0]} -o %{targets}))) + (action (run %{bin:cppo} %{first-dep} -o %{targets}))) Defining a library with C stubs =============================== @@ -193,7 +193,7 @@ compilation and link flags. Write this ``dune`` file: (rule (targets c_flags.sexp c_library_flags.sexp) (deps config/discover.exe) - (action (run %{deps[0]} -ocamlc %{OCAMLC}))) + (action (run %{first-dep} -ocamlc %{OCAMLC}))) Then create a ``config`` subdirectory and write this ``dune`` file: @@ -241,7 +241,7 @@ To generate a file ``foo.ml`` using a program from another directory: (rule (targets foo.ml) (deps ../generator/gen.exe) - (action (run %{deps[0]} -o %{targets}))) + (action (run %{first-dep} -o %{targets}))) Defining tests ============== @@ -253,7 +253,7 @@ Write this in your ``dune`` file: (alias (name runtest) (deps my-test-program.exe) - (action (run %{deps[0]}))) + (action (run %{first-dep}))) And run the tests with: diff --git a/example/sample-projects/with-configure-step/dune b/example/sample-projects/with-configure-step/dune index 9ccca784..60995c6d 100644 --- a/example/sample-projects/with-configure-step/dune +++ b/example/sample-projects/with-configure-step/dune @@ -2,7 +2,7 @@ ((fallback) (targets (config)) (deps (config.defaults)) - (action (copy %{deps[0]} %{targets})))) + (action (copy %{first-dep} %{targets})))) (rule ((targets (config.full)) diff --git a/example/sample-projects/with-configure-step/src/dune b/example/sample-projects/with-configure-step/src/dune index 9c1d24bf..6b7bbe3d 100644 --- a/example/sample-projects/with-configure-step/src/dune +++ b/example/sample-projects/with-configure-step/src/dune @@ -8,5 +8,5 @@ (rule ((targets (config.ml)) (deps (../config.full)) - (action (copy %{deps[0]} %{targets})))) + (action (copy %{first-dep} %{targets})))) diff --git a/src/dune b/src/dune index dd878557..0baaf2a0 100644 --- a/src/dune +++ b/src/dune @@ -11,7 +11,7 @@ which_program) (synopsis "Internal Dune library, do not use!")) -(ocamllex meta_lexer glob_lexer dune_lexer dune_vars) +(ocamllex meta_lexer glob_lexer dune_lexer) (rule (targets setup.ml) diff --git a/src/dune_vars.mli b/src/dune_vars.mli deleted file mode 100644 index 29190372..00000000 --- a/src/dune_vars.mli +++ /dev/null @@ -1 +0,0 @@ -val deps : string -> int option diff --git a/src/dune_vars.mll b/src/dune_vars.mll deleted file mode 100644 index 8481d9b5..00000000 --- a/src/dune_vars.mll +++ /dev/null @@ -1,13 +0,0 @@ -{ - open Stdune -} - -let digit = ['0'-'9'] - -rule deps = parse - | "deps[" (digit+ as i) "]" eof { Some (Int.of_string_exn i) } - | _ { None } - -{ -let deps s = deps (Lexing.from_string s) -} diff --git a/src/jbuild.ml b/src/jbuild.ml index 7721d2d8..c5b8aabc 100644 --- a/src/jbuild.ml +++ b/src/jbuild.ml @@ -1243,7 +1243,7 @@ module Rule = struct [ S.virt_text __POS__ "-q" ; S.virt_text __POS__ "-o" ; S.virt_var __POS__ "targets" - ; S.virt_var __POS__"deps[0]" + ; S.virt_var __POS__"first-dep" ]))) ; mode ; locks = [] @@ -1261,7 +1261,7 @@ module Rule = struct Chdir (S.virt_var __POS__ "ROOT", Run (S.virt_text __POS__ "ocamlyacc", - [S.virt_var __POS__ "deps[0]"]))) + [S.virt_var __POS__ "first-dep"]))) ; mode ; locks = [] ; loc diff --git a/src/super_context.ml b/src/super_context.ml index 54dd6420..6a6a49cc 100644 --- a/src/super_context.ml +++ b/src/super_context.ml @@ -807,20 +807,23 @@ module Action = struct match String.Map.find dynamic_expansions key with | Some _ as opt -> opt | None -> - let dep i = - match List.nth deps_written_by_user i with - | None -> - Loc.warn loc "Variable '%s' used with no explicit \ - dependencies@." key; - [Value.String ""] - | Some v -> [Path v] + let first_dep () = + Some ( + match deps_written_by_user with + | [] -> + Loc.warn loc "Variable '%s' used with no explicit \ + dependencies@." key; + [Value.String ""] + | v :: _ -> [Path v] + ) in match key with | "<" -> if syntax_version < (1, 0) then - Some (dep 0) + first_dep () else - Loc.fail loc "Variable '<' is renamed to 'deps[0]' in dune" + Loc.fail loc "Variable '<' is renamed to 'first-dep' in dune" + | "first-dep" when syntax_version >= (1, 0) -> first_dep () | "^" -> if syntax_version < (1, 0) then Some (Value.L.paths deps_written_by_user) @@ -828,11 +831,7 @@ module Action = struct Loc.fail loc "Variable %%{^} has been renamed to %%{deps}" | "deps" when syntax_version >= (1, 0) -> Some (Value.L.paths deps_written_by_user) - | _ -> - if syntax_version < (1, 0) then - None - else - Option.map (Dune_vars.deps key) ~f:dep) + | _ -> None) let run sctx ~loc ?(extra_vars=String.Map.empty) t ~dir ~dep_kind ~targets:targets_written_by_user ~scope diff --git a/test/blackbox-tests/test-cases/force-test/dune b/test/blackbox-tests/test-cases/force-test/dune index eadca903..51e83746 100644 --- a/test/blackbox-tests/test-cases/force-test/dune +++ b/test/blackbox-tests/test-cases/force-test/dune @@ -4,4 +4,4 @@ (alias (name runtest) (deps f.exe) - (action (run %{deps[0]}))) + (action (run %{first-dep}))) diff --git a/test/blackbox-tests/test-cases/github568/dune b/test/blackbox-tests/test-cases/github568/dune index 70af3db3..46bee013 100644 --- a/test/blackbox-tests/test-cases/github568/dune +++ b/test/blackbox-tests/test-cases/github568/dune @@ -8,7 +8,7 @@ (name runtest) (package lib1) (deps test1.exe) - (action (run %{deps[0]}))) + (action (run %{first-dep}))) (executable (name test1) @@ -25,7 +25,7 @@ (name runtest) (package lib2) (deps test2.exe) - (action (run %{deps[0]}))) + (action (run %{first-dep}))) (executable (name test2) diff --git a/test/blackbox-tests/test-cases/github660/explicit-interfaces/dune b/test/blackbox-tests/test-cases/github660/explicit-interfaces/dune index a987515c..7817f984 100644 --- a/test/blackbox-tests/test-cases/github660/explicit-interfaces/dune +++ b/test/blackbox-tests/test-cases/github660/explicit-interfaces/dune @@ -1,6 +1,6 @@ (alias (name runtest) (deps main.exe) - (action (run %{deps[0]}))) + (action (run %{first-dep}))) (executable (name main)) diff --git a/test/blackbox-tests/test-cases/github660/no-interfaces/dune b/test/blackbox-tests/test-cases/github660/no-interfaces/dune index a987515c..7817f984 100644 --- a/test/blackbox-tests/test-cases/github660/no-interfaces/dune +++ b/test/blackbox-tests/test-cases/github660/no-interfaces/dune @@ -1,6 +1,6 @@ (alias (name runtest) (deps main.exe) - (action (run %{deps[0]}))) + (action (run %{first-dep}))) (executable (name main)) diff --git a/test/blackbox-tests/test-cases/output-obj/dune b/test/blackbox-tests/test-cases/output-obj/dune index 05939861..c4858bf5 100644 --- a/test/blackbox-tests/test-cases/output-obj/dune +++ b/test/blackbox-tests/test-cases/output-obj/dune @@ -33,7 +33,7 @@ (rule (targets dynamic.exe) (deps dynamic.c) - (action (run %{CC} -o %{targets} %{deps[0]} %{ocaml-config:native_c_libraries}))) + (action (run %{CC} -o %{targets} %{first-dep} %{ocaml-config:native_c_libraries}))) (alias (name runtest) @@ -48,9 +48,9 @@ (alias (name runtest) (deps test.bc%{ext_dll}) - (action (run ./dynamic.exe ./%{deps[0]}))) + (action (run ./dynamic.exe ./%{first-dep}))) (alias (name runtest) (deps test%{ext_dll}) - (action (run ./dynamic.exe ./%{deps[0]}))) + (action (run ./dynamic.exe ./%{first-dep}))) diff --git a/test/blackbox-tests/test-cases/reason/dune b/test/blackbox-tests/test-cases/reason/dune index 36f366ab..e5dcdd49 100644 --- a/test/blackbox-tests/test-cases/reason/dune +++ b/test/blackbox-tests/test-cases/reason/dune @@ -8,18 +8,18 @@ (lint (per_module ((pps (reasonppx (-lint true))) (hello cppome)) - ((action (run ./pp/reasononlypp.exe -lint %{deps[0]})) (foo bar pped)))) + ((action (run ./pp/reasononlypp.exe -lint %{first-dep})) (foo bar pped)))) (preprocess (per_module ((pps (reasonppx)) (foo)) ((pps (reasonppx (-lint false))) (hello)) - ((action (run ./pp/reasononlypp.exe %{deps[0]})) (cppome)))))) + ((action (run ./pp/reasononlypp.exe %{first-dep})) (cppome)))))) (executable ((name rbin) (modules rbin) - (lint (action (run ./pp/reasononlypp.exe -lint %{deps[0]}))) - (preprocess (action (run ./pp/reasononlypp.exe %{deps[0]}))) + (lint (action (run ./pp/reasononlypp.exe -lint %{first-dep}))) + (preprocess (action (run ./pp/reasononlypp.exe %{first-dep}))) (libraries (rlib)))) ;; we want to make sure that .rei files are present @@ -31,4 +31,4 @@ (alias ((name runtest) (deps (rbin.exe)) - (action (run %{deps[0]})))) + (action (run %{first-dep})))) diff --git a/test/blackbox-tests/test-cases/select/dune b/test/blackbox-tests/test-cases/select/dune index e063a6e8..4e6a6b1f 100644 --- a/test/blackbox-tests/test-cases/select/dune +++ b/test/blackbox-tests/test-cases/select/dune @@ -11,4 +11,4 @@ (alias (name runtest) (deps main.exe) - (action (run %{deps[0]}))) + (action (run %{first-dep}))) diff --git a/test/unit-tests/configurator/dune b/test/unit-tests/configurator/dune index 43977a7d..1e259288 100644 --- a/test/unit-tests/configurator/dune +++ b/test/unit-tests/configurator/dune @@ -5,4 +5,4 @@ (alias (name runtest) (deps ./test_configurator.exe) - (action (run %{deps[0]}))) + (action (run %{first-dep}))) diff --git a/test/unit-tests/dune b/test/unit-tests/dune index d1ca0488..7ee04560 100644 --- a/test/unit-tests/dune +++ b/test/unit-tests/dune @@ -25,8 +25,8 @@ (source_tree findlib-db)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{deps[0]}) - (diff? %{deps[0]} %{deps[0]}.corrected))))) + (run %{exe:expect_test.exe} %{first-dep}) + (diff? %{first-dep} %{first-dep}.corrected))))) (alias (name runtest) @@ -35,8 +35,8 @@ (glob_files %{project_root}/src/stdune/.stdune.objs/*.cmi)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{deps[0]}) - (diff? %{deps[0]} %{deps[0]}.corrected))))) + (run %{exe:expect_test.exe} %{first-dep}) + (diff? %{first-dep} %{first-dep}.corrected))))) (alias (name runtest) @@ -45,8 +45,8 @@ (glob_files %{project_root}/src/stdune/.stdune.objs/*.cmi)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{deps[0]}) - (diff? %{deps[0]} %{deps[0]}.corrected))))) + (run %{exe:expect_test.exe} %{first-dep}) + (diff? %{first-dep} %{first-dep}.corrected))))) (alias (name runtest) @@ -55,8 +55,8 @@ (glob_files %{project_root}/src/stdune/.stdune.objs/*.cmi)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{deps[0]}) - (diff? %{deps[0]} %{deps[0]}.corrected))))) + (run %{exe:expect_test.exe} %{first-dep}) + (diff? %{first-dep} %{first-dep}.corrected))))) (alias (name runtest) @@ -65,8 +65,8 @@ (glob_files %{project_root}/src/stdune/.stdune.objs/*.cmi)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{deps[0]}) - (diff? %{deps[0]} %{deps[0]}.corrected))))) + (run %{exe:expect_test.exe} %{first-dep}) + (diff? %{first-dep} %{first-dep}.corrected))))) (alias (name runtest) @@ -75,8 +75,8 @@ (glob_files %{project_root}/src/stdune/.stdune.objs/*.cmi)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{deps[0]}) - (diff? %{deps[0]} %{deps[0]}.corrected))))) + (run %{exe:expect_test.exe} %{first-dep}) + (diff? %{first-dep} %{first-dep}.corrected))))) (alias (name runtest) @@ -85,5 +85,5 @@ (glob_files %{project_root}/src/stdune/.stdune.objs/*.cmi)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{deps[0]}) - (diff? %{deps[0]} %{deps[0]}.corrected))))) + (run %{exe:expect_test.exe} %{first-dep}) + (diff? %{first-dep} %{first-dep}.corrected))))) diff --git a/test/unit-tests/ocaml-config/dune b/test/unit-tests/ocaml-config/dune index 409881d1..659d3aa3 100644 --- a/test/unit-tests/ocaml-config/dune +++ b/test/unit-tests/ocaml-config/dune @@ -5,4 +5,4 @@ (alias (name runtest) (deps ./gh637.exe) - (action (run %{deps[0]}))) + (action (run %{first-dep})))