Remove default macro transparencies
All transparancies are passed explicitly now. Also remove `#[rustc_macro_transparency]` annotations from built-in macros, they are no longer used. `#[rustc_macro_transparency]` only makes sense for declarative macros now.
This commit is contained in:
parent
cf9db76454
commit
6548a5fa5d
@ -734,7 +734,6 @@ pub(crate) mod builtin {
|
||||
#[allow_internal_unstable(fmt_internals)]
|
||||
#[rustc_builtin_macro]
|
||||
#[macro_export]
|
||||
#[rustc_macro_transparency = "opaque"]
|
||||
macro_rules! format_args {
|
||||
($fmt:expr) => ({ /* compiler built-in */ });
|
||||
($fmt:expr, $($args:tt)*) => ({ /* compiler built-in */ })
|
||||
@ -747,7 +746,6 @@ pub(crate) mod builtin {
|
||||
#[allow_internal_unstable(fmt_internals)]
|
||||
#[rustc_builtin_macro]
|
||||
#[macro_export]
|
||||
#[rustc_macro_transparency = "opaque"]
|
||||
macro_rules! format_args_nl {
|
||||
($fmt:expr) => ({ /* compiler built-in */ });
|
||||
($fmt:expr, $($args:tt)*) => ({ /* compiler built-in */ })
|
||||
@ -1235,7 +1233,6 @@ pub(crate) mod builtin {
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[allow_internal_unstable(test, rustc_attrs)]
|
||||
#[rustc_builtin_macro]
|
||||
#[rustc_macro_transparency = "semitransparent"]
|
||||
pub macro test($item:item) { /* compiler built-in */ }
|
||||
|
||||
/// Attribute macro applied to a function to turn it into a benchmark test.
|
||||
@ -1243,7 +1240,6 @@ pub(crate) mod builtin {
|
||||
reason = "`bench` is a part of custom test frameworks which are unstable")]
|
||||
#[allow_internal_unstable(test, rustc_attrs)]
|
||||
#[rustc_builtin_macro]
|
||||
#[rustc_macro_transparency = "semitransparent"]
|
||||
pub macro bench($item:item) { /* compiler built-in */ }
|
||||
|
||||
/// An implementation detail of the `#[test]` and `#[bench]` macros.
|
||||
@ -1251,26 +1247,22 @@ pub(crate) mod builtin {
|
||||
reason = "custom test frameworks are an unstable feature")]
|
||||
#[allow_internal_unstable(test, rustc_attrs)]
|
||||
#[rustc_builtin_macro]
|
||||
#[rustc_macro_transparency = "semitransparent"]
|
||||
pub macro test_case($item:item) { /* compiler built-in */ }
|
||||
|
||||
/// Attribute macro applied to a static to register it as a global allocator.
|
||||
#[stable(feature = "global_allocator", since = "1.28.0")]
|
||||
#[allow_internal_unstable(rustc_attrs)]
|
||||
#[rustc_builtin_macro]
|
||||
#[rustc_macro_transparency = "semitransparent"]
|
||||
pub macro global_allocator($item:item) { /* compiler built-in */ }
|
||||
|
||||
/// Unstable implementation detail of the `rustc` compiler, do not use.
|
||||
#[rustc_builtin_macro]
|
||||
#[cfg_attr(boostrap_stdarch_ignore_this, rustc_macro_transparency = "semitransparent")]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[allow_internal_unstable(core_intrinsics, libstd_sys_internals)]
|
||||
pub macro RustcDecodable($item:item) { /* compiler built-in */ }
|
||||
|
||||
/// Unstable implementation detail of the `rustc` compiler, do not use.
|
||||
#[rustc_builtin_macro]
|
||||
#[cfg_attr(boostrap_stdarch_ignore_this, rustc_macro_transparency = "semitransparent")]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[allow_internal_unstable(core_intrinsics)]
|
||||
pub macro RustcEncodable($item:item) { /* compiler built-in */ }
|
||||
|
@ -402,7 +402,6 @@ impl_stable_hash_for!(struct ::syntax_pos::hygiene::ExpnData {
|
||||
parent -> _,
|
||||
call_site,
|
||||
def_site,
|
||||
default_transparency,
|
||||
allow_internal_unstable,
|
||||
allow_internal_unsafe,
|
||||
local_inner_macros,
|
||||
|
@ -549,8 +549,6 @@ pub struct SyntaxExtension {
|
||||
pub kind: SyntaxExtensionKind,
|
||||
/// Span of the macro definition.
|
||||
pub span: Span,
|
||||
/// Hygienic properties of spans produced by this macro by default.
|
||||
pub default_transparency: Transparency,
|
||||
/// Whitelist of unstable features that are treated as stable inside this macro.
|
||||
pub allow_internal_unstable: Option<Lrc<[Symbol]>>,
|
||||
/// Suppresses the `unsafe_code` lint for code produced by this macro.
|
||||
@ -572,22 +570,6 @@ pub struct SyntaxExtension {
|
||||
pub is_derive_copy: bool,
|
||||
}
|
||||
|
||||
impl SyntaxExtensionKind {
|
||||
/// When a syntax extension is constructed,
|
||||
/// its transparency can often be inferred from its kind.
|
||||
fn default_transparency(&self) -> Transparency {
|
||||
match self {
|
||||
SyntaxExtensionKind::Bang(..) |
|
||||
SyntaxExtensionKind::Attr(..) |
|
||||
SyntaxExtensionKind::Derive(..) |
|
||||
SyntaxExtensionKind::NonMacroAttr { .. } => Transparency::Opaque,
|
||||
SyntaxExtensionKind::LegacyBang(..) |
|
||||
SyntaxExtensionKind::LegacyAttr(..) |
|
||||
SyntaxExtensionKind::LegacyDerive(..) => Transparency::SemiTransparent,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl SyntaxExtension {
|
||||
/// Returns which kind of macro calls this syntax extension.
|
||||
pub fn macro_kind(&self) -> MacroKind {
|
||||
@ -606,7 +588,6 @@ impl SyntaxExtension {
|
||||
pub fn default(kind: SyntaxExtensionKind, edition: Edition) -> SyntaxExtension {
|
||||
SyntaxExtension {
|
||||
span: DUMMY_SP,
|
||||
default_transparency: kind.default_transparency(),
|
||||
allow_internal_unstable: None,
|
||||
allow_internal_unsafe: false,
|
||||
local_inner_macros: false,
|
||||
@ -646,7 +627,6 @@ impl SyntaxExtension {
|
||||
parent,
|
||||
call_site,
|
||||
def_site: self.span,
|
||||
default_transparency: self.default_transparency,
|
||||
allow_internal_unstable: self.allow_internal_unstable.clone(),
|
||||
allow_internal_unsafe: self.allow_internal_unsafe,
|
||||
local_inner_macros: self.local_inner_macros,
|
||||
|
@ -478,7 +478,6 @@ pub fn compile(
|
||||
SyntaxExtension {
|
||||
kind: SyntaxExtensionKind::LegacyBang(expander),
|
||||
span: def.span,
|
||||
default_transparency: transparency,
|
||||
allow_internal_unstable,
|
||||
allow_internal_unsafe: attr::contains_name(&def.attrs, sym::allow_internal_unsafe),
|
||||
local_inner_macros,
|
||||
|
@ -550,8 +550,7 @@ impl Span {
|
||||
/// The returned span belongs to the created expansion and has the new properties,
|
||||
/// but its location is inherited from the current span.
|
||||
pub fn fresh_expansion(self, expn_data: ExpnData) -> Span {
|
||||
let transparency = expn_data.default_transparency;
|
||||
self.fresh_expansion_with_transparency(expn_data, transparency)
|
||||
self.fresh_expansion_with_transparency(expn_data, Transparency::SemiTransparent)
|
||||
}
|
||||
|
||||
pub fn fresh_expansion_with_transparency(
|
||||
@ -591,8 +590,6 @@ pub struct ExpnData {
|
||||
/// The span of the macro definition (possibly dummy).
|
||||
/// This span serves only informational purpose and is not used for resolution.
|
||||
pub def_site: Span,
|
||||
/// Transparency used by `apply_mark` for the expansion with this expansion data by default.
|
||||
pub default_transparency: Transparency,
|
||||
/// List of #[unstable]/feature-gated features that the macro is allowed to use
|
||||
/// internally without forcing the whole crate to opt-in
|
||||
/// to them.
|
||||
@ -615,7 +612,6 @@ impl ExpnData {
|
||||
parent: ExpnId::root(),
|
||||
call_site,
|
||||
def_site: DUMMY_SP,
|
||||
default_transparency: Transparency::SemiTransparent,
|
||||
allow_internal_unstable: None,
|
||||
allow_internal_unsafe: false,
|
||||
local_inner_macros: false,
|
||||
|
Loading…
x
Reference in New Issue
Block a user