Fix argument parsing of flags in the presence of allowPositional=true #66
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.
Should fix #58 and #60
Previously, we allowed any arg to take positional arguments if
allowPositional = true
(which is the case for Ammonite and Mill user-defined entrypoints.), evenmainargs.Flag
s. for which being positional doesn't make sense.The relevant code path was rewritten in #62, but the buggy behavior was preserved before and after that change. This wasn't caught in other uses of
mainargs.Flag
, e.g. for Ammonite/Mill's own flags, because those did not setallowPositional=true
This PR tweaks
TokenGrouping.groupArgs
to be more discerning about how it selects positional, keyword, and missing arguments:Now, only
TokenReader.Simple[_]
s with.positional
orallowPositional
can be positional;Flag
s,Leftover
, etc. cannotKeyword arguments are limited only to
Flag
s andSimple
with!a.positional
Added
mainargs.IssueTests.issue60
as a regression test, that fails on main and passes on this PR. Existing tests all pass