                                 "promote-until-clean"))
     (,(concat "(" dune-builtin-regex) 1 font-lock-builtin-face)
     ("(preprocess[[:space:]]+(\\(pps\\)" 1 font-lock-builtin-face)
+    ("(name +\\(runtest\\))" 1 font-lock-builtin-face)
     (,(eval-when-compile
         (concat "(" (regexp-opt '("fallback") t)))
      1 dune-error-face)

       "ppx_runtime_libraries" "virtual_deps" "js_of_ocaml" "flags"
       "ocamlc_flags" "ocamlopt_flags" "library_flags" "c_flags"
       "cxx_flags" "c_library_flags" "self_build_stubs_archive"
       "modules_without_implementation" "allow_overlapping_dependencies"
       "inline_tests"
       ;; + for "executable" and "executables":
       "package" "link_flags" "link_deps" "names" "public_names"
       ;; + for "rule":
       "targets" "action" "deps" "mode" "fallback" "locks"
       ;; + for "menhir":
       "merge_into"
       ;; + for "install"
       "section" "files")
     'symbols))

(defvar dune-error-face 'dune-error-face
  "Face for errors (e.g. obsolete constructs).")

(defconst dune-stanzas-regex
  (eval-when-compile
    (concat (regexp-opt
             '("library" "executable" "executables" "rule"
               "ocamllex" "ocamlyacc" "menhir" "alias" "install"
               "copy_files" "copy_files#" "include" "tests" "test"
               "env" "ignored_subdirs" "include_subdirs")
             ) "\\(?:\\_>\\|[[:space:]]\\)"))
  "Stanzas in dune files.")

(defconst dune-fields-regex
  (eval-when-compile
