-
Notifications
You must be signed in to change notification settings - Fork 56
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
Term.exit and exit_status_of_result require a unit result #124
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Previously, `exit` allowed passing any value to it and just ignored it. This leads to various errors going undetected. e.g. this program returns a successful exit status and displays no output, which is surprising: let revolt () = Error (`Msg "Revolt!") open Cmdliner let revolt_t = Term.(const revolt $ const ()) let () = Term.exit @@ Term.eval (revolt_t, Term.info "revolt") It also causes confusion when an argument is missing, e.g. let chorus count msg = for i = 1 to count do print_endline msg done open Cmdliner let count = let doc = "Repeat the message $(docv) times." in Arg.(value & opt int 10 & info ["c"; "count"] ~docv:"COUNT" ~doc) let chorus_t = Term.(const chorus $ count) let () = Term.exit @@ Term.eval (chorus_t, Term.info "count") This program compiled without error, but produces no output. With this change, both programs report errors at compile-time.
This was referenced Dec 22, 2020
Testing this with the packages I have installed in my switch at the moment:
|
talex5
added a commit
to talex5/ocaml-ci
that referenced
this pull request
Dec 22, 2020
We previously passed the error to cmdliner, but that just ignores it and exits with success. See dbuenzli/cmdliner#124.
talex5
added a commit
to talex5/ocaml-ci
that referenced
this pull request
Dec 22, 2020
We previously passed the error to cmdliner, but that just ignores it and exits with success. See dbuenzli/cmdliner#124.
talex5
added a commit
to talex5/ocaml-ci
that referenced
this pull request
Dec 22, 2020
We previously passed the error to cmdliner, but that just ignores it and exits with success. See dbuenzli/cmdliner#124.
talex5
added a commit
to talex5/ocluster
that referenced
this pull request
Dec 22, 2020
talex5
added a commit
to talex5/ocurrent
that referenced
this pull request
Dec 23, 2020
Also, use `Cmdliner.Term.term_result` for correct error handling (see dbuenzli/cmdliner#124).
talex5
added a commit
to talex5/ocurrent-skeleton
that referenced
this pull request
Dec 23, 2020
Also, use `Cmdliner.Term.term_result` for correct error handling (see dbuenzli/cmdliner#124).
talex5
added a commit
to talex5/ocurrent-skeleton
that referenced
this pull request
Dec 23, 2020
Also, use `Cmdliner.Term.term_result` for correct error handling (see dbuenzli/cmdliner#124).
talex5
added a commit
to talex5/ocurrent-skeleton
that referenced
this pull request
Dec 23, 2020
Also, use `Cmdliner.Term.term_result` for correct error handling (see dbuenzli/cmdliner#124).
talex5
added a commit
to talex5/ocurrent-skeleton
that referenced
this pull request
Dec 23, 2020
Also, use `Cmdliner.Term.term_result` for correct error handling (see dbuenzli/cmdliner#124).
talex5
added a commit
to talex5/opam-repo-ci
that referenced
this pull request
Dec 23, 2020
Also, fix exit code on error (see dbuenzli/cmdliner#124).
talex5
added a commit
to talex5/ocaml-base-images
that referenced
this pull request
Dec 23, 2020
Also, fix exit code on error (see dbuenzli/cmdliner#124).
talex5
added a commit
to talex5/ocaml-base-images
that referenced
this pull request
Dec 23, 2020
Also, fix exit code on error (see dbuenzli/cmdliner#124).
I wish I had done these right from the onset :-( I'm a bit nervous changing these things. But your bad examples are compelling enough. Your patch is in as 2f02ae4. Thanks ! |
@talex5 you also found a bug in one of my programs which was using |
This was referenced Feb 6, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously,
exit
allowed passing any value to it and just ignored it. This leads to various errors going undetected. e.g. this program returns a successful exit status and displays no output, which is surprising:It also causes confusion when an argument is missing, e.g.
This program compiled without error, but produces no output.
With this change, both programs report errors at compile-time.