diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs index 3522c8863cf52..69e24cf071902 100644 --- a/src/libsyntax/ext/tt/macro_rules.rs +++ b/src/libsyntax/ext/tt/macro_rules.rs @@ -179,7 +179,7 @@ fn generic_extension<'cx>(cx: &'cx ExtCtxt, for (i, lhs) in lhses.iter().enumerate() { // try each arm's matchers let lhs_tt = match *lhs { TokenTree::Delimited(_, ref delim) => &delim.tts[..], - _ => cx.span_fatal(sp, "malformed macro lhs") + _ => cx.span_bug(sp, "malformed macro lhs") }; match TokenTree::parse(cx, lhs_tt, arg) { @@ -187,7 +187,7 @@ fn generic_extension<'cx>(cx: &'cx ExtCtxt, let rhs = match rhses[i] { // ignore delimiters TokenTree::Delimited(_, ref delimed) => delimed.tts.clone(), - _ => cx.span_fatal(sp, "malformed macro rhs"), + _ => cx.span_bug(sp, "malformed macro rhs"), }; // rhs has holes ( `$id` and `$(...)` that need filled) let trncbr = new_tt_reader(&cx.parse_sess().span_diagnostic, @@ -326,19 +326,14 @@ pub fn compile<'cx>(cx: &'cx mut ExtCtxt, NormalTT(exp, Some(def.span), def.allow_internal_unstable) } -// why is this here? because of https://github.com/rust-lang/rust/issues/27774 -fn ref_slice(s: &A) -> &[A] { use std::slice::from_raw_parts; unsafe { from_raw_parts(s, 1) } } - fn check_lhs_nt_follows(cx: &mut ExtCtxt, lhs: &TokenTree) -> bool { // lhs is going to be like TokenTree::Delimited(...), where the // entire lhs is those tts. Or, it can be a "bare sequence", not wrapped in parens. match lhs { &TokenTree::Delimited(_, ref tts) => check_matcher(cx, &tts.tts), - tt @ &TokenTree::Sequence(..) => check_matcher(cx, ref_slice(tt)), _ => { - cx.span_err(lhs.get_span(), - "invalid macro matcher; matchers must be contained \ - in balanced delimiters or a repetition indicator"); + cx.span_err(lhs.get_span(), "invalid macro matcher; matchers must \ + be contained in balanced delimiters"); false } } diff --git a/src/test/compile-fail/malformed_macro_lhs.rs b/src/test/compile-fail/malformed_macro_lhs.rs index 88e19af2eea07..5d81e21f05684 100644 --- a/src/test/compile-fail/malformed_macro_lhs.rs +++ b/src/test/compile-fail/malformed_macro_lhs.rs @@ -9,9 +9,9 @@ // except according to those terms. macro_rules! my_precioooous { - $($t:tt)* => (1); + $($t:tt)* => (1); //~ ERROR invalid macro matcher } fn main() { - my_precioooous!(); //~ ERROR malformed macro lhs + my_precioooous!(); } diff --git a/src/test/run-pass/issue-21350.rs b/src/test/run-pass/issue-21350.rs deleted file mode 100644 index ff205cd694c3a..0000000000000 --- a/src/test/run-pass/issue-21350.rs +++ /dev/null @@ -1,19 +0,0 @@ -// 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// Make sure that "bare sequences" don't ICE in follow checking - -// pretty-expanded FIXME #23616 - -macro_rules! bare { - $($id:expr),+ => ( $($id)+ ) -} - -fn main() { }