diff options
| author | Keegan McAllister <kmcallister@mozilla.com> | 2015-02-06 13:56:38 -0800 |
|---|---|---|
| committer | Keegan McAllister <kmcallister@mozilla.com> | 2015-02-09 13:27:27 -0800 |
| commit | 93b642d9743edea728ef08b2d6fd17229caaad43 (patch) | |
| tree | b88ec4e6fac283b95735e7c34dac6760e53a2874 /src/test | |
| parent | 0ba9e1fa52627404a1e5b90f745f96a872a0c564 (diff) | |
Use a crate attribute to load plugins
#[plugin] #[no_link] extern crate bleh;
becomes a crate attribute
#![plugin(bleh)]
The feature gate is still required.
It's almost never correct to link a plugin into the resulting library /
executable, because it will bring all of libsyntax and librustc with it.
However if you really want this behavior, you can get it with a separate
`extern crate` item in addition to the `plugin` attribute.
Fixes #21043.
Fixes #20769.
[breaking-change]
Diffstat (limited to 'src/test')
29 files changed, 63 insertions, 85 deletions
diff --git a/src/test/auxiliary/plugin_args.rs b/src/test/auxiliary/plugin_args.rs index 6779cf997c1..907d80b50db 100644 --- a/src/test/auxiliary/plugin_args.rs +++ b/src/test/auxiliary/plugin_args.rs @@ -27,7 +27,7 @@ use syntax::ptr::P; use rustc::plugin::Registry; struct Expander { - args: P<ast::MetaItem>, + args: Vec<P<ast::MetaItem>>, } impl TTMacroExpander for Expander { @@ -35,10 +35,9 @@ impl TTMacroExpander for Expander { ecx: &'cx mut ExtCtxt, sp: Span, _: &[ast::TokenTree]) -> Box<MacResult+'cx> { - - let attr = ecx.attribute(sp, self.args.clone()); - let src = pprust::attribute_to_string(&attr); - let interned = token::intern_and_get_ident(&src); + let args = self.args.iter().map(|i| pprust::meta_item_to_string(&*i)) + .collect::<Vec<_>>().connect(", "); + let interned = token::intern_and_get_ident(&args[]); MacExpr::new(ecx.expr_str(sp, interned)) } } diff --git a/src/test/auxiliary/syntax-extension-with-dll-deps-1.rs b/src/test/auxiliary/syntax_extension_with_dll_deps_1.rs index 338e04fbb07..338e04fbb07 100644 --- a/src/test/auxiliary/syntax-extension-with-dll-deps-1.rs +++ b/src/test/auxiliary/syntax_extension_with_dll_deps_1.rs diff --git a/src/test/auxiliary/syntax-extension-with-dll-deps-2.rs b/src/test/auxiliary/syntax_extension_with_dll_deps_2.rs index 5ad1d244c92..7a24dd76f32 100644 --- a/src/test/auxiliary/syntax-extension-with-dll-deps-2.rs +++ b/src/test/auxiliary/syntax_extension_with_dll_deps_2.rs @@ -13,7 +13,7 @@ #![crate_type = "dylib"] #![feature(plugin_registrar, quote)] -extern crate "syntax-extension-with-dll-deps-1" as other; +extern crate "syntax_extension_with_dll_deps_1" as other; extern crate syntax; extern crate rustc; diff --git a/src/test/compile-fail-fulldeps/gated-plugin.rs b/src/test/compile-fail-fulldeps/gated-plugin.rs index be9e57e2d19..9fa93063ea3 100644 --- a/src/test/compile-fail-fulldeps/gated-plugin.rs +++ b/src/test/compile-fail-fulldeps/gated-plugin.rs @@ -11,7 +11,7 @@ // aux-build:macro_crate_test.rs // ignore-stage1 -#[plugin] #[no_link] extern crate macro_crate_test; +#![plugin(macro_crate_test)] //~^ ERROR compiler plugins are experimental and possibly buggy fn main() {} diff --git a/src/test/compile-fail-fulldeps/lint-group-plugin-deny-cmdline.rs b/src/test/compile-fail-fulldeps/lint-group-plugin-deny-cmdline.rs index 11ae5563959..a523799278c 100644 --- a/src/test/compile-fail-fulldeps/lint-group-plugin-deny-cmdline.rs +++ b/src/test/compile-fail-fulldeps/lint-group-plugin-deny-cmdline.rs @@ -13,9 +13,7 @@ // compile-flags: -D lint-me #![feature(plugin)] - -#[plugin] #[no_link] -extern crate lint_group_plugin_test; +#![plugin(lint_group_plugin_test)] fn lintme() { } //~ ERROR item is named 'lintme' diff --git a/src/test/compile-fail-fulldeps/lint-plugin-deny-attr.rs b/src/test/compile-fail-fulldeps/lint-plugin-deny-attr.rs index 62007d6575a..e3dbdc331a7 100644 --- a/src/test/compile-fail-fulldeps/lint-plugin-deny-attr.rs +++ b/src/test/compile-fail-fulldeps/lint-plugin-deny-attr.rs @@ -12,11 +12,9 @@ // ignore-stage1 #![feature(plugin)] +#![plugin(lint_plugin_test)] #![deny(test_lint)] -#[plugin] #[no_link] -extern crate lint_plugin_test; - fn lintme() { } //~ ERROR item is named 'lintme' pub fn main() { diff --git a/src/test/compile-fail-fulldeps/lint-plugin-deny-cmdline.rs b/src/test/compile-fail-fulldeps/lint-plugin-deny-cmdline.rs index da51c047f57..41d25becd84 100644 --- a/src/test/compile-fail-fulldeps/lint-plugin-deny-cmdline.rs +++ b/src/test/compile-fail-fulldeps/lint-plugin-deny-cmdline.rs @@ -13,9 +13,7 @@ // compile-flags: -D test-lint #![feature(plugin)] - -#[plugin] #[no_link] -extern crate lint_plugin_test; +#![plugin(lint_plugin_test)] fn lintme() { } //~ ERROR item is named 'lintme' diff --git a/src/test/compile-fail-fulldeps/lint-plugin-forbid-attrs.rs b/src/test/compile-fail-fulldeps/lint-plugin-forbid-attrs.rs index cf51958b53d..83c845bfdf9 100644 --- a/src/test/compile-fail-fulldeps/lint-plugin-forbid-attrs.rs +++ b/src/test/compile-fail-fulldeps/lint-plugin-forbid-attrs.rs @@ -12,11 +12,9 @@ // ignore-stage1 #![feature(plugin)] +#![plugin(lint_plugin_test)] #![forbid(test_lint)] -#[plugin] #[no_link] -extern crate lint_plugin_test; - fn lintme() { } //~ ERROR item is named 'lintme' #[allow(test_lint)] //~ ERROR allow(test_lint) overruled by outer forbid(test_lint) diff --git a/src/test/compile-fail-fulldeps/lint-plugin-forbid-cmdline.rs b/src/test/compile-fail-fulldeps/lint-plugin-forbid-cmdline.rs index 9a36143f65c..155294f8026 100644 --- a/src/test/compile-fail-fulldeps/lint-plugin-forbid-cmdline.rs +++ b/src/test/compile-fail-fulldeps/lint-plugin-forbid-cmdline.rs @@ -13,9 +13,7 @@ // compile-flags: -F test-lint #![feature(plugin)] - -#[plugin] #[no_link] -extern crate lint_plugin_test; +#![plugin(lint_plugin_test)] fn lintme() { } //~ ERROR item is named 'lintme' diff --git a/src/test/compile-fail-fulldeps/macro-crate-cannot-read-embedded-ident.rs b/src/test/compile-fail-fulldeps/macro-crate-cannot-read-embedded-ident.rs index 2e727f19635..c9ca6e5326c 100644 --- a/src/test/compile-fail-fulldeps/macro-crate-cannot-read-embedded-ident.rs +++ b/src/test/compile-fail-fulldeps/macro-crate-cannot-read-embedded-ident.rs @@ -21,9 +21,7 @@ // ident form. #![feature(plugin)] - -#[plugin] #[no_link] -extern crate macro_crate_test; +#![plugin(macro_crate_test)] fn main() { let x = 0; diff --git a/src/test/compile-fail-fulldeps/macro-crate-rlib.rs b/src/test/compile-fail-fulldeps/macro-crate-rlib.rs index 1f44ac7cf9c..7d38d4352b0 100644 --- a/src/test/compile-fail-fulldeps/macro-crate-rlib.rs +++ b/src/test/compile-fail-fulldeps/macro-crate-rlib.rs @@ -15,7 +15,7 @@ // ignore-cross-compile gives a different error message #![feature(plugin)] -#[plugin] #[no_link] extern crate rlib_crate_test; +#![plugin(rlib_crate_test)] //~^ ERROR: plugin crate `rlib_crate_test` only found in rlib format, but must be available in dylib format fn main() {} diff --git a/src/test/compile-fail-fulldeps/plugin-MacroRulesTT.rs b/src/test/compile-fail-fulldeps/plugin-MacroRulesTT.rs index cff2e5eaf87..68b27822d3d 100644 --- a/src/test/compile-fail-fulldeps/plugin-MacroRulesTT.rs +++ b/src/test/compile-fail-fulldeps/plugin-MacroRulesTT.rs @@ -14,8 +14,6 @@ // error-pattern: plugin tried to register a new MacroRulesTT #![feature(plugin)] - -#[plugin] #[no_link] -extern crate macro_crate_MacroRulesTT; +#![plugin(macro_crate_MacroRulesTT)] fn main() { } diff --git a/src/test/run-pass-fulldeps/plugin-args-4.rs b/src/test/compile-fail/malformed-plugin-1.rs index 8563c8c178f..254a797ef1c 100644 --- a/src/test/run-pass-fulldeps/plugin-args-4.rs +++ b/src/test/compile-fail/malformed-plugin-1.rs @@ -8,15 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// aux-build:plugin_args.rs -// ignore-stage1 +#![plugin] //~ ERROR malformed plugin attribute -#![feature(plugin)] - -#[no_link] -#[plugin="foobar"] -extern crate plugin_args; - -fn main() { - assert_eq!(plugin_args!(), "#[plugin = \"foobar\"]"); -} +fn main() {} diff --git a/src/test/compile-fail/malformed-plugin-2.rs b/src/test/compile-fail/malformed-plugin-2.rs new file mode 100644 index 00000000000..884087b7bc5 --- /dev/null +++ b/src/test/compile-fail/malformed-plugin-2.rs @@ -0,0 +1,13 @@ +// 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. + +#![plugin="bleh"] //~ ERROR malformed plugin attribute + +fn main() {} diff --git a/src/test/compile-fail/malformed-plugin-3.rs b/src/test/compile-fail/malformed-plugin-3.rs new file mode 100644 index 00000000000..4885bb901df --- /dev/null +++ b/src/test/compile-fail/malformed-plugin-3.rs @@ -0,0 +1,13 @@ +// 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. + +#![plugin(foo="bleh")] //~ ERROR malformed plugin attribute + +fn main() {} diff --git a/src/test/compile-fail/multi-plugin-attr.rs b/src/test/compile-fail/plugin-extern-crate-attr-deprecated.rs index 1d98cd26a38..e27f193cbe8 100644 --- a/src/test/compile-fail/multi-plugin-attr.rs +++ b/src/test/compile-fail/plugin-extern-crate-attr-deprecated.rs @@ -8,8 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#[plugin] -#[plugin] //~ ERROR #[plugin] specified multiple times +#[plugin] //~ ERROR #[plugin] on `extern crate` is deprecated extern crate std; fn main() {} diff --git a/src/test/run-pass-fulldeps/issue_16723_multiple_items_syntax_ext.rs b/src/test/run-pass-fulldeps/issue_16723_multiple_items_syntax_ext.rs index 11e7da77029..c59a3589c04 100644 --- a/src/test/run-pass-fulldeps/issue_16723_multiple_items_syntax_ext.rs +++ b/src/test/run-pass-fulldeps/issue_16723_multiple_items_syntax_ext.rs @@ -12,8 +12,7 @@ // ignore-android // aux-build:issue_16723_multiple_items_syntax_ext.rs #![feature(plugin)] - -#[plugin] #[no_link] extern crate issue_16723_multiple_items_syntax_ext; +#![plugin(issue_16723_multiple_items_syntax_ext)] multiple_items!(); diff --git a/src/test/run-pass-fulldeps/lint-group-plugin.rs b/src/test/run-pass-fulldeps/lint-group-plugin.rs index 7615b25f9e4..1a639cdb9dd 100644 --- a/src/test/run-pass-fulldeps/lint-group-plugin.rs +++ b/src/test/run-pass-fulldeps/lint-group-plugin.rs @@ -13,9 +13,7 @@ // ignore-pretty #![feature(plugin)] - -#[plugin] #[no_link] -extern crate lint_group_plugin_test; +#![plugin(lint_group_plugin_test)] fn lintme() { } //~ WARNING item is named 'lintme' fn pleaselintme() { } //~ WARNING item is named 'pleaselintme' diff --git a/src/test/run-pass-fulldeps/lint-plugin-cmdline-allow.rs b/src/test/run-pass-fulldeps/lint-plugin-cmdline-allow.rs index 7144d2b0f1e..204312064b5 100644 --- a/src/test/run-pass-fulldeps/lint-plugin-cmdline-allow.rs +++ b/src/test/run-pass-fulldeps/lint-plugin-cmdline-allow.rs @@ -13,9 +13,7 @@ // compile-flags: -A test-lint #![feature(plugin)] - -#[plugin] #[no_link] -extern crate lint_plugin_test; +#![plugin(lint_plugin_test)] fn lintme() { } diff --git a/src/test/run-pass-fulldeps/lint-plugin.rs b/src/test/run-pass-fulldeps/lint-plugin.rs index d11242f4fe6..8311e188f92 100644 --- a/src/test/run-pass-fulldeps/lint-plugin.rs +++ b/src/test/run-pass-fulldeps/lint-plugin.rs @@ -13,9 +13,7 @@ // ignore-pretty #![feature(plugin)] - -#[plugin] #[no_link] -extern crate lint_plugin_test; +#![plugin(lint_plugin_test)] fn lintme() { } //~ WARNING item is named 'lintme' diff --git a/src/test/run-pass-fulldeps/macro-crate-does-hygiene-work.rs b/src/test/run-pass-fulldeps/macro-crate-does-hygiene-work.rs index 497afae6189..8ed47fe1f6f 100644 --- a/src/test/run-pass-fulldeps/macro-crate-does-hygiene-work.rs +++ b/src/test/run-pass-fulldeps/macro-crate-does-hygiene-work.rs @@ -15,9 +15,7 @@ // uses `quote_expr!` to rearrange it should be hygiene-preserving. #![feature(plugin)] - -#[plugin] #[no_link] -extern crate macro_crate_test; +#![plugin(macro_crate_test)] fn main() { let x = 3; diff --git a/src/test/run-pass-fulldeps/macro-crate-outlive-expansion-phase.rs b/src/test/run-pass-fulldeps/macro-crate-outlive-expansion-phase.rs index d943cf0457b..9573d0c8c40 100644 --- a/src/test/run-pass-fulldeps/macro-crate-outlive-expansion-phase.rs +++ b/src/test/run-pass-fulldeps/macro-crate-outlive-expansion-phase.rs @@ -12,8 +12,6 @@ // ignore-stage1 #![feature(plugin)] - -#[plugin] #[no_link] -extern crate plugin_crate_outlive_expansion_phase; +#![plugin(plugin_crate_outlive_expansion_phase)] pub fn main() {} diff --git a/src/test/run-pass-fulldeps/macro-crate.rs b/src/test/run-pass-fulldeps/macro-crate.rs index a9e93aa8df5..58ccd79b712 100644 --- a/src/test/run-pass-fulldeps/macro-crate.rs +++ b/src/test/run-pass-fulldeps/macro-crate.rs @@ -12,8 +12,9 @@ // ignore-stage1 #![feature(plugin)] +#![plugin(macro_crate_test)] -#[macro_use] #[plugin] #[no_link] +#[macro_use] #[no_link] extern crate macro_crate_test; #[into_foo] diff --git a/src/test/run-pass-fulldeps/plugin-args-1.rs b/src/test/run-pass-fulldeps/plugin-args-1.rs index 5a91f603f96..4d4f9092bc8 100644 --- a/src/test/run-pass-fulldeps/plugin-args-1.rs +++ b/src/test/run-pass-fulldeps/plugin-args-1.rs @@ -12,11 +12,8 @@ // ignore-stage1 #![feature(plugin)] - -#[no_link] -#[plugin] -extern crate plugin_args; +#![plugin(plugin_args)] fn main() { - assert_eq!(plugin_args!(), "#[plugin]"); + assert_eq!(plugin_args!(), ""); } diff --git a/src/test/run-pass-fulldeps/plugin-args-2.rs b/src/test/run-pass-fulldeps/plugin-args-2.rs index d0ac22a5290..4da566aec42 100644 --- a/src/test/run-pass-fulldeps/plugin-args-2.rs +++ b/src/test/run-pass-fulldeps/plugin-args-2.rs @@ -12,11 +12,8 @@ // ignore-stage1 #![feature(plugin)] - -#[no_link] -#[plugin()] -extern crate plugin_args; +#![plugin(plugin_args())] fn main() { - assert_eq!(plugin_args!(), "#[plugin()]"); + assert_eq!(plugin_args!(), ""); } diff --git a/src/test/run-pass-fulldeps/plugin-args-3.rs b/src/test/run-pass-fulldeps/plugin-args-3.rs index 7cac8ac57e5..0a064933aec 100644 --- a/src/test/run-pass-fulldeps/plugin-args-3.rs +++ b/src/test/run-pass-fulldeps/plugin-args-3.rs @@ -12,11 +12,8 @@ // ignore-stage1 #![feature(plugin)] - -#[no_link] -#[plugin(hello(there), how(are="you"))] -extern crate plugin_args; +#![plugin(plugin_args(hello(there), how(are="you")))] fn main() { - assert_eq!(plugin_args!(), "#[plugin(hello(there), how(are = \"you\"))]"); + assert_eq!(plugin_args!(), "hello(there), how(are = \"you\")"); } diff --git a/src/test/run-pass-fulldeps/plugin-link-does-resolve.rs b/src/test/run-pass-fulldeps/plugin-plus-extern-crate.rs index 518d02e3d75..0c27dba9c62 100644 --- a/src/test/run-pass-fulldeps/plugin-link-does-resolve.rs +++ b/src/test/run-pass-fulldeps/plugin-plus-extern-crate.rs @@ -1,4 +1,4 @@ -// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT +// Copyright 2013-2015 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // @@ -16,8 +16,8 @@ // libsyntax is not compiled for it. #![feature(plugin)] +#![plugin(macro_crate_test)] -#[plugin] extern crate macro_crate_test; fn main() { diff --git a/src/test/run-pass-fulldeps/roman-numerals-macro.rs b/src/test/run-pass-fulldeps/roman-numerals-macro.rs index d76766094ed..81f5c649626 100644 --- a/src/test/run-pass-fulldeps/roman-numerals-macro.rs +++ b/src/test/run-pass-fulldeps/roman-numerals-macro.rs @@ -12,9 +12,7 @@ // ignore-stage1 #![feature(plugin)] - -#[plugin] #[no_link] -extern crate roman_numerals; +#![plugin(roman_numerals)] pub fn main() { assert_eq!(rn!(MMXV), 2015); diff --git a/src/test/run-pass-fulldeps/syntax-extension-with-dll-deps.rs b/src/test/run-pass-fulldeps/syntax-extension-with-dll-deps.rs index 1c74c8ad08e..b7570eb0926 100644 --- a/src/test/run-pass-fulldeps/syntax-extension-with-dll-deps.rs +++ b/src/test/run-pass-fulldeps/syntax-extension-with-dll-deps.rs @@ -8,14 +8,12 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// aux-build:syntax-extension-with-dll-deps-1.rs -// aux-build:syntax-extension-with-dll-deps-2.rs +// aux-build:syntax_extension_with_dll_deps_1.rs +// aux-build:syntax_extension_with_dll_deps_2.rs // ignore-stage1 #![feature(plugin)] - -#[plugin] #[no_link] -extern crate "syntax-extension-with-dll-deps-2" as extension; +#![plugin(syntax_extension_with_dll_deps_2)] fn main() { foo!(); |
