]> git.lizzy.rs Git - rust.git/commitdiff
Don't feature gate bang macros on 'proc_macro_path_invoc'.
authorSergio Benitez <sb@sergio.bz>
Sat, 28 Apr 2018 04:32:00 +0000 (21:32 -0700)
committerSergio Benitez <sb@sergio.bz>
Sat, 28 Apr 2018 04:32:41 +0000 (21:32 -0700)
25 files changed:
src/librustc_resolve/macros.rs
src/test/compile-fail/extern-macro.rs
src/test/compile-fail/macros-nonfatal-errors.rs
src/test/compile-fail/privacy/associated-item-privacy-inherent.rs
src/test/compile-fail/privacy/associated-item-privacy-trait.rs
src/test/compile-fail/privacy/associated-item-privacy-type-binding.rs
src/test/compile-fail/private-inferred-type-3.rs
src/test/compile-fail/private-inferred-type.rs
src/test/run-pass-fulldeps/macro-quote-test.rs
src/test/run-pass/hygiene/issue-47311.rs
src/test/run-pass/hygiene/issue-47312.rs
src/test/run-pass/hygiene/legacy_interaction.rs
src/test/run-pass/hygiene/lexical.rs
src/test/run-pass/hygiene/wrap_unhygienic_example.rs
src/test/run-pass/hygiene/xcrate.rs
src/test/run-pass/paths-in-macro-invocations.rs
src/test/ui/hygiene/fields.rs
src/test/ui/hygiene/globs.rs
src/test/ui/hygiene/impl_items.rs
src/test/ui/hygiene/intercrate.rs
src/test/ui/hygiene/no_implicit_prelude.rs
src/test/ui/hygiene/privacy.rs
src/test/ui/hygiene/trait_items.rs
src/test/ui/imports/macro-paths.rs
src/test/ui/imports/shadow_builtin_macros.rs

