This is a request for FCP on PR #51587, according to #51587 (comment).
Tracking issue: #48075 (?
macro repetition)
Current behavior:
?
is a macro separator, not a Kleene op.Proposed new behavior (implemented in #51587):
?
is a macro separator, not a kleene op, but using it as a separator triggers a migration lint.?
is not a valid separator. ?
is a valid Kleene op.EDIT: To clarify: Under this proposal, $(a)?+
matches +
and a+
unambiguously.
Why we chose this behavior:
Alternatives: The main problem to address is ambiguity. Currently, ?
is a valid separator, so there are a lot of ambiguous possibilities like $(a)?+
. Is the ?
a separator for 1 or more iterations OR is it a zero-or-one kleene op followed by a +
token? The solutions fall into 2 categories: make breaking changes or add fallbacks.
Fallbacks
macro_at_most_once_rep
):
?
kleene op is allowed to take a separator which can never be used (we don't allow trailing separators and ?
allows at most one repetition).?
is followed by +
, *
, or ?
, we treat the ?
as a separator and the second token as a kleene op.?
to take a separator, so the rules would be that ?
followed by +
or *
is a separator, but ?
followed by ?
or any other token would be a ?
kleene op followed by the other token.
Breaking changes
?
repetition disambiguation. #49719, accidentally merged without FCP, and rolled back).
?
as a separator in 2015 edition.?
kleene op from taking a separator.$(a)?+
matches +
and a+
unambiguously. However, it is a breaking change. This was deemed not worthy of a breaking change in the 2015 edition.?
Kleene operator #51587 and is the subject of this FCP.
?
as a separator. Currently, you would just get a compile error.?
repetition disambiguation. #49719 (comment)). However, we did found out later that there was apparently some breakage elsewhere ( Update ?
repetition disambiguation. #49719 (comment)).cc @nikomatsakis
cc @petrochenkov Reviewed the second attempt
cc @durka @alexreg @clarcharr @Centril @kennytm @ExpHP Who participated extensively in the original design discussions (EDIT: apologies if I missed anyone; there were a lot of people who came in at various points)
cc @oli-obk Who brought up clippy breakage
cc @sgrif @pietroalbini Who wanted to see an FCP
Whew... that's a lot of people :)
alexreg, durka and nikomatsakis
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4