Skip to content

Commit

Permalink
Rollup merge of #62651 - matthewjasper:rustc-macro-hygiene, r=petroch…
Browse files Browse the repository at this point in the history
…enkov

Make some rustc macros more hygienic
  • Loading branch information
Centril authored Jul 13, 2019
2 parents bafddd4 + 199931c commit 791ceb6
Show file tree
Hide file tree
Showing 14 changed files with 31 additions and 40 deletions.
2 changes: 0 additions & 2 deletions src/librustc/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,13 @@
#![feature(optin_builtin_traits)]
#![feature(range_is_empty)]
#![feature(rustc_diagnostic_macros)]
#![feature(rustc_attrs)]
#![feature(slice_patterns)]
#![feature(specialization)]
#![feature(unboxed_closures)]
#![feature(thread_local)]
#![feature(trace_macros)]
#![feature(trusted_len)]
#![feature(vec_remove_item)]
#![feature(step_trait)]
#![feature(stmt_expr_attributes)]
#![feature(integer_atomics)]
#![feature(test)]
Expand Down
33 changes: 17 additions & 16 deletions src/librustc_data_structures/indexed_vec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,13 @@ impl Idx for u32 {
/// `u32::MAX`. You can also customize things like the `Debug` impl,
/// what traits are derived, and so forth via the macro.
#[macro_export]
#[allow_internal_unstable(step_trait, rustc_attrs)]
macro_rules! newtype_index {
// ---- public rules ----

// Use default constants
($(#[$attrs:meta])* $v:vis struct $name:ident { .. }) => (
newtype_index!(
$crate::newtype_index!(
// Leave out derives marker so we can use its absence to ensure it comes first
@attrs [$(#[$attrs])*]
@type [$name]
Expand All @@ -74,7 +75,7 @@ macro_rules! newtype_index {

// Define any constants
($(#[$attrs:meta])* $v:vis struct $name:ident { $($tokens:tt)+ }) => (
newtype_index!(
$crate::newtype_index!(
// Leave out derives marker so we can use its absence to ensure it comes first
@attrs [$(#[$attrs])*]
@type [$name]
Expand Down Expand Up @@ -258,7 +259,7 @@ macro_rules! newtype_index {
}
}

newtype_index!(
$crate::newtype_index!(
@handle_debug
@derives [$($derives,)*]
@type [$type]
Expand Down Expand Up @@ -294,7 +295,7 @@ macro_rules! newtype_index {
@derives [$_derive:ident, $($derives:ident,)*]
@type [$type:ident]
@debug_format [$debug_format:tt]) => (
newtype_index!(
$crate::newtype_index!(
@handle_debug
@derives [$($derives,)*]
@type [$type]
Expand All @@ -309,7 +310,7 @@ macro_rules! newtype_index {
@debug_format [$debug_format:tt]
derive [$($derives:ident),*]
$($tokens:tt)*) => (
newtype_index!(
$crate::newtype_index!(
@attrs [$(#[$attrs])*]
@type [$type]
@max [$max]
Expand All @@ -329,7 +330,7 @@ macro_rules! newtype_index {
derive [$($derives:ident,)+]
ENCODABLE = custom
$($tokens:tt)*) => (
newtype_index!(
$crate::newtype_index!(
@attrs [$(#[$attrs])*]
@derives [$($derives,)+]
@type [$type]
Expand All @@ -348,15 +349,15 @@ macro_rules! newtype_index {
@debug_format [$debug_format:tt]
derive [$($derives:ident,)+]
$($tokens:tt)*) => (
newtype_index!(
$crate::newtype_index!(
@derives [$($derives,)+ RustcEncodable,]
@attrs [$(#[$attrs])*]
@type [$type]
@max [$max]
@vis [$v]
@debug_format [$debug_format]
$($tokens)*);
newtype_index!(@decodable $type);
$crate::newtype_index!(@decodable $type);
);

// The case where no derives are added, but encodable is overridden. Don't
Expand All @@ -368,7 +369,7 @@ macro_rules! newtype_index {
@debug_format [$debug_format:tt]
ENCODABLE = custom
$($tokens:tt)*) => (
newtype_index!(
$crate::newtype_index!(
@derives []
@attrs [$(#[$attrs])*]
@type [$type]
Expand All @@ -385,15 +386,15 @@ macro_rules! newtype_index {
@vis [$v:vis]
@debug_format [$debug_format:tt]
$($tokens:tt)*) => (
newtype_index!(
$crate::newtype_index!(
@derives [RustcEncodable,]
@attrs [$(#[$attrs])*]
@type [$type]
@max [$max]
@vis [$v]
@debug_format [$debug_format]
$($tokens)*);
newtype_index!(@decodable $type);
$crate::newtype_index!(@decodable $type);
);

(@decodable $type:ident) => (
Expand All @@ -420,7 +421,7 @@ macro_rules! newtype_index {
@vis [$v:vis]
@debug_format [$debug_format:tt]
$name:ident = $constant:expr) => (
newtype_index!(
$crate::newtype_index!(
@derives [$($derives,)*]
@attrs [$(#[$attrs])*]
@type [$type]
Expand All @@ -439,7 +440,7 @@ macro_rules! newtype_index {
@debug_format [$debug_format:tt]
$(#[doc = $doc:expr])*
const $name:ident = $constant:expr) => (
newtype_index!(
$crate::newtype_index!(
@derives [$($derives,)*]
@attrs [$(#[$attrs])*]
@type [$type]
Expand All @@ -458,7 +459,7 @@ macro_rules! newtype_index {
@debug_format [$debug_format:tt]
MAX = $max:expr,
$($tokens:tt)*) => (
newtype_index!(
$crate::newtype_index!(
@derives [$($derives,)*]
@attrs [$(#[$attrs])*]
@type [$type]
Expand All @@ -477,7 +478,7 @@ macro_rules! newtype_index {
@debug_format [$_debug_format:tt]
DEBUG_FORMAT = $debug_format:tt,
$($tokens:tt)*) => (
newtype_index!(
$crate::newtype_index!(
@derives [$($derives,)*]
@attrs [$(#[$attrs])*]
@type [$type]
Expand All @@ -499,7 +500,7 @@ macro_rules! newtype_index {
$($tokens:tt)*) => (
$(#[doc = $doc])*
pub const $name: $type = $type::from_u32_const($constant);
newtype_index!(
$crate::newtype_index!(
@derives [$($derives,)*]
@attrs [$(#[$attrs])*]
@type [$type]
Expand Down
2 changes: 1 addition & 1 deletion src/librustc_lint/error_codes.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use syntax::{register_diagnostic, register_diagnostics};
use syntax::register_diagnostics;

register_diagnostics! {
E0721, // `await` keyword
Expand Down
2 changes: 1 addition & 1 deletion src/librustc_metadata/error_codes.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#![allow(non_snake_case)]

use syntax::{register_diagnostic, register_diagnostics, register_long_diagnostics};
use syntax::{register_diagnostics, register_long_diagnostics};

register_long_diagnostics! {
E0454: r##"
Expand Down
2 changes: 0 additions & 2 deletions src/librustc_mir/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,10 @@ Rust MIR: a lowered representation of Rust. Also: an experiment!
#![feature(decl_macro)]
#![feature(exhaustive_patterns)]
#![feature(rustc_diagnostic_macros)]
#![feature(rustc_attrs)]
#![feature(never_type)]
#![feature(specialization)]
#![feature(try_trait)]
#![feature(unicode_internals)]
#![feature(step_trait)]
#![feature(slice_concat_ext)]
#![feature(trusted_len)]
#![feature(try_blocks)]
Expand Down
2 changes: 1 addition & 1 deletion src/librustc_passes/error_codes.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#![allow(non_snake_case)]

use syntax::{register_diagnostic, register_diagnostics, register_long_diagnostics};
use syntax::{register_diagnostics, register_long_diagnostics};

register_long_diagnostics! {
/*
Expand Down
2 changes: 1 addition & 1 deletion src/librustc_plugin/error_codes.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#![allow(non_snake_case)]

use syntax::{register_diagnostic, register_diagnostics, register_long_diagnostics};
use syntax::{register_diagnostics, register_long_diagnostics};

register_long_diagnostics! {

Expand Down
2 changes: 1 addition & 1 deletion src/librustc_resolve/error_codes.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#![allow(non_snake_case)]

use syntax::{register_diagnostic, register_diagnostics, register_long_diagnostics};
use syntax::{register_diagnostics, register_long_diagnostics};

// Error messages for EXXXX errors. Each message should start and end with a
// new line, and be wrapped to 80 characters. In vim you can `:set tw=80` and
Expand Down
1 change: 1 addition & 0 deletions src/librustc_target/abi/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use crate::spec::Target;
use std::fmt;
use std::ops::{Add, Deref, Sub, Mul, AddAssign, Range, RangeInclusive};

use rustc_data_structures::newtype_index;
use rustc_data_structures::indexed_vec::{Idx, IndexVec};
use syntax_pos::symbol::{sym, Symbol};

Expand Down
5 changes: 0 additions & 5 deletions src/librustc_target/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@

#![feature(box_syntax)]
#![feature(nll)]
#![feature(rustc_attrs)]
#![feature(slice_patterns)]
#![feature(step_trait)]

#![deny(rust_2018_idioms)]
#![deny(unused_lifetimes)]
Expand All @@ -23,8 +21,5 @@
#[allow(unused_extern_crates)]
extern crate serialize as rustc_serialize; // used by deriving

#[macro_use]
extern crate rustc_data_structures;

pub mod abi;
pub mod spec;
8 changes: 4 additions & 4 deletions src/libsyntax/diagnostics/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -170,19 +170,19 @@ macro_rules! help {
#[macro_export]
macro_rules! register_diagnostics {
($($code:tt),*) => (
$(register_diagnostic! { $code })*
$($crate::register_diagnostic! { $code })*
);
($($code:tt),*,) => (
$(register_diagnostic! { $code })*
$($crate::register_diagnostic! { $code })*
)
}

#[macro_export]
macro_rules! register_long_diagnostics {
($($code:tt: $description:tt),*) => (
$(register_diagnostic! { $code, $description })*
$($crate::register_diagnostic! { $code, $description })*
);
($($code:tt: $description:tt),*,) => (
$(register_diagnostic! { $code, $description })*
$($crate::register_diagnostic! { $code, $description })*
)
}
2 changes: 0 additions & 2 deletions src/libsyntax/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@
#![feature(label_break_value)]
#![feature(mem_take)]
#![feature(nll)]
#![feature(rustc_attrs)]
#![feature(rustc_diagnostic_macros)]
#![feature(step_trait)]
#![feature(try_trait)]
#![feature(unicode_internals)]

Expand Down
2 changes: 1 addition & 1 deletion src/libsyntax_ext/error_codes.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#![allow(non_snake_case)]

use syntax::{register_diagnostic, register_long_diagnostics};
use syntax::register_long_diagnostics;

// Error messages for EXXXX errors.
// Each message should start and end with a new line, and be wrapped to 80 characters.
Expand Down
6 changes: 3 additions & 3 deletions src/test/run-pass-fulldeps/newtype_index.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#![feature(rustc_attrs, rustc_private, step_trait)]
#![feature(rustc_private)]

#[macro_use] extern crate rustc_data_structures;
extern crate rustc_data_structures;
extern crate serialize as rustc_serialize;

use rustc_data_structures::indexed_vec::Idx;
use rustc_data_structures::{newtype_index, indexed_vec::Idx};

newtype_index!(struct MyIdx { MAX = 0xFFFF_FFFA });

Expand Down

0 comments on commit 791ceb6

Please sign in to comment.