index af1e17cd89c090ee903ac95094a8ee4f96e8caa6..e72e02933e5e5ec5fc73b098076097cf7ee42244 100644 (file)
@@ -397,7 +397,7 @@ fn resolve_invoc_to_def(&mut self, invoc: &mut Invocation, scope: Mark, force: b
 
     fn resolve_macro_to_def(&mut self, scope: Mark, path: &ast::Path, kind: MacroKind, force: bool)
                             -> Result<Def, Determinacy> {
-        if path.segments.len() > 1 {
+        if kind != MacroKind::Bang && path.segments.len() > 1 {
             if !self.session.features_untracked().proc_macro_path_invoc {
                 emit_feature_err(
                     &self.session.parse_sess,
@@ -409,6 +409,7 @@ fn resolve_macro_to_def(&mut self, scope: Mark, path: &ast::Path, kind: MacroKin
                 );
             }
         }
+
         let def = self.resolve_macro_to_def_inner(scope, path, kind, force);
         if def != Err(Determinacy::Undetermined) {
             // Do not report duplicated errors on every undetermined resolution.
index 08269ce5c7ecf0d2083fb483d46868a69915ab7a..4267103ab9a3aacae556f5a919e5f9bab8e449af 100644 (file)
@@ -10,7 +10,7 @@
 
 // #41719
 
-#![feature(use_extern_macros, proc_macro_path_invoc)]
+#![feature(use_extern_macros)]
 
 fn main() {
     enum Foo {}
index 40412087cef97b0e76e8a8f03774a8bc4295269e..7046ee12b50e563de83d718f08bf88486667e51a 100644 (file)
@@ -13,7 +13,6 @@
 
 #![feature(asm)]
 #![feature(trace_macros, concat_idents)]
-#![feature(proc_macro_path_invoc)]
 
 #[derive(Default)] //~ ERROR
 enum OrDeriveThis {}
index b64829edaa218772d5f9f0404890a60387cbf368..63cb6e82c259e0a88488b432b4d425db229bf041 100644 (file)
@@ -10,7 +10,6 @@
 
 #![feature(decl_macro, associated_type_defaults)]
 #![allow(unused, private_in_public)]
-#![feature(proc_macro_path_invoc)]
 
 mod priv_nominal {
     pub struct Pub;
index 062dc53361703741fcc8287430f2c097ec8ec6a6..bdc0c680a92bc161117743a3bd78179bb3219d33 100644 (file)
@@ -10,7 +10,6 @@
 
 // ignore-tidy-linelength
 
-#![feature(proc_macro_path_invoc)]
 #![feature(decl_macro, associated_type_defaults)]
 #![allow(unused, private_in_public)]
 
index 0dfa61a18ab8299a601cd0ef9d7bb6bbdef321c3..c25616c54354d9f0d856927e915e1f383f5c83ba 100644 (file)
@@ -8,7 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(proc_macro_path_invoc)]
 #![feature(decl_macro, associated_type_defaults)]
 #![allow(unused, private_in_public)]
 
index 97d6b470d33bb88be183cfb8b785eb3c6eec94a9..0c393f02323ec04a3757f16aa641798c773227bb 100644 (file)
@@ -18,7 +18,6 @@
 // error-pattern:type `fn(u8) -> ext::PubTupleStruct {ext::PubTupleStruct::{{constructor}}}` is priv
 // error-pattern:type `for<'r> fn(&'r ext::Pub<u8>) {<ext::Pub<u8>>::priv_method}` is private
 
-#![feature(proc_macro_path_invoc)]
 #![feature(decl_macro)]
 
 extern crate private_inferred_type as ext;
index dfc0107e07565635686f9562838d427d9bad3e90..5af8b063c1629f12e0fb6c3f348337b1bef51357 100644 (file)
@@ -11,7 +11,6 @@
 #![feature(associated_consts)]
 #![feature(decl_macro)]
 #![allow(private_in_public)]
-#![feature(proc_macro_path_invoc)]
 
 mod m {
     fn priv_fn() {}
index 9bb8f691915c74fef5bda9d96d22f71e0cf38455..f359735d2f77047f7616bd343acde4544fb2cb95 100644 (file)
@@ -13,7 +13,7 @@
 // aux-build:hello_macro.rs
 // ignore-stage1
 
-#![feature(proc_macro, proc_macro_path_invoc, proc_macro_non_items)]
+#![feature(proc_macro, proc_macro_non_items)]
 
 extern crate hello_macro;
 
index c4391ad05778a2a539445accf73a28cb53f07c57..3b6890cdce63bf1a1cec52841d502cbfb6453cbf 100644 (file)
@@ -10,7 +10,7 @@
 
 // ignore-pretty pretty-printing is unhygienic
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 #![allow(unused)]
 
 macro m($S:ident, $x:ident) {
index 0cda0e7c7cce74cacac44747987a2a81a1c7e7fb..5e83f3808d8ccd9699eafa8da0b9f35f55ea248d 100644 (file)
@@ -10,7 +10,7 @@
 
 // ignore-pretty pretty-printing is unhygienic
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 #![allow(unused)]
 
 mod foo {
index 5395ef35882827b22c2c8a60c592f9e009f182f5..683a15b99aebea3116acb55803ee22c192ff0b8d 100644 (file)
@@ -12,7 +12,7 @@
 
 // aux-build:legacy_interaction.rs
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 #[allow(unused)]
 
 extern crate legacy_interaction;
index 73deda0777e50414984e7c89a5310409bba13d3d..cb02a17fec38a00298c6664ff864019f7f4d1308 100644 (file)
@@ -10,7 +10,7 @@
 
 // ignore-pretty pretty-printing is unhygienic
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 
 mod bar {
     mod baz {
index 66e83eb7cacd57958205adde7a97365de0f98f39..5520695021438a8d7f10ff24e7e840fc27bbe8ac 100644 (file)
@@ -13,7 +13,7 @@
 // aux-build:my_crate.rs
 // aux-build:unhygienic_example.rs
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 
 extern crate unhygienic_example;
 extern crate my_crate; // (b)
index 95d7ae6db60ff165f7b91d9d4b95923a8f1281a9..6df3a34d3c87f0dd619081ca70db90d84ed63ead 100644 (file)
@@ -12,7 +12,7 @@
 
 // aux-build:xcrate.rs
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 
 extern crate xcrate;
 
index 2e87809a84ec5a9c82d806fb7baaa19383aeba6a..69f8906778a1694875313023aaf40e2896aadb57 100644 (file)
@@ -10,7 +10,7 @@
 
 // aux-build:two_macros.rs
 
-#![feature(use_extern_macros, proc_macro_path_invoc)]
+#![feature(use_extern_macros)]
 
 extern crate two_macros;
 
index ed155b28037a03e5a1558bc5d024e03f6e91b3ee..64217770b13c9ad278b1381f4697ba86dde7e3ec 100644 (file)
@@ -10,7 +10,7 @@
 
 // ignore-pretty pretty-printing is unhygienic
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 
 mod foo {
     struct S { x: u32 }
index f3f400aafeb2bfae7fd950555a83fd21e8866a12..7ba217061c66ee986911556a844bc7a0a52b94a0 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 
 mod foo {
     pub fn f() {}
index 4f997a790e688b058701cc918b90fb8f9895d77b..cdba559445d195be1a4636a496ed0b57fa8467b0 100644 (file)
@@ -10,7 +10,7 @@
 
 // ignore-pretty pretty-printing is unhygienic
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 
 mod foo {
     struct S;
index 20ca918f026f362e19ea70ff24eb3f96293624f0..50fc985ba34faea982f93aa51efb5f468af4f073 100644 (file)
@@ -14,7 +14,7 @@
 
 // error-pattern:type `fn() -> u32 {intercrate::foo::bar::f}` is private
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 
 extern crate intercrate;
 
index ea6a45fba6ac7edb59a15c418b0a99aa24eba513..c90c7b3093c9f0e5d04a15371b082d4cf05dbf38 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 
 mod foo {
     pub macro m() { Vec::new(); ().clone() }
index 8a392db92f96062f802c74c1edb063f39035803b..987cad187d428c7dcf719df625bc4ec736a3f755 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 
 mod foo {
     fn f() {}
index d0da6254b9bd01e26162241e4b12c35267c3b65e..3bd19cbc0ac67cbf48b4138d0118a906bc799d05 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
 
 mod foo {
     pub trait T {
index 51e5257be1bc22e65a6cf2b81100e85332cd1ffd..e709eeee14a8452e4852ae322a16d7f380210bc0 100644 (file)
@@ -10,7 +10,7 @@
 
 // aux-build:two_macros.rs
 
-#![feature(use_extern_macros, proc_macro_path_invoc)]
+#![feature(use_extern_macros)]
 
 extern crate two_macros;
 
index aad0a43be2696cac6fdae453ba5ccc71c433f761..93de136c4051d6875345c8e420cd38e9048961d7 100644 (file)
@@ -10,7 +10,7 @@
 
 // aux-build:two_macros.rs
 
-#![feature(use_extern_macros, proc_macro_path_invoc)]
+#![feature(use_extern_macros)]
 
 mod foo {
     extern crate two_macros;