about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libsyntax/parse/parser.rs8
-rw-r--r--src/test/compile-fail/placement-expr-unsafe.rs4
-rw-r--r--src/test/compile-fail/placement-expr-unstable.rs2
-rw-r--r--src/test/parse-fail/assoc-oddities-1.rs22
-rw-r--r--src/test/parse-fail/assoc-oddities-2.rs16
-rw-r--r--src/test/parse-fail/assoc-oddities-3.rs16
6 files changed, 62 insertions, 6 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 22032476c9d..6cee7b86a61 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -50,8 +50,7 @@ use ast::{BiSub, StrStyle};
 use ast::{SelfExplicit, SelfRegion, SelfStatic, SelfValue};
 use ast::{Delimited, SequenceRepetition, TokenTree, TraitItem, TraitRef};
 use ast::{TtDelimited, TtSequence, TtToken};
-use ast::{Ty, Ty_, TypeBinding};
-use ast::{TyMac};
+use ast::{Ty, Ty_, TypeBinding, TyMac};
 use ast::{TyFixedLengthVec, TyBareFn, TyTypeof, TyInfer};
 use ast::{TyParam, TyParamBound, TyParen, TyPath, TyPolyTraitRef, TyPtr};
 use ast::{TyRptr, TyTup, TyU32, TyVec};
@@ -2658,7 +2657,10 @@ impl<'a> Parser<'a> {
     }
 
     /// Parse an associative expression with operators of at least `min_prec` precedence
-    pub fn parse_assoc_expr_with(&mut self, min_prec: usize, lhs: Option<P<Expr>>) -> PResult<P<Expr>> {
+    pub fn parse_assoc_expr_with(&mut self,
+                                 min_prec: usize,
+                                 lhs: Option<P<Expr>>)
+                                 -> PResult<P<Expr>> {
         let mut lhs = if lhs.is_some() {
             lhs.unwrap()
         } else if self.token == token::DotDot {
diff --git a/src/test/compile-fail/placement-expr-unsafe.rs b/src/test/compile-fail/placement-expr-unsafe.rs
index 50a840e6c9b..bf6f4c52f1f 100644
--- a/src/test/compile-fail/placement-expr-unsafe.rs
+++ b/src/test/compile-fail/placement-expr-unsafe.rs
@@ -17,8 +17,8 @@ fn main() {
     use std::boxed::HEAP;
 
     let p: *const i32 = &42;
-    let _ = in HEAP { *p }; //~ ERROR requires unsafe
+    let _ = HEAP <- *p; //~ ERROR requires unsafe
 
     let p: *const _ = &HEAP;
-    let _ = in *p { 42 }; //~ ERROR requires unsafe
+    let _ = *p <- 42; //~ ERROR requires unsafe
 }
diff --git a/src/test/compile-fail/placement-expr-unstable.rs b/src/test/compile-fail/placement-expr-unstable.rs
index d981b71a813..23fc8e7a07e 100644
--- a/src/test/compile-fail/placement-expr-unstable.rs
+++ b/src/test/compile-fail/placement-expr-unstable.rs
@@ -18,7 +18,7 @@ extern crate core;
 fn main() {
     use std::boxed::HEAP; //~ ERROR use of unstable library feature
 
-    let _ = in HEAP { //~ ERROR use of unstable library feature
+    let _ = HEAP <- { //~ ERROR use of unstable library feature
         ::core::raw::Slice { //~ ERROR use of unstable library feature
             data: &42, //~ ERROR use of unstable library feature
             len: 1 //~ ERROR use of unstable library feature
diff --git a/src/test/parse-fail/assoc-oddities-1.rs b/src/test/parse-fail/assoc-oddities-1.rs
new file mode 100644
index 00000000000..5c0c47de58a
--- /dev/null
+++ b/src/test/parse-fail/assoc-oddities-1.rs
@@ -0,0 +1,22 @@
+// 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.
+
+// compile-flags: -Z parse-only
+
+fn that_odd_parse() {
+    // following lines below parse and must not fail
+    x = if c { a } else { b }();
+    x <- if c { a } else { b }[n];
+    x = if true { 1 } else { 0 } as *mut _;
+    // however this does not parse and probably should fail to retain compat?
+    // NB: `..` here is arbitrary, failure happens/should happen ∀ops that aren’t `=` or `<-`
+    // see assoc-oddities-2 and assoc-oddities-3
+    ..if c { a } else { b }[n]; //~ ERROR expected one of
+}
diff --git a/src/test/parse-fail/assoc-oddities-2.rs b/src/test/parse-fail/assoc-oddities-2.rs
new file mode 100644
index 00000000000..5679328edc9
--- /dev/null
+++ b/src/test/parse-fail/assoc-oddities-2.rs
@@ -0,0 +1,16 @@
+// 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.
+
+// compile-flags: -Z parse-only
+
+fn that_odd_parse() {
+    // see assoc-oddities-1 for explanation
+    x..if c { a } else { b }[n]; //~ ERROR expected one of
+}
diff --git a/src/test/parse-fail/assoc-oddities-3.rs b/src/test/parse-fail/assoc-oddities-3.rs
new file mode 100644
index 00000000000..0d4f21f0dca
--- /dev/null
+++ b/src/test/parse-fail/assoc-oddities-3.rs
@@ -0,0 +1,16 @@
+// 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.
+
+// compile-flags: -Z parse-only
+
+fn that_odd_parse() {
+    // see assoc-oddities-1 for explanation
+    x + if c { a } else { b }[n]; //~ ERROR expected one of
+}