mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 07:14:28 +00:00
Don't feature gate bang macros on 'proc_macro_path_invoc'.
This commit is contained in:
parent
ede7f94794
commit
f756b072b3
@ -397,7 +397,7 @@ impl<'a> Resolver<'a> {
|
||||
|
||||
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 @@ impl<'a> Resolver<'a> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
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.
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
// #41719
|
||||
|
||||
#![feature(use_extern_macros, proc_macro_path_invoc)]
|
||||
#![feature(use_extern_macros)]
|
||||
|
||||
fn main() {
|
||||
enum Foo {}
|
||||
|
@ -13,7 +13,6 @@
|
||||
|
||||
#![feature(asm)]
|
||||
#![feature(trace_macros, concat_idents)]
|
||||
#![feature(proc_macro_path_invoc)]
|
||||
|
||||
#[derive(Default)] //~ ERROR
|
||||
enum OrDeriveThis {}
|
||||
|
@ -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;
|
||||
|
@ -10,7 +10,6 @@
|
||||
|
||||
// ignore-tidy-linelength
|
||||
|
||||
#![feature(proc_macro_path_invoc)]
|
||||
#![feature(decl_macro, associated_type_defaults)]
|
||||
#![allow(unused, private_in_public)]
|
||||
|
||||
|
@ -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)]
|
||||
|
||||
|
@ -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;
|
||||
|
@ -11,7 +11,6 @@
|
||||
#![feature(associated_consts)]
|
||||
#![feature(decl_macro)]
|
||||
#![allow(private_in_public)]
|
||||
#![feature(proc_macro_path_invoc)]
|
||||
|
||||
mod m {
|
||||
fn priv_fn() {}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
// ignore-pretty pretty-printing is unhygienic
|
||||
|
||||
#![feature(decl_macro, proc_macro_path_invoc)]
|
||||
#![feature(decl_macro)]
|
||||
#![allow(unused)]
|
||||
|
||||
mod foo {
|
||||
|
@ -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;
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
// ignore-pretty pretty-printing is unhygienic
|
||||
|
||||
#![feature(decl_macro, proc_macro_path_invoc)]
|
||||
#![feature(decl_macro)]
|
||||
|
||||
mod bar {
|
||||
mod baz {
|
||||
|
@ -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)
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
// aux-build:xcrate.rs
|
||||
|
||||
#![feature(decl_macro, proc_macro_path_invoc)]
|
||||
#![feature(decl_macro)]
|
||||
|
||||
extern crate xcrate;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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 }
|
||||
|
@ -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() {}
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
// ignore-pretty pretty-printing is unhygienic
|
||||
|
||||
#![feature(decl_macro, proc_macro_path_invoc)]
|
||||
#![feature(decl_macro)]
|
||||
|
||||
mod foo {
|
||||
struct S;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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() }
|
||||
|
@ -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() {}
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user