flan run does not offer --dev, and says so rather than building one
--dev builds a program whose call sites go through indirection cells so something can attach and redefine through them. Nothing can attach to a process this command builds, execs, waits for and deletes, so the flag had no meaning here -- and an --x86 --dev route through run would have falsified Build's own statement that flan dev never reaches that fork because --x86 is read only by flan build. It falls into the refusal arm with a sentence instead.
This commit is contained in:
parent
16498a4e60
commit
96e5fab77f
19
bin/main.ml
19
bin/main.ml
@ -704,8 +704,18 @@ let () =
|
|||||||
one's own that wants [-v] has [--] to ask for it. Plain arguments need
|
one's own that wants [-v] has [--] to ask for it. Plain arguments need
|
||||||
no ceremony: they were never ambiguous and they still go straight
|
no ceremony: they were never ambiguous and they still go straight
|
||||||
through, so [flan run calc-me.flan "1+2"] is unchanged. *)
|
through, so [flan run calc-me.flan "1+2"] is unchanged. *)
|
||||||
let run_flags = [ no_checks_flag; dev_flag; debug_flag; sanitize_flag;
|
(* --dev is deliberately not on this list, and its absence is the point:
|
||||||
x86_flag ] @ opt_levels in
|
a dev build's indirection cells exist so that something can attach and
|
||||||
|
redefine through them, and nothing can attach to a process this command
|
||||||
|
builds, execs, waits for and deletes. Leaving it off means it lands in
|
||||||
|
the refusal below with a sentence, rather than quietly producing a
|
||||||
|
spelling [Build] says does not exist — [flan build]'s --x86 arm records
|
||||||
|
that `flan dev` never reaches its fork because --x86 is read only by
|
||||||
|
[flan build], and an --x86 --dev route through here would have made that
|
||||||
|
sentence false. *)
|
||||||
|
let run_flags =
|
||||||
|
[ no_checks_flag; debug_flag; sanitize_flag; x86_flag ] @ opt_levels
|
||||||
|
in
|
||||||
let build_args, prog_args =
|
let build_args, prog_args =
|
||||||
let rec split acc = function
|
let rec split acc = function
|
||||||
| "--" :: rest -> (List.rev acc, rest)
|
| "--" :: rest -> (List.rev acc, rest)
|
||||||
@ -727,7 +737,6 @@ let () =
|
|||||||
split [] args
|
split [] args
|
||||||
in
|
in
|
||||||
let checks = not (List.mem no_checks_flag build_args) in
|
let checks = not (List.mem no_checks_flag build_args) in
|
||||||
let dev = List.mem dev_flag build_args in
|
|
||||||
let debug = List.mem debug_flag build_args in
|
let debug = List.mem debug_flag build_args in
|
||||||
let sanitize = List.mem sanitize_flag build_args in
|
let sanitize = List.mem sanitize_flag build_args in
|
||||||
let x86 = List.mem x86_flag build_args in
|
let x86 = List.mem x86_flag build_args in
|
||||||
@ -740,9 +749,9 @@ let () =
|
|||||||
in
|
in
|
||||||
let l = load path in
|
let l = load path in
|
||||||
let p = Flan.Check.program_all l.decls in
|
let p = Flan.Check.program_all l.decls in
|
||||||
let p, csrcs, lflags = Flan.Reach.link ~dev l p in
|
let p, csrcs, lflags = Flan.Reach.link l p in
|
||||||
ignore (Flan.Build.executable
|
ignore (Flan.Build.executable
|
||||||
~opts:{ Flan.Build.default with checks; dev; debug; sanitize;
|
~opts:{ Flan.Build.default with checks; debug; sanitize;
|
||||||
x86;
|
x86;
|
||||||
opt = Option.value opt
|
opt = Option.value opt
|
||||||
~default:Flan.Build.default.Flan.Build.opt }
|
~default:Flan.Build.default.Flan.Build.opt }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user