about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-10-27 22:56:39 +0000
committerbors <bors@rust-lang.org>2015-10-27 22:56:39 +0000
commite0e262737478b695d115519f7856e475c17f84e1 (patch)
tree9005b7015d0b9311321259ad6d53134d5b33690e /src/rustllvm/RustWrapper.cpp
parent8a72584f977d2d72f752c2a540e160944159e8db (diff)
parent99f9bb16ab83519d67deaf4ca8a78feeba67fb53 (diff)
downloadrust-e0e262737478b695d115519f7856e475c17f84e1.tar.gz
rust-e0e262737478b695d115519f7856e475c17f84e1.zip
Auto merge of #29072 - nagisa:place-arrow, r=pnkfelix
This commit generalises parsing of associative operators from left-associative
only (with some ugly hacks to support right-associative assignment) to properly
left/right-associative operators.

Parsing is still is not general enough to handle non-associative,
non-highest-precedence prefix or non-highest-precedence
postfix operators (e.g. `..` range syntax) and should be made to be.

Lastly, this commit adds support for parsing right-associative `<-` (left arrow)
operator with precedence higher than assignment as the operator for placement-in
feature.

---

This PR still needs various non-parser changes (e.g. src/grammar and tests) and I’m still working on these; the meat of the PR can already be reviewed, though, I think.

Please review carefully. I made sure that quirks I have discovered so far are preserved (see e.g. https://github.com/rust-lang/rust/issues/29071) and am looking for more corner cases as I continue to work on tests et al, but there may be something I haven’t noticed or accounted for.

EDIT: I’m also not sure I managed to preserve all the semantics with the range operator inside non-trivial expressions since these are a mess at the moment. Crater runs would be nice.
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions