resolve: Introduce two sub-namespaces in macro namespace

This commit is contained in:
Vadim Petrochenkov 2018-09-08 22:19:53 +03:00
parent 994cdd9185
commit beb3b5d22c
10 changed files with 64 additions and 35 deletions

View file

@ -0,0 +1,2 @@
#[macro_export]
macro_rules! my_attr { () => () }

View file

@ -0,0 +1,11 @@
// no-prefer-dynamic
#![crate_type = "proc-macro"]
extern crate proc_macro;
use proc_macro::*;
#[proc_macro_derive(MyTrait, attributes(my_attr))]
pub fn foo(_: TokenStream) -> TokenStream {
TokenStream::new()
}

View file

@ -0,0 +1,16 @@
// compile-pass
// aux-build:derive-helper-shadowed.rs
// aux-build:derive-helper-shadowed-2.rs
#[macro_use]
extern crate derive_helper_shadowed;
#[macro_use(my_attr)]
extern crate derive_helper_shadowed_2;
macro_rules! my_attr { () => () }
#[derive(MyTrait)]
#[my_attr] // OK
struct S;
fn main() {}

View file

@ -9,5 +9,5 @@
// except according to those terms.
fn main() {
concat!(test!()); //~ ERROR `test` can only be used in attributes
concat!(test!()); //~ ERROR cannot find macro `test!` in this scope
}

View file

@ -1,7 +1,7 @@
error: `test` can only be used in attributes
error: cannot find macro `test!` in this scope
--> $DIR/issue-11692-2.rs:12:13
|
LL | concat!(test!()); //~ ERROR `test` can only be used in attributes
LL | concat!(test!()); //~ ERROR cannot find macro `test!` in this scope
| ^^^^
error: aborting due to previous error

View file

@ -1,16 +1,3 @@
// 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.
#[derive(inline)] //~ ERROR cannot find derive macro `inline` in this scope
struct S;
fn main() {
inline!(); //~ ERROR cannot find macro `inline!` in this scope
}

View file

@ -1,14 +1,8 @@
error: cannot find derive macro `inline` in this scope
--> $DIR/macro-path-prelude-fail-3.rs:11:10
|
LL | #[derive(inline)] //~ ERROR cannot find derive macro `inline` in this scope
| ^^^^^^
error: cannot find macro `inline!` in this scope
--> $DIR/macro-path-prelude-fail-3.rs:15:5
--> $DIR/macro-path-prelude-fail-3.rs:2:5
|
LL | inline!(); //~ ERROR cannot find macro `inline!` in this scope
| ^^^^^^ help: you could try the macro: `line`
error: aborting due to 2 previous errors
error: aborting due to previous error

View file

@ -0,0 +1,4 @@
#[derive(inline)] //~ ERROR expected a macro, found built-in attribute
struct S;
fn main() {}

View file

@ -0,0 +1,8 @@
error: expected a macro, found built-in attribute
--> $DIR/macro-path-prelude-fail-4.rs:1:10
|
LL | #[derive(inline)] //~ ERROR expected a macro, found built-in attribute
| ^^^^^^
error: aborting due to previous error