From decbb83f9e7e763d440d9e00861f6dd066e0e487 Mon Sep 17 00:00:00 2001 From: Michael Lamparski Date: Tue, 13 Mar 2018 15:11:53 -0400 Subject: [PATCH] Add test for issue 48941 A broken test to be fixed in the next commit. --- .../auxiliary/macro_crate_test.rs | 10 +++++++ src/test/compile-fail-fulldeps/issue-48941.rs | 29 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/test/compile-fail-fulldeps/issue-48941.rs diff --git a/src/test/compile-fail-fulldeps/auxiliary/macro_crate_test.rs b/src/test/compile-fail-fulldeps/auxiliary/macro_crate_test.rs index 61b1a0a0b4d2..48be4ac6c37b 100644 --- a/src/test/compile-fail-fulldeps/auxiliary/macro_crate_test.rs +++ b/src/test/compile-fail-fulldeps/auxiliary/macro_crate_test.rs @@ -37,6 +37,9 @@ pub fn plugin_registrar(reg: &mut Registry) { reg.register_syntax_extension( Symbol::intern("into_multi_foo"), MultiModifier(Box::new(expand_into_foo_multi))); + reg.register_syntax_extension( + Symbol::intern("noop_attribute"), + MultiModifier(Box::new(expand_noop_attribute))); reg.register_syntax_extension( Symbol::intern("duplicate"), MultiDecorator(Box::new(expand_duplicate))); @@ -93,6 +96,13 @@ fn expand_into_foo_multi(cx: &mut ExtCtxt, } } +fn expand_noop_attribute(_cx: &mut ExtCtxt, + _sp: Span, + _attr: &MetaItem, + it: Annotatable) -> Annotatable { + it +} + // Create a duplicate of the annotatable, based on the MetaItem fn expand_duplicate(cx: &mut ExtCtxt, _sp: Span, diff --git a/src/test/compile-fail-fulldeps/issue-48941.rs b/src/test/compile-fail-fulldeps/issue-48941.rs new file mode 100644 index 000000000000..4be2874ed4ff --- /dev/null +++ b/src/test/compile-fail-fulldeps/issue-48941.rs @@ -0,0 +1,29 @@ +// Copyright 2013-2014 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. + +// This is a regression test against an ICE that used to occur +// on malformed attributes for a custom MultiModifier. + +// aux-build:macro_crate_test.rs +// ignore-stage1 + +#![feature(plugin)] +#![plugin(macro_crate_test)] + +#[noop_attribute"x"] //~ ERROR expected one of +fn night() { } + +#[noop_attribute("hi"), rank = 2] //~ ERROR unexpected token +fn knight() { } + +#[noop_attribute("/user", data= = "