471f5a1f9a
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 still is not general enough to handle non-associative, non-highest-precedence prefix or non-highest-precedence postfix operators (e.g. `..` range syntax), though. That should be fixed in the future. Lastly, this commit adds support for parsing right-associative `<-` (left arrow) operator with precedence higher than assignment as the operator for placement-in feature.
25 lines
867 B
Rust
25 lines
867 B
Rust
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
|
// file at the top-level directory of this distribution and at
|
|
// http://rust-lang.org/COPYRIGHT.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
// option. This file may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
|
|
// Check that `in PLACE { EXPR }` is feature-gated.
|
|
//
|
|
// See also feature-gate-box-expr.rs
|
|
//
|
|
// (Note that the two tests are separated since the checks appear to
|
|
// be performed at distinct phases, with an abort_if_errors call
|
|
// separating them.)
|
|
|
|
fn main() {
|
|
use std::boxed::HEAP;
|
|
|
|
let x = HEAP <- 'c'; //~ ERROR placement-in expression syntax is experimental
|
|
println!("x: {}", x);
|
|
}
|