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,
);
}
}
+
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.
// #41719
-#![feature(use_extern_macros, proc_macro_path_invoc)]
+#![feature(use_extern_macros)]
fn main() {
enum Foo {}
#![feature(asm)]
#![feature(trace_macros, concat_idents)]
-#![feature(proc_macro_path_invoc)]
#[derive(Default)] //~ ERROR
enum OrDeriveThis {}
#![feature(decl_macro, associated_type_defaults)]
#![allow(unused, private_in_public)]
-#![feature(proc_macro_path_invoc)]
mod priv_nominal {
pub struct Pub;
// ignore-tidy-linelength
-#![feature(proc_macro_path_invoc)]
#![feature(decl_macro, associated_type_defaults)]
#![allow(unused, private_in_public)]
// 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)]
// 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;
#![feature(associated_consts)]
#![feature(decl_macro)]
#![allow(private_in_public)]
-#![feature(proc_macro_path_invoc)]
mod m {
fn priv_fn() {}
// 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;
// ignore-pretty pretty-printing is unhygienic
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
#![allow(unused)]
macro m($S:ident, $x:ident) {
// ignore-pretty pretty-printing is unhygienic
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
#![allow(unused)]
mod foo {
// aux-build:legacy_interaction.rs
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
#[allow(unused)]
extern crate legacy_interaction;
// ignore-pretty pretty-printing is unhygienic
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
mod bar {
mod baz {
// 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)
// aux-build:xcrate.rs
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
extern crate xcrate;
// aux-build:two_macros.rs
-#![feature(use_extern_macros, proc_macro_path_invoc)]
+#![feature(use_extern_macros)]
extern crate two_macros;
// ignore-pretty pretty-printing is unhygienic
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
mod foo {
struct S { x: u32 }
// 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() {}
// ignore-pretty pretty-printing is unhygienic
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
mod foo {
struct S;
// error-pattern:type `fn() -> u32 {intercrate::foo::bar::f}` is private
-#![feature(decl_macro, proc_macro_path_invoc)]
+#![feature(decl_macro)]
extern crate intercrate;
// 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() }
// 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() {}
// 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 {
// aux-build:two_macros.rs
-#![feature(use_extern_macros, proc_macro_path_invoc)]
+#![feature(use_extern_macros)]
extern crate two_macros;
// aux-build:two_macros.rs
-#![feature(use_extern_macros, proc_macro_path_invoc)]
+#![feature(use_extern_macros)]
mod foo {
extern crate two_macros;