-
Notifications
You must be signed in to change notification settings - Fork 13.1k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Add support for trailing commas in more places #16646
Conversation
} | ||
v.push(f(self)); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems like an interesting pattern which is a little difficult to follow, could this just attempt to eat a comma after an expression and if it fails the loop bails out?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, but then I’d need to duplicate the condition in the while
loop that asserts that the following token is a >
, >>
, >=
, or >>=
, right? Because for something like let x: Foo<int = 1;
, it’d see that the =
isn’t a comma, so it’d bail out, but it'd need to check that the =
is one of the aforementioned >
-like tokens. That would mean I’d need to duplicate the condition, which I didn’t want to do.
I went with the other solution because it seemed a lot simpler in my head (‘just parse a type, then a comma, then a type, then a comma, and repeat until you find a >
-like token or it’s not what you expect’). The code did turn out a bit cryptic, though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm ok, perhaps this could use something like count
with a check if the variable modulo two is one? Could you also add a comment explaining how you're just alternating back and forth between parsing the two?
This lets the parser understand trailing commas in method calls, method definitions, enum variants, and type parameters. Closes rust-lang#14240. Closes rust-lang#15887.
7eaf842
to
fde41a3
Compare
Comments addressed; tests pass locally. r? |
remove repetitive words
This lets the parser understand trailing commas in method calls, method definitions, enum variants, and type parameters.
Closes #14240.
Closes #15887.