diff options
| author | bors <bors@rust-lang.org> | 2017-03-19 10:56:08 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-03-19 10:56:08 +0000 |
| commit | 9c15de4fd59bee290848b5443c7e194fd5afb02c (patch) | |
| tree | fb3ddd382a56f1f6ce7fcecdb9c45fcc6032b352 /src/libsyntax/std_inject.rs | |
| parent | bfc49b1092512aee4fe3d1348c3250fcdc8978d3 (diff) | |
| parent | 85e02bdbfcfd0e38def7656a8295a5260640fd4a (diff) | |
| download | rust-9c15de4fd59bee290848b5443c7e194fd5afb02c.tar.gz rust-9c15de4fd59bee290848b5443c7e194fd5afb02c.zip | |
Auto merge of #40346 - jseyfried:path_and_tokenstream_attr, r=nrc
`TokenStream`-based attributes, paths in attribute and derive macro invocations This PR - refactors `Attribute` to use `Path` and `TokenStream` instead of `MetaItem`. - supports macro invocation paths for attribute procedural macros. - e.g. `#[::foo::attr_macro] struct S;`, `#[cfg_attr(all(), foo::attr_macro)] struct S;` - supports macro invocation paths for derive procedural macros. - e.g. `#[derive(foo::Bar, super::Baz)] struct S;` - supports arbitrary tokens as arguments to attribute procedural macros. - e.g. `#[foo::attr_macro arbitrary + tokens] struct S;` - supports using arbitrary tokens in "inert attributes" with derive procedural macros. - e.g. `#[derive(Foo)] struct S(#[inert arbitrary + tokens] i32);` where `#[proc_macro_derive(Foo, attributes(inert))]` r? @nrc
Diffstat (limited to 'src/libsyntax/std_inject.rs')
| -rw-r--r-- | src/libsyntax/std_inject.rs | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/libsyntax/std_inject.rs b/src/libsyntax/std_inject.rs index 2192d203cdc..c541df9230a 100644 --- a/src/libsyntax/std_inject.rs +++ b/src/libsyntax/std_inject.rs @@ -15,6 +15,7 @@ use syntax_pos::{DUMMY_SP, Span}; use codemap::{self, ExpnInfo, NameAndSpan, MacroAttribute}; use parse::ParseSess; use ptr::P; +use tokenstream::TokenStream; /// Craft a span that will be ignored by the stability lint's /// call to codemap's is_internal check. @@ -70,11 +71,8 @@ pub fn maybe_inject_crates_ref(sess: &ParseSess, krate.module.items.insert(0, P(ast::Item { attrs: vec