diff options
| author | kennytm <kennytm@gmail.com> | 2018-07-12 20:25:28 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-07-12 20:25:28 +0800 |
| commit | 63cc55b2ecdcccd0ef57ce89fcd5453f6567b63f (patch) | |
| tree | 1ec263db6804eee3e8abc4e1a4958151bc9f75d3 /src/test | |
| parent | c2c6986733ff26f17beb1b5ea7d413b6ad30a240 (diff) | |
| parent | 7735f45eab4b07a3dcb359ea111911cfb9952a5c (diff) | |
| download | rust-63cc55b2ecdcccd0ef57ce89fcd5453f6567b63f.tar.gz rust-63cc55b2ecdcccd0ef57ce89fcd5453f6567b63f.zip | |
Rollup merge of #52276 - alexcrichton:validate-proc-macro-attr, r=petrochenkov
rustc: Verify #[proc_macro] is only a word ... and perform the same verification for #[proc_macro_attribute], currently neither of these attributes take any arguments. Closes #52273
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui-fulldeps/proc-macro/invalid-attributes.rs | 36 | ||||
| -rw-r--r-- | src/test/ui-fulldeps/proc-macro/invalid-attributes.stderr | 38 |
2 files changed, 74 insertions, 0 deletions
diff --git a/src/test/ui-fulldeps/proc-macro/invalid-attributes.rs b/src/test/ui-fulldeps/proc-macro/invalid-attributes.rs new file mode 100644 index 00000000000..c06f98ed5ff --- /dev/null +++ b/src/test/ui-fulldeps/proc-macro/invalid-attributes.rs @@ -0,0 +1,36 @@ +// Copyright 2018 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. + +// no-prefer-dynamic + +#![crate_type = "proc-macro"] +#![feature(proc_macro)] + +extern crate proc_macro; + +use proc_macro::TokenStream; + +#[proc_macro = "test"] //~ ERROR: does not take any arguments +pub fn a(a: TokenStream) -> TokenStream { a } + +#[proc_macro()] //~ ERROR: does not take any arguments +pub fn c(a: TokenStream) -> TokenStream { a } + +#[proc_macro(x)] //~ ERROR: does not take any arguments +pub fn d(a: TokenStream) -> TokenStream { a } + +#[proc_macro_attribute = "test"] //~ ERROR: does not take any arguments +pub fn e(_: TokenStream, a: TokenStream) -> TokenStream { a } + +#[proc_macro_attribute()] //~ ERROR: does not take any arguments +pub fn g(_: TokenStream, a: TokenStream) -> TokenStream { a } + +#[proc_macro_attribute(x)] //~ ERROR: does not take any arguments +pub fn h(_: TokenStream, a: TokenStream) -> TokenStream { a } diff --git a/src/test/ui-fulldeps/proc-macro/invalid-attributes.stderr b/src/test/ui-fulldeps/proc-macro/invalid-attributes.stderr new file mode 100644 index 00000000000..c480bcb5df9 --- /dev/null +++ b/src/test/ui-fulldeps/proc-macro/invalid-attributes.stderr @@ -0,0 +1,38 @@ +error: `#[proc_macro]` attribute does not take any arguments + --> $DIR/invalid-attributes.rs:20:1 + | +LL | #[proc_macro = "test"] //~ ERROR: does not take any arguments + | ^^^^^^^^^^^^^^^^^^^^^^ + +error: `#[proc_macro]` attribute does not take any arguments + --> $DIR/invalid-attributes.rs:23:1 + | +LL | #[proc_macro()] //~ ERROR: does not take any arguments + | ^^^^^^^^^^^^^^^ + +error: `#[proc_macro]` attribute does not take any arguments + --> $DIR/invalid-attributes.rs:26:1 + | +LL | #[proc_macro(x)] //~ ERROR: does not take any arguments + | ^^^^^^^^^^^^^^^^ + +error: `#[proc_macro_attribute]` attribute does not take any arguments + --> $DIR/invalid-attributes.rs:29:1 + | +LL | #[proc_macro_attribute = "test"] //~ ERROR: does not take any arguments + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: `#[proc_macro_attribute]` attribute does not take any arguments + --> $DIR/invalid-attributes.rs:32:1 + | +LL | #[proc_macro_attribute()] //~ ERROR: does not take any arguments + | ^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: `#[proc_macro_attribute]` attribute does not take any arguments + --> $DIR/invalid-attributes.rs:35:1 + | +LL | #[proc_macro_attribute(x)] //~ ERROR: does not take any arguments + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to 6 previous errors + |
