From a0958048b6b31c3a2ac9242aac699791431955de Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Mon, 14 May 2018 03:22:52 +0300 Subject: [PATCH 1/2] Stabilize `use_extern_macros` --- src/librustc_resolve/build_reduced_graph.rs | 9 +-- src/librustc_resolve/check_unused.rs | 2 +- src/librustc_resolve/lib.rs | 58 +------------------ src/librustc_resolve/macros.rs | 48 +++------------ src/librustc_resolve/resolve_imports.rs | 30 +--------- src/libstd/lib.rs | 2 +- src/libsyntax/ext/expand.rs | 12 +--- src/libsyntax/feature_gate.rs | 18 ++---- .../proc-macro/attribute-with-error.rs | 2 - .../proc-macro/attributes-included.rs | 1 - .../proc-macro/issue-41211.rs | 1 - .../proc-macro/macro-use-attr.rs | 1 - .../proc-macro/macros-in-extern.rs | 2 - .../proc-macro/more-gates.rs | 2 - .../proc-macro/no-macro-use-attr.rs | 3 +- .../run-pass-fulldeps/proc-macro/attr-args.rs | 1 - .../run-pass-fulldeps/proc-macro/attr-cfg.rs | 2 - .../proc-macro/attr-on-trait.rs | 2 - .../proc-macro/auxiliary/hygiene_example.rs | 2 - .../proc-macro/derive-attr-cfg.rs | 2 - .../proc-macro/derive-two-attrs.rs | 2 - .../proc-macro/gen-lifetime-token.rs | 2 - .../proc-macro/issue-39889.rs | 3 - .../run-pass-fulldeps/proc-macro/lifetimes.rs | 2 - .../proc-macro/modify-ast.rs | 2 - .../run-pass-fulldeps/proc-macro/not-joint.rs | 2 - .../proc-macro/span-api-tests.rs | 2 - .../run-pass/auxiliary/issue_38715-modern.rs | 1 - .../run-pass/paths-in-macro-invocations.rs | 2 - src/test/run-pass/use-macro-self.rs | 2 - src/test/rustdoc/cross-crate-links.rs | 2 - src/test/rustdoc/inline_cross/macro-vis.rs | 2 - src/test/rustdoc/inline_cross/macros.rs | 1 - src/test/rustdoc/pub-use-extern-macros.rs | 2 - .../proc-macro/attribute-spans-preserved.rs | 2 - .../attribute-spans-preserved.stderr | 4 +- .../ui-fulldeps/proc-macro/macro-brackets.rs | 2 - .../proc-macro/macro-brackets.stderr | 2 +- .../proc-macro/macro-namespace-reserved-2.rs | 1 - .../macro-namespace-reserved-2.stderr | 18 +++--- .../proc-macro/nested-item-spans.rs | 2 - .../proc-macro/nested-item-spans.stderr | 4 +- .../duplicate-check-macro-exports.rs | 2 - .../duplicate-check-macro-exports.stderr | 2 +- src/test/ui/extern/extern-macro.rs | 2 - src/test/ui/extern/extern-macro.stderr | 2 +- .../feature-gate-tool_attributes.rs | 2 - .../feature-gate-tool_attributes.stderr | 2 +- src/test/ui/hygiene/local_inner_macros.rs | 2 - .../ui/hygiene/local_inner_macros_disabled.rs | 20 ------- .../local_inner_macros_disabled.stderr | 10 ---- .../local-modularized-tricky-fail-3.rs | 2 - .../local-modularized-tricky-fail-3.stderr | 8 +-- .../imports/local-modularized-tricky-pass.rs | 2 - src/test/ui/imports/local-modularized.rs | 2 - src/test/ui/imports/macro-paths.rs | 2 - src/test/ui/imports/macro-paths.stderr | 12 ++-- src/test/ui/imports/macros.rs | 2 - src/test/ui/imports/macros.stderr | 18 +++--- src/test/ui/imports/shadow_builtin_macros.rs | 2 - .../ui/imports/shadow_builtin_macros.stderr | 16 ++--- .../ui/macros/macro-path-prelude-fail-1.rs | 2 +- .../ui/macros/macro-path-prelude-fail-2.rs | 2 - .../macros/macro-path-prelude-fail-2.stderr | 2 +- .../ui/macros/macro-path-prelude-fail-3.rs | 2 - .../macros/macro-path-prelude-fail-3.stderr | 4 +- src/test/ui/macros/macro-path-prelude-pass.rs | 2 +- .../ui/macros/macro-reexport-removed.stderr | 2 +- src/test/ui/macros/macro-with-seps-err-msg.rs | 15 ----- .../ui/macros/macro-with-seps-err-msg.stderr | 11 ---- src/test/ui/macros/macro_undefined.rs | 2 +- src/test/ui/macros/macro_undefined.stderr | 10 +--- src/test/ui/macros/macros-nonfatal-errors.rs | 2 - .../ui/macros/macros-nonfatal-errors.stderr | 27 +++------ src/test/ui/no-link.rs | 1 - src/test/ui/no-link.stderr | 8 +-- .../ui/rust-2018/macro-use-warned-against.rs | 1 - .../rust-2018/macro-use-warned-against.stderr | 4 +- .../tool-attributes-disabled-1.rs | 15 ----- .../tool-attributes-disabled-1.stderr | 11 ---- .../tool-attributes-disabled-2.rs | 15 ----- .../tool-attributes-disabled-2.stderr | 11 ---- 82 files changed, 85 insertions(+), 436 deletions(-) delete mode 100644 src/test/ui/hygiene/local_inner_macros_disabled.rs delete mode 100644 src/test/ui/hygiene/local_inner_macros_disabled.stderr delete mode 100644 src/test/ui/macros/macro-with-seps-err-msg.rs delete mode 100644 src/test/ui/macros/macro-with-seps-err-msg.stderr delete mode 100644 src/test/ui/tool-attributes/tool-attributes-disabled-1.rs delete mode 100644 src/test/ui/tool-attributes/tool-attributes-disabled-1.stderr delete mode 100644 src/test/ui/tool-attributes/tool-attributes-disabled-2.rs delete mode 100644 src/test/ui/tool-attributes/tool-attributes-disabled-2.stderr diff --git a/src/librustc_resolve/build_reduced_graph.rs b/src/librustc_resolve/build_reduced_graph.rs index fa2af891f109b..19dc35f854eed 100644 --- a/src/librustc_resolve/build_reduced_graph.rs +++ b/src/librustc_resolve/build_reduced_graph.rs @@ -833,19 +833,12 @@ impl<'a, 'cl> Resolver<'a, 'cl> { -> bool { let allow_shadowing = expansion == Mark::root(); let legacy_imports = self.legacy_macro_imports(&item.attrs); - let mut used = legacy_imports != LegacyMacroImports::default(); + let used = legacy_imports != LegacyMacroImports::default(); // `#[macro_use]` is only allowed at the crate root. if self.current_module.parent.is_some() && used { span_err!(self.session, item.span, E0468, "an `extern crate` loading macros must be at the crate root"); - } else if !self.use_extern_macros && !used && - self.cstore.dep_kind_untracked(module.def_id().unwrap().krate) - .macros_only() { - let msg = "proc macro crates and `#[no_link]` crates have no effect without \ - `#[macro_use]`"; - self.session.span_warn(item.span, msg); - used = true; // Avoid the normal unused extern crate warning } let (graph_root, arenas) = (self.graph_root, self.arenas); diff --git a/src/librustc_resolve/check_unused.rs b/src/librustc_resolve/check_unused.rs index e1b059d2b733f..77005a83e42c3 100644 --- a/src/librustc_resolve/check_unused.rs +++ b/src/librustc_resolve/check_unused.rs @@ -131,7 +131,7 @@ pub fn check_crate(resolver: &mut Resolver, krate: &ast::Crate) { directive.vis.get() == ty::Visibility::Public || directive.span.is_dummy() => { if let ImportDirectiveSubclass::MacroUse = directive.subclass { - if resolver.use_extern_macros && !directive.span.is_dummy() { + if !directive.span.is_dummy() { resolver.session.buffer_lint( lint::builtin::MACRO_USE_EXTERN_CRATE, directive.id, diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 992ea12ffa2b1..ba9e8d685d1be 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -80,7 +80,7 @@ use std::mem::replace; use rustc_data_structures::sync::Lrc; use resolve_imports::{ImportDirective, ImportDirectiveSubclass, NameResolution, ImportResolver}; -use macros::{InvocationData, LegacyBinding, LegacyScope, MacroBinding}; +use macros::{InvocationData, LegacyBinding, MacroBinding}; // NB: This module needs to be declared first so diagnostics are // registered before they are used. @@ -1399,23 +1399,18 @@ pub struct Resolver<'a, 'b: 'a> { /// crate-local macro expanded `macro_export` referred to by a module-relative path macro_expanded_macro_export_errors: BTreeSet<(Span, Span)>, - gated_errors: FxHashSet, disallowed_shadowing: Vec<&'a LegacyBinding<'a>>, arenas: &'a ResolverArenas<'a>, dummy_binding: &'a NameBinding<'a>, - /// true if `#![feature(use_extern_macros)]` - use_extern_macros: bool, crate_loader: &'a mut CrateLoader<'b>, macro_names: FxHashSet, macro_prelude: FxHashMap>, pub all_macros: FxHashMap, - lexical_macro_resolutions: Vec<(Ident, &'a Cell>)>, macro_map: FxHashMap>, macro_defs: FxHashMap, local_macro_def_scopes: FxHashMap>, - macro_exports: Vec, // FIXME: Remove when `use_extern_macros` is stabilized pub whitelisted_legacy_custom_derives: Vec, pub found_unresolved_macro: bool, @@ -1657,8 +1652,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { invocations.insert(Mark::root(), arenas.alloc_invocation_data(InvocationData::root(graph_root))); - let features = session.features_untracked(); - let mut macro_defs = FxHashMap(); macro_defs.insert(Mark::root(), root_def_id); @@ -1717,7 +1710,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { ambiguity_errors: Vec::new(), use_injections: Vec::new(), proc_mac_errors: Vec::new(), - gated_errors: FxHashSet(), disallowed_shadowing: Vec::new(), macro_expanded_macro_export_errors: BTreeSet::new(), @@ -1729,15 +1721,11 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { vis: ty::Visibility::Public, }), - use_extern_macros: features.use_extern_macros(), - crate_loader, macro_names: FxHashSet(), macro_prelude: FxHashMap(), all_macros: FxHashMap(), - lexical_macro_resolutions: Vec::new(), macro_map: FxHashMap(), - macro_exports: Vec::new(), invocations, macro_defs, local_macro_def_scopes: FxHashMap(), @@ -1770,9 +1758,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { fn per_ns(&mut self, mut f: F) { f(self, TypeNS); f(self, ValueNS); - if self.use_extern_macros { - f(self, MacroNS); - } + f(self, MacroNS); } fn macro_def(&self, mut ctxt: SyntaxContext) -> DefId { @@ -2186,11 +2172,8 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { fn resolve_item(&mut self, item: &Item) { let name = item.ident.name; - debug!("(resolving item) resolving {}", name); - self.check_proc_macro_attrs(&item.attrs); - match item.node { ItemKind::Enum(_, ref generics) | ItemKind::Ty(_, ref generics) | @@ -2218,8 +2201,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { walk_list!(this, visit_param_bound, bounds); for trait_item in trait_items { - this.check_proc_macro_attrs(&trait_item.attrs); - let type_parameters = HasTypeParameters(&trait_item.generics, TraitOrImplItemRibKind); this.with_type_parameter_rib(type_parameters, |this| { @@ -2498,7 +2479,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { this.visit_generics(generics); this.with_current_self_type(self_type, |this| { for impl_item in impl_items { - this.check_proc_macro_attrs(&impl_item.attrs); this.resolve_visibility(&impl_item.vis); // We also need a new scope for the impl item type parameters. @@ -4495,10 +4475,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { } fn report_shadowing_errors(&mut self) { - for (ident, scope) in replace(&mut self.lexical_macro_resolutions, Vec::new()) { - self.resolve_legacy_scope(scope, ident, true); - } - let mut reported_errors = FxHashSet(); for binding in replace(&mut self.disallowed_shadowing, Vec::new()) { if self.resolve_legacy_scope(&binding.parent, binding.ident, false).is_some() && @@ -4619,36 +4595,6 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { err.emit(); self.name_already_seen.insert(name, span); } - - fn check_proc_macro_attrs(&mut self, attrs: &[ast::Attribute]) { - if self.use_extern_macros { return; } - - for attr in attrs { - if attr.path.segments.len() > 1 { - continue - } - let ident = attr.path.segments[0].ident; - let result = self.resolve_lexical_macro_path_segment(ident, - MacroNS, - false, - false, - true, - attr.path.span); - if let Ok(binding) = result { - if let SyntaxExtension::AttrProcMacro(..) = *binding.binding().get_macro(self) { - attr::mark_known(attr); - - let msg = "attribute procedural macros are experimental"; - let feature = "use_extern_macros"; - - feature_err(&self.session.parse_sess, feature, - attr.span, GateIssue::Language, msg) - .span_label(binding.span(), "procedural macro imported here") - .emit(); - } - } - } - } } fn is_self_type(path: &[Ident], namespace: Namespace) -> bool { diff --git a/src/librustc_resolve/macros.rs b/src/librustc_resolve/macros.rs index 44d0c888c5dd2..8f2e76d8866dd 100644 --- a/src/librustc_resolve/macros.rs +++ b/src/librustc_resolve/macros.rs @@ -16,7 +16,7 @@ use build_reduced_graph::{BuildReducedGraphVisitor, IsMacroExport}; use resolve_imports::ImportResolver; use rustc::hir::def_id::{DefId, BUILTIN_MACROS_CRATE, CRATE_DEF_INDEX, DefIndex, DefIndexAddressSpace}; -use rustc::hir::def::{Def, Export, NonMacroAttrKind}; +use rustc::hir::def::{Def, NonMacroAttrKind}; use rustc::hir::map::{self, DefCollector}; use rustc::{ty, lint}; use rustc::middle::cstore::CrateStore; @@ -524,21 +524,13 @@ impl<'a, 'cl> Resolver<'a, 'cl> { self.current_module = if module.is_trait() { module.parent.unwrap() } else { module }; // Possibly apply the macro helper hack - if self.use_extern_macros && kind == MacroKind::Bang && path.len() == 1 && + if kind == MacroKind::Bang && path.len() == 1 && path[0].span.ctxt().outer().expn_info().map_or(false, |info| info.local_inner_macros) { let root = Ident::new(keywords::DollarCrate.name(), path[0].span); path.insert(0, root); } if path.len() > 1 { - if !self.use_extern_macros && self.gated_errors.insert(span) { - let msg = "non-ident macro paths are experimental"; - let feature = "use_extern_macros"; - emit_feature_err(&self.session.parse_sess, feature, span, GateIssue::Language, msg); - self.found_unresolved_macro = true; - return Err(Determinacy::Determined); - } - let res = self.resolve_path(None, &path, Some(MacroNS), false, span, CrateLint::No); let def = match res { PathResult::NonModule(path_res) => match path_res.base_def() { @@ -843,7 +835,6 @@ impl<'a, 'cl> Resolver<'a, 'cl> { record_used: bool) -> Option> { let ident = ident.modern(); - let mut possible_time_travel = None; let mut relative_depth: u32 = 0; let mut binding = None; loop { @@ -853,9 +844,6 @@ impl<'a, 'cl> Resolver<'a, 'cl> { match invocation.expansion.get() { LegacyScope::Invocation(_) => scope.set(invocation.legacy_scope.get()), LegacyScope::Empty => { - if possible_time_travel.is_none() { - possible_time_travel = Some(scope); - } scope = &invocation.legacy_scope; } _ => { @@ -870,7 +858,7 @@ impl<'a, 'cl> Resolver<'a, 'cl> { } LegacyScope::Binding(potential_binding) => { if potential_binding.ident == ident { - if (!self.use_extern_macros || record_used) && relative_depth > 0 { + if record_used && relative_depth > 0 { self.disallowed_shadowing.push(potential_binding); } binding = Some(potential_binding); @@ -884,21 +872,11 @@ impl<'a, 'cl> Resolver<'a, 'cl> { let binding = if let Some(binding) = binding { MacroBinding::Legacy(binding) } else if let Some(binding) = self.macro_prelude.get(&ident.name).cloned() { - if !self.use_extern_macros { - self.record_use(ident, MacroNS, binding, DUMMY_SP); - } MacroBinding::Global(binding) } else { return None; }; - if !self.use_extern_macros { - if let Some(scope) = possible_time_travel { - // Check for disallowed shadowing later - self.lexical_macro_resolutions.push((ident, scope)); - } - } - Some(binding) } @@ -1008,9 +986,6 @@ impl<'a, 'cl> Resolver<'a, 'cl> { find_best_match_for_name(names, name, None) // Then check modules. }).or_else(|| { - if !self.use_extern_macros { - return None; - } let is_macro = |def| { if let Def::Macro(_, def_kind) = def { def_kind == kind @@ -1086,19 +1061,10 @@ impl<'a, 'cl> Resolver<'a, 'cl> { let def = Def::Macro(def_id, MacroKind::Bang); self.all_macros.insert(ident.name, def); if attr::contains_name(&item.attrs, "macro_export") { - if self.use_extern_macros { - let module = self.graph_root; - let vis = ty::Visibility::Public; - self.define(module, ident, MacroNS, - (def, vis, item.span, expansion, IsMacroExport)); - } else { - self.macro_exports.push(Export { - ident: ident.modern(), - def: def, - vis: ty::Visibility::Public, - span: item.span, - }); - } + let module = self.graph_root; + let vis = ty::Visibility::Public; + self.define(module, ident, MacroNS, + (def, vis, item.span, expansion, IsMacroExport)); } else { self.unused_macros.insert(def_id); } diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index c70f52e91dbb6..e16039bc239c0 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -24,7 +24,7 @@ use rustc::lint::builtin::{DUPLICATE_MACRO_EXPORTS, PUB_USE_OF_PRIVATE_EXTERN_CR use rustc::hir::def_id::{CRATE_DEF_INDEX, DefId}; use rustc::hir::def::*; use rustc::session::DiagnosticMessageId; -use rustc::util::nodemap::{FxHashMap, FxHashSet}; +use rustc::util::nodemap::FxHashSet; use syntax::ast::{Ident, Name, NodeId, CRATE_NODE_ID}; use syntax::ext::base::Determinacy::{self, Determined, Undetermined}; @@ -1142,24 +1142,6 @@ impl<'a, 'b:'a, 'c: 'b> ImportResolver<'a, 'b, 'c> { *module.globs.borrow_mut() = Vec::new(); let mut reexports = Vec::new(); - let mut exported_macro_names = FxHashMap(); - if ptr::eq(module, self.graph_root) { - let macro_exports = mem::replace(&mut self.macro_exports, Vec::new()); - for export in macro_exports.into_iter().rev() { - if let Some(later_span) = exported_macro_names.insert(export.ident.modern(), - export.span) { - self.session.buffer_lint_with_diagnostic( - DUPLICATE_MACRO_EXPORTS, - CRATE_NODE_ID, - later_span, - &format!("a macro named `{}` has already been exported", export.ident), - BuiltinLintDiagnostics::DuplicatedMacroExports( - export.ident, export.span, later_span)); - } else { - reexports.push(export); - } - } - } for (&(ident, ns), resolution) in module.resolutions.borrow().iter() { let resolution = &mut *resolution.borrow_mut(); @@ -1174,16 +1156,6 @@ impl<'a, 'b:'a, 'c: 'b> ImportResolver<'a, 'b, 'c> { if !def.def_id().is_local() { self.cstore.export_macros_untracked(def.def_id().krate); } - if let Def::Macro(..) = def { - if let Some(&span) = exported_macro_names.get(&ident.modern()) { - let msg = - format!("a macro named `{}` has already been exported", ident); - self.session.struct_span_err(span, &msg) - .span_label(span, format!("`{}` already exported", ident)) - .span_note(binding.span, "previous macro export here") - .emit(); - } - } reexports.push(Export { ident: ident.modern(), def: def, diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs index 60ad330bb9b72..b0069f826eefa 100644 --- a/src/libstd/lib.rs +++ b/src/libstd/lib.rs @@ -302,7 +302,7 @@ #![feature(unboxed_closures)] #![feature(untagged_unions)] #![feature(unwind_attributes)] -#![feature(use_extern_macros)] +#![cfg_attr(stage0, feature(use_extern_macros))] #![feature(doc_cfg)] #![feature(doc_masked)] #![feature(doc_spotlight)] diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index f7ea781e02115..90b46268045e7 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -1124,9 +1124,7 @@ impl<'a, 'b> InvocationCollector<'a, 'b> { return attrs; } - if self.cx.ecfg.use_extern_macros_enabled() { - attr = find_attr_invoc(&mut attrs); - } + attr = find_attr_invoc(&mut attrs); traits = collect_derives(&mut self.cx, &mut attrs); attrs }); @@ -1147,9 +1145,7 @@ impl<'a, 'b> InvocationCollector<'a, 'b> { return attrs; } - if self.cx.ecfg.use_extern_macros_enabled() { - attr = find_attr_invoc(&mut attrs); - } + attr = find_attr_invoc(&mut attrs); attrs }); @@ -1667,10 +1663,6 @@ impl<'feat> ExpansionConfig<'feat> { fn proc_macro_expr = proc_macro_expr, fn proc_macro_non_items = proc_macro_non_items, } - - pub fn use_extern_macros_enabled(&self) -> bool { - self.features.map_or(false, |features| features.use_extern_macros()) - } } // A Marker adds the given mark to the syntax context. diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 395e5c9865232..6fec1f3b1d500 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -81,17 +81,6 @@ macro_rules! declare_features { { $(f(stringify!($feature), self.$feature);)+ } - - pub fn use_extern_macros(&self) -> bool { - // A number of "advanced" macro features enable - // macro modularization (`use_extern_macros`) implicitly. - self.use_extern_macros || self.decl_macro || - self.tool_attributes || self.custom_attribute || - self.macros_in_extern || self.proc_macro_path_invoc || - self.proc_macro_mod || self.proc_macro_expr || - self.proc_macro_non_items || self.proc_macro_gen || - self.stmt_expr_attributes || self.unrestricted_attribute_tokens - } } }; @@ -308,8 +297,6 @@ declare_features! ( // Allows #[link(..., cfg(..))] (active, link_cfg, "1.14.0", Some(37406), None), - (active, use_extern_macros, "1.15.0", Some(35896), Some(Edition::Edition2018)), - // `extern "ptx-*" fn()` (active, abi_ptx, "1.15.0", Some(38788), None), @@ -535,7 +522,7 @@ declare_features! ( (removed, advanced_slice_patterns, "1.0.0", Some(23121), None, Some("merged into `#![feature(slice_patterns)]`")), (removed, macro_reexport, "1.0.0", Some(29638), None, - Some("subsumed by `#![feature(use_extern_macros)]` and `pub use`")), + Some("subsumed by `pub use`")), ); declare_features! ( @@ -652,6 +639,9 @@ declare_features! ( (accepted, repr_transparent, "1.28.0", Some(43036), None), // Defining procedural macros in `proc-macro` crates (accepted, proc_macro, "1.29.0", Some(38356), None), + // Allows importing and reexporting macros with `use`, + // enables macro modularization in general. + (accepted, use_extern_macros, "1.30.0", Some(35896), None), ); // If you change this, please modify src/doc/unstable-book as well. You must diff --git a/src/test/compile-fail-fulldeps/proc-macro/attribute-with-error.rs b/src/test/compile-fail-fulldeps/proc-macro/attribute-with-error.rs index 9e7bbb2b8f7ff..3cb565c1ede38 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/attribute-with-error.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/attribute-with-error.rs @@ -11,8 +11,6 @@ // aux-build:attribute-with-error.rs // ignore-stage1 -#![feature(use_extern_macros)] - extern crate attribute_with_error; use attribute_with_error::foo; diff --git a/src/test/compile-fail-fulldeps/proc-macro/attributes-included.rs b/src/test/compile-fail-fulldeps/proc-macro/attributes-included.rs index ea66d3c0ef6bb..e941367b08de9 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/attributes-included.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/attributes-included.rs @@ -12,7 +12,6 @@ // ignore-stage1 // compile-pass -#![feature(use_extern_macros)] #![warn(unused)] extern crate attributes_included; diff --git a/src/test/compile-fail-fulldeps/proc-macro/issue-41211.rs b/src/test/compile-fail-fulldeps/proc-macro/issue-41211.rs index f71d4b86f1e01..52d7afb26adba 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/issue-41211.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/issue-41211.rs @@ -13,7 +13,6 @@ // FIXME: https://github.com/rust-lang/rust/issues/41430 // This is a temporary regression test for the ICE reported in #41211 -#![feature(use_extern_macros)] #![emit_unchanged] //~^ ERROR attribute `emit_unchanged` is currently unknown to the compiler extern crate issue_41211; diff --git a/src/test/compile-fail-fulldeps/proc-macro/macro-use-attr.rs b/src/test/compile-fail-fulldeps/proc-macro/macro-use-attr.rs index bb7f341f96786..0fcb9efc1c95c 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/macro-use-attr.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/macro-use-attr.rs @@ -9,7 +9,6 @@ // except according to those terms. // aux-build:attr_proc_macro.rs -#![feature(use_extern_macros)] #[macro_use] extern crate attr_proc_macro; diff --git a/src/test/compile-fail-fulldeps/proc-macro/macros-in-extern.rs b/src/test/compile-fail-fulldeps/proc-macro/macros-in-extern.rs index e418ecc114cc1..f280e74fc90bd 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/macros-in-extern.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/macros-in-extern.rs @@ -12,8 +12,6 @@ // ignore-stage1 // ignore-wasm32 -#![feature(use_extern_macros)] - extern crate test_macros; use test_macros::{nop_attr, no_output, emit_input}; diff --git a/src/test/compile-fail-fulldeps/proc-macro/more-gates.rs b/src/test/compile-fail-fulldeps/proc-macro/more-gates.rs index ff9f1705c5b84..b7ab978b8ed0a 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/more-gates.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/more-gates.rs @@ -10,8 +10,6 @@ // aux-build:more-gates.rs -#![feature(use_extern_macros)] - extern crate more_gates as foo; use foo::*; diff --git a/src/test/compile-fail-fulldeps/proc-macro/no-macro-use-attr.rs b/src/test/compile-fail-fulldeps/proc-macro/no-macro-use-attr.rs index e47a4aefb5e0b..ab05ca28386ab 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/no-macro-use-attr.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/no-macro-use-attr.rs @@ -11,9 +11,10 @@ // aux-build:derive-a.rs #![feature(rustc_attrs)] +#![warn(unused_extern_crates)] extern crate derive_a; -//~^ WARN proc macro crates and `#[no_link]` crates have no effect without `#[macro_use]` +//~^ WARN unused extern crate #[rustc_error] fn main() {} //~ ERROR compilation successful diff --git a/src/test/run-pass-fulldeps/proc-macro/attr-args.rs b/src/test/run-pass-fulldeps/proc-macro/attr-args.rs index 26522396d6b33..effb3ad5189e1 100644 --- a/src/test/run-pass-fulldeps/proc-macro/attr-args.rs +++ b/src/test/run-pass-fulldeps/proc-macro/attr-args.rs @@ -12,7 +12,6 @@ // ignore-stage1 #![allow(warnings)] -#![feature(use_extern_macros)] extern crate attr_args; use attr_args::{attr_with_args, identity}; diff --git a/src/test/run-pass-fulldeps/proc-macro/attr-cfg.rs b/src/test/run-pass-fulldeps/proc-macro/attr-cfg.rs index 4ee30b8252baa..1a9d9b9ee621d 100644 --- a/src/test/run-pass-fulldeps/proc-macro/attr-cfg.rs +++ b/src/test/run-pass-fulldeps/proc-macro/attr-cfg.rs @@ -12,8 +12,6 @@ // ignore-stage1 // revisions: foo bar -#![feature(use_extern_macros)] - extern crate attr_cfg; use attr_cfg::attr_cfg; diff --git a/src/test/run-pass-fulldeps/proc-macro/attr-on-trait.rs b/src/test/run-pass-fulldeps/proc-macro/attr-on-trait.rs index 256096f118aa4..698a0eca1734f 100644 --- a/src/test/run-pass-fulldeps/proc-macro/attr-on-trait.rs +++ b/src/test/run-pass-fulldeps/proc-macro/attr-on-trait.rs @@ -11,8 +11,6 @@ // aux-build:attr-on-trait.rs // ignore-stage1 -#![feature(use_extern_macros)] - extern crate attr_on_trait; use attr_on_trait::foo; diff --git a/src/test/run-pass-fulldeps/proc-macro/auxiliary/hygiene_example.rs b/src/test/run-pass-fulldeps/proc-macro/auxiliary/hygiene_example.rs index bac6524847a88..ca88482064bc9 100644 --- a/src/test/run-pass-fulldeps/proc-macro/auxiliary/hygiene_example.rs +++ b/src/test/run-pass-fulldeps/proc-macro/auxiliary/hygiene_example.rs @@ -8,8 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(use_extern_macros)] - extern crate hygiene_example_codegen; pub use hygiene_example_codegen::hello; diff --git a/src/test/run-pass-fulldeps/proc-macro/derive-attr-cfg.rs b/src/test/run-pass-fulldeps/proc-macro/derive-attr-cfg.rs index 6ef23bc772b5c..93023f8f8edfc 100644 --- a/src/test/run-pass-fulldeps/proc-macro/derive-attr-cfg.rs +++ b/src/test/run-pass-fulldeps/proc-macro/derive-attr-cfg.rs @@ -11,8 +11,6 @@ // aux-build:derive-attr-cfg.rs // ignore-stage1 -#![feature(use_extern_macros)] - extern crate derive_attr_cfg; use derive_attr_cfg::Foo; diff --git a/src/test/run-pass-fulldeps/proc-macro/derive-two-attrs.rs b/src/test/run-pass-fulldeps/proc-macro/derive-two-attrs.rs index 6a0a3b3a9416a..0df0288216eff 100644 --- a/src/test/run-pass-fulldeps/proc-macro/derive-two-attrs.rs +++ b/src/test/run-pass-fulldeps/proc-macro/derive-two-attrs.rs @@ -10,8 +10,6 @@ // aux-build:derive-two-attrs.rs -#![feature(use_extern_macros)] - extern crate derive_two_attrs as foo; use foo::A; diff --git a/src/test/run-pass-fulldeps/proc-macro/gen-lifetime-token.rs b/src/test/run-pass-fulldeps/proc-macro/gen-lifetime-token.rs index c8a9bea3631cb..ce2fed86e46ae 100644 --- a/src/test/run-pass-fulldeps/proc-macro/gen-lifetime-token.rs +++ b/src/test/run-pass-fulldeps/proc-macro/gen-lifetime-token.rs @@ -10,8 +10,6 @@ // aux-build:gen-lifetime-token.rs -#![feature(use_extern_macros)] - extern crate gen_lifetime_token as bar; bar::bar!(); diff --git a/src/test/run-pass-fulldeps/proc-macro/issue-39889.rs b/src/test/run-pass-fulldeps/proc-macro/issue-39889.rs index 5b7d8c2b05b69..3fc7446815eb4 100644 --- a/src/test/run-pass-fulldeps/proc-macro/issue-39889.rs +++ b/src/test/run-pass-fulldeps/proc-macro/issue-39889.rs @@ -11,9 +11,6 @@ // aux-build:issue-39889.rs // ignore-stage1 -#![feature(use_extern_macros)] -#![allow(unused)] - extern crate issue_39889; use issue_39889::Issue39889; diff --git a/src/test/run-pass-fulldeps/proc-macro/lifetimes.rs b/src/test/run-pass-fulldeps/proc-macro/lifetimes.rs index cfe0ce19a4606..c73441e30e6d5 100644 --- a/src/test/run-pass-fulldeps/proc-macro/lifetimes.rs +++ b/src/test/run-pass-fulldeps/proc-macro/lifetimes.rs @@ -11,8 +11,6 @@ // aux-build:lifetimes.rs // ignore-stage1 -#![feature(use_extern_macros)] - extern crate lifetimes; use lifetimes::*; diff --git a/src/test/run-pass-fulldeps/proc-macro/modify-ast.rs b/src/test/run-pass-fulldeps/proc-macro/modify-ast.rs index 0b584fdd44d47..d6f7cc4699adb 100644 --- a/src/test/run-pass-fulldeps/proc-macro/modify-ast.rs +++ b/src/test/run-pass-fulldeps/proc-macro/modify-ast.rs @@ -10,8 +10,6 @@ // aux-build:modify-ast.rs -#![feature(use_extern_macros)] - extern crate modify_ast; use modify_ast::*; diff --git a/src/test/run-pass-fulldeps/proc-macro/not-joint.rs b/src/test/run-pass-fulldeps/proc-macro/not-joint.rs index 8a59d57a938aa..7a53348f96396 100644 --- a/src/test/run-pass-fulldeps/proc-macro/not-joint.rs +++ b/src/test/run-pass-fulldeps/proc-macro/not-joint.rs @@ -10,8 +10,6 @@ // aux-build:not-joint.rs -#![feature(use_extern_macros)] - extern crate not_joint as bar; use bar::{tokens, nothing}; diff --git a/src/test/run-pass-fulldeps/proc-macro/span-api-tests.rs b/src/test/run-pass-fulldeps/proc-macro/span-api-tests.rs index 735e088b82a50..415cada265ec7 100644 --- a/src/test/run-pass-fulldeps/proc-macro/span-api-tests.rs +++ b/src/test/run-pass-fulldeps/proc-macro/span-api-tests.rs @@ -13,8 +13,6 @@ // ignore-pretty -#![feature(use_extern_macros)] - #[macro_use] extern crate span_test_macros; diff --git a/src/test/run-pass/auxiliary/issue_38715-modern.rs b/src/test/run-pass/auxiliary/issue_38715-modern.rs index 68aced7f979c9..7f14b2c4659c6 100644 --- a/src/test/run-pass/auxiliary/issue_38715-modern.rs +++ b/src/test/run-pass/auxiliary/issue_38715-modern.rs @@ -8,7 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(use_extern_macros)] #![allow(duplicate_macro_exports)] #[macro_export] diff --git a/src/test/run-pass/paths-in-macro-invocations.rs b/src/test/run-pass/paths-in-macro-invocations.rs index 69f8906778a16..e860f7021e536 100644 --- a/src/test/run-pass/paths-in-macro-invocations.rs +++ b/src/test/run-pass/paths-in-macro-invocations.rs @@ -10,8 +10,6 @@ // aux-build:two_macros.rs -#![feature(use_extern_macros)] - extern crate two_macros; ::two_macros::macro_one!(); diff --git a/src/test/run-pass/use-macro-self.rs b/src/test/run-pass/use-macro-self.rs index 9162ad3268132..66ab00da7f4a7 100644 --- a/src/test/run-pass/use-macro-self.rs +++ b/src/test/run-pass/use-macro-self.rs @@ -10,8 +10,6 @@ // aux-build:use-macro-self.rs -#![feature(use_extern_macros)] - #[macro_use] extern crate use_macro_self; diff --git a/src/test/rustdoc/cross-crate-links.rs b/src/test/rustdoc/cross-crate-links.rs index 15a774dc9353d..7ccfb3d9da675 100644 --- a/src/test/rustdoc/cross-crate-links.rs +++ b/src/test/rustdoc/cross-crate-links.rs @@ -11,8 +11,6 @@ // aux-build:all-item-types.rs // build-aux-docs -#![feature(use_extern_macros)] - #![crate_name = "foo"] #[macro_use] diff --git a/src/test/rustdoc/inline_cross/macro-vis.rs b/src/test/rustdoc/inline_cross/macro-vis.rs index 6de13338dd376..5467a210bfd86 100644 --- a/src/test/rustdoc/inline_cross/macro-vis.rs +++ b/src/test/rustdoc/inline_cross/macro-vis.rs @@ -12,8 +12,6 @@ // build-aux-docs // ignore-cross-compile -#![feature(use_extern_macros)] - #[macro_use] extern crate qwop; // @has macro_vis/macro.some_macro.html diff --git a/src/test/rustdoc/inline_cross/macros.rs b/src/test/rustdoc/inline_cross/macros.rs index 8d2f7d15d7d7f..474a1da187549 100644 --- a/src/test/rustdoc/inline_cross/macros.rs +++ b/src/test/rustdoc/inline_cross/macros.rs @@ -12,7 +12,6 @@ // build-aux-docs #![feature(macro_test)] -#![feature(use_extern_macros)] #![crate_name = "foo"] diff --git a/src/test/rustdoc/pub-use-extern-macros.rs b/src/test/rustdoc/pub-use-extern-macros.rs index 13957fd6a7022..48fb9bfd2075e 100644 --- a/src/test/rustdoc/pub-use-extern-macros.rs +++ b/src/test/rustdoc/pub-use-extern-macros.rs @@ -10,8 +10,6 @@ // aux-build:pub-use-extern-macros.rs -#![feature(use_extern_macros)] - extern crate macros; // @has pub_use_extern_macros/macro.bar.html diff --git a/src/test/ui-fulldeps/proc-macro/attribute-spans-preserved.rs b/src/test/ui-fulldeps/proc-macro/attribute-spans-preserved.rs index 18ca34b117db7..af47dad9e0bd7 100644 --- a/src/test/ui-fulldeps/proc-macro/attribute-spans-preserved.rs +++ b/src/test/ui-fulldeps/proc-macro/attribute-spans-preserved.rs @@ -10,8 +10,6 @@ // aux-build:attribute-spans-preserved.rs -#![feature(use_extern_macros)] - extern crate attribute_spans_preserved as foo; use foo::foo; diff --git a/src/test/ui-fulldeps/proc-macro/attribute-spans-preserved.stderr b/src/test/ui-fulldeps/proc-macro/attribute-spans-preserved.stderr index a6cbf79209e2e..329e5bea61cd5 100644 --- a/src/test/ui-fulldeps/proc-macro/attribute-spans-preserved.stderr +++ b/src/test/ui-fulldeps/proc-macro/attribute-spans-preserved.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/attribute-spans-preserved.rs:19:23 + --> $DIR/attribute-spans-preserved.rs:17:23 | LL | #[ foo ( let y: u32 = "z"; ) ] //~ ERROR: mismatched types | ^^^ expected u32, found reference @@ -8,7 +8,7 @@ LL | #[ foo ( let y: u32 = "z"; ) ] //~ ERROR: mismatched types found type `&'static str` error[E0308]: mismatched types - --> $DIR/attribute-spans-preserved.rs:20:23 + --> $DIR/attribute-spans-preserved.rs:18:23 | LL | #[ bar { let x: u32 = "y"; } ] //~ ERROR: mismatched types | ^^^ expected u32, found reference diff --git a/src/test/ui-fulldeps/proc-macro/macro-brackets.rs b/src/test/ui-fulldeps/proc-macro/macro-brackets.rs index 1c16faa9986a5..b29f2775201b8 100644 --- a/src/test/ui-fulldeps/proc-macro/macro-brackets.rs +++ b/src/test/ui-fulldeps/proc-macro/macro-brackets.rs @@ -10,8 +10,6 @@ // aux-build:macro-brackets.rs -#![feature(use_extern_macros)] - extern crate macro_brackets as bar; use bar::doit; diff --git a/src/test/ui-fulldeps/proc-macro/macro-brackets.stderr b/src/test/ui-fulldeps/proc-macro/macro-brackets.stderr index 1f31a03491311..7c263d38df971 100644 --- a/src/test/ui-fulldeps/proc-macro/macro-brackets.stderr +++ b/src/test/ui-fulldeps/proc-macro/macro-brackets.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/macro-brackets.rs:23:21 + --> $DIR/macro-brackets.rs:21:21 | LL | id![static X: u32 = 'a';]; //~ ERROR: mismatched types | ^^^ expected u32, found char diff --git a/src/test/ui-fulldeps/proc-macro/macro-namespace-reserved-2.rs b/src/test/ui-fulldeps/proc-macro/macro-namespace-reserved-2.rs index 9cfd486606abf..fa05ad2fc605b 100644 --- a/src/test/ui-fulldeps/proc-macro/macro-namespace-reserved-2.rs +++ b/src/test/ui-fulldeps/proc-macro/macro-namespace-reserved-2.rs @@ -10,7 +10,6 @@ // no-prefer-dynamic -#![feature(use_extern_macros)] #![crate_type = "proc-macro"] extern crate proc_macro; diff --git a/src/test/ui-fulldeps/proc-macro/macro-namespace-reserved-2.stderr b/src/test/ui-fulldeps/proc-macro/macro-namespace-reserved-2.stderr index 58a7f97490515..342d7ddb36cf2 100644 --- a/src/test/ui-fulldeps/proc-macro/macro-namespace-reserved-2.stderr +++ b/src/test/ui-fulldeps/proc-macro/macro-namespace-reserved-2.stderr @@ -1,53 +1,53 @@ error: can't use a procedural macro from the same crate that defines it - --> $DIR/macro-namespace-reserved-2.rs:35:5 + --> $DIR/macro-namespace-reserved-2.rs:34:5 | LL | my_macro!(); //~ ERROR can't use a procedural macro from the same crate that defines it | ^^^^^^^^^^^^ error: can't use a procedural macro from the same crate that defines it - --> $DIR/macro-namespace-reserved-2.rs:38:5 + --> $DIR/macro-namespace-reserved-2.rs:37:5 | LL | my_macro_attr!(); //~ ERROR can't use a procedural macro from the same crate that defines it | ^^^^^^^^^^^^^^^^^ error: can't use a procedural macro from the same crate that defines it - --> $DIR/macro-namespace-reserved-2.rs:41:5 + --> $DIR/macro-namespace-reserved-2.rs:40:5 | LL | MyTrait!(); //~ ERROR can't use a procedural macro from the same crate that defines it | ^^^^^^^^^^^ error: can't use a procedural macro from the same crate that defines it - --> $DIR/macro-namespace-reserved-2.rs:44:1 + --> $DIR/macro-namespace-reserved-2.rs:43:1 | LL | #[my_macro] //~ ERROR can't use a procedural macro from the same crate that defines it | ^^^^^^^^^^^ error: can't use a procedural macro from the same crate that defines it - --> $DIR/macro-namespace-reserved-2.rs:46:1 + --> $DIR/macro-namespace-reserved-2.rs:45:1 | LL | #[my_macro_attr] //~ ERROR can't use a procedural macro from the same crate that defines it | ^^^^^^^^^^^^^^^^ error: can't use a procedural macro from the same crate that defines it - --> $DIR/macro-namespace-reserved-2.rs:48:1 + --> $DIR/macro-namespace-reserved-2.rs:47:1 | LL | #[MyTrait] //~ ERROR can't use a procedural macro from the same crate that defines it | ^^^^^^^^^^ error: can't use a procedural macro from the same crate that defines it - --> $DIR/macro-namespace-reserved-2.rs:51:10 + --> $DIR/macro-namespace-reserved-2.rs:50:10 | LL | #[derive(my_macro)] //~ ERROR can't use a procedural macro from the same crate that defines it | ^^^^^^^^ error: can't use a procedural macro from the same crate that defines it - --> $DIR/macro-namespace-reserved-2.rs:53:10 + --> $DIR/macro-namespace-reserved-2.rs:52:10 | LL | #[derive(my_macro_attr)] //~ ERROR can't use a procedural macro from the same crate that defines it | ^^^^^^^^^^^^^ error: can't use a procedural macro from the same crate that defines it - --> $DIR/macro-namespace-reserved-2.rs:55:10 + --> $DIR/macro-namespace-reserved-2.rs:54:10 | LL | #[derive(MyTrait)] //~ ERROR can't use a procedural macro from the same crate that defines it | ^^^^^^^ diff --git a/src/test/ui-fulldeps/proc-macro/nested-item-spans.rs b/src/test/ui-fulldeps/proc-macro/nested-item-spans.rs index bacab345351ca..8f059d6344df6 100644 --- a/src/test/ui-fulldeps/proc-macro/nested-item-spans.rs +++ b/src/test/ui-fulldeps/proc-macro/nested-item-spans.rs @@ -10,8 +10,6 @@ // aux-build:nested-item-spans.rs -#![feature(use_extern_macros)] - extern crate nested_item_spans; use nested_item_spans::foo; diff --git a/src/test/ui-fulldeps/proc-macro/nested-item-spans.stderr b/src/test/ui-fulldeps/proc-macro/nested-item-spans.stderr index c02cc2520f8d6..75140747e8c76 100644 --- a/src/test/ui-fulldeps/proc-macro/nested-item-spans.stderr +++ b/src/test/ui-fulldeps/proc-macro/nested-item-spans.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/nested-item-spans.rs:22:22 + --> $DIR/nested-item-spans.rs:20:22 | LL | let x: u32 = "x"; //~ ERROR: mismatched types | ^^^ expected u32, found reference @@ -8,7 +8,7 @@ LL | let x: u32 = "x"; //~ ERROR: mismatched types found type `&'static str` error[E0308]: mismatched types - --> $DIR/nested-item-spans.rs:31:22 + --> $DIR/nested-item-spans.rs:29:22 | LL | let x: u32 = "x"; //~ ERROR: mismatched types | ^^^ expected u32, found reference diff --git a/src/test/ui/duplicate/duplicate-check-macro-exports.rs b/src/test/ui/duplicate/duplicate-check-macro-exports.rs index d8159bff567ad..42b2b1d650f76 100644 --- a/src/test/ui/duplicate/duplicate-check-macro-exports.rs +++ b/src/test/ui/duplicate/duplicate-check-macro-exports.rs @@ -8,8 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(use_extern_macros)] - pub use std::panic; #[macro_export] diff --git a/src/test/ui/duplicate/duplicate-check-macro-exports.stderr b/src/test/ui/duplicate/duplicate-check-macro-exports.stderr index 651e984b27452..e2119efbd3db5 100644 --- a/src/test/ui/duplicate/duplicate-check-macro-exports.stderr +++ b/src/test/ui/duplicate/duplicate-check-macro-exports.stderr @@ -1,5 +1,5 @@ error[E0255]: the name `panic` is defined multiple times - --> $DIR/duplicate-check-macro-exports.rs:16:1 + --> $DIR/duplicate-check-macro-exports.rs:14:1 | LL | pub use std::panic; | ---------- previous import of the macro `panic` here diff --git a/src/test/ui/extern/extern-macro.rs b/src/test/ui/extern/extern-macro.rs index 4267103ab9a3a..4b1bf7d8f7923 100644 --- a/src/test/ui/extern/extern-macro.rs +++ b/src/test/ui/extern/extern-macro.rs @@ -10,8 +10,6 @@ // #41719 -#![feature(use_extern_macros)] - fn main() { enum Foo {} let _ = Foo::bar!(); //~ ERROR fail to resolve non-ident macro path diff --git a/src/test/ui/extern/extern-macro.stderr b/src/test/ui/extern/extern-macro.stderr index 8918ac3143b1b..b5515bfcc6423 100644 --- a/src/test/ui/extern/extern-macro.stderr +++ b/src/test/ui/extern/extern-macro.stderr @@ -1,5 +1,5 @@ error: fail to resolve non-ident macro path - --> $DIR/extern-macro.rs:17:13 + --> $DIR/extern-macro.rs:15:13 | LL | let _ = Foo::bar!(); //~ ERROR fail to resolve non-ident macro path | ^^^^^^^^ diff --git a/src/test/ui/feature-gates/feature-gate-tool_attributes.rs b/src/test/ui/feature-gates/feature-gate-tool_attributes.rs index 47c623574ec90..5aa1670b82888 100644 --- a/src/test/ui/feature-gates/feature-gate-tool_attributes.rs +++ b/src/test/ui/feature-gates/feature-gate-tool_attributes.rs @@ -8,8 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(use_extern_macros)] - fn main() { #[rustfmt::skip] //~ ERROR tool attributes are unstable let x = 3 diff --git a/src/test/ui/feature-gates/feature-gate-tool_attributes.stderr b/src/test/ui/feature-gates/feature-gate-tool_attributes.stderr index ebc266e004ecc..ca9542dcc956a 100644 --- a/src/test/ui/feature-gates/feature-gate-tool_attributes.stderr +++ b/src/test/ui/feature-gates/feature-gate-tool_attributes.stderr @@ -1,5 +1,5 @@ error[E0658]: tool attributes are unstable (see issue #44690) - --> $DIR/feature-gate-tool_attributes.rs:14:5 + --> $DIR/feature-gate-tool_attributes.rs:12:5 | LL | #[rustfmt::skip] //~ ERROR tool attributes are unstable | ^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/hygiene/local_inner_macros.rs b/src/test/ui/hygiene/local_inner_macros.rs index 787e2df3ec246..92e10c190aa05 100644 --- a/src/test/ui/hygiene/local_inner_macros.rs +++ b/src/test/ui/hygiene/local_inner_macros.rs @@ -11,8 +11,6 @@ // compile-pass // aux-build:local_inner_macros.rs -#![feature(use_extern_macros)] - extern crate local_inner_macros; use local_inner_macros::{public_macro, public_macro_dynamic}; diff --git a/src/test/ui/hygiene/local_inner_macros_disabled.rs b/src/test/ui/hygiene/local_inner_macros_disabled.rs deleted file mode 100644 index 0a4bdb74807c7..0000000000000 --- a/src/test/ui/hygiene/local_inner_macros_disabled.rs +++ /dev/null @@ -1,20 +0,0 @@ -// 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// `local_inner_macros` has no effect if `feature(use_extern_macros)` is not enabled - -// aux-build:local_inner_macros.rs - -#[macro_use(public_macro)] -extern crate local_inner_macros; - -public_macro!(); //~ ERROR cannot find macro `helper2!` in this scope - -fn main() {} diff --git a/src/test/ui/hygiene/local_inner_macros_disabled.stderr b/src/test/ui/hygiene/local_inner_macros_disabled.stderr deleted file mode 100644 index 3dcd03b6f42e1..0000000000000 --- a/src/test/ui/hygiene/local_inner_macros_disabled.stderr +++ /dev/null @@ -1,10 +0,0 @@ -error: cannot find macro `helper2!` in this scope - --> $DIR/local_inner_macros_disabled.rs:18:1 - | -LL | public_macro!(); //~ ERROR cannot find macro `helper2!` in this scope - | ^^^^^^^^^^^^^^^^ - | - = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) - -error: aborting due to previous error - diff --git a/src/test/ui/imports/local-modularized-tricky-fail-3.rs b/src/test/ui/imports/local-modularized-tricky-fail-3.rs index ab1f312e161e8..6691d98c2b7f4 100644 --- a/src/test/ui/imports/local-modularized-tricky-fail-3.rs +++ b/src/test/ui/imports/local-modularized-tricky-fail-3.rs @@ -10,8 +10,6 @@ // Crate-local macro expanded `macro_export` macros cannot be accessed with module-relative paths. -#![feature(use_extern_macros)] - macro_rules! define_exported { () => { #[macro_export] macro_rules! exported { diff --git a/src/test/ui/imports/local-modularized-tricky-fail-3.stderr b/src/test/ui/imports/local-modularized-tricky-fail-3.stderr index 6da52842d83d7..34c50e04288e5 100644 --- a/src/test/ui/imports/local-modularized-tricky-fail-3.stderr +++ b/src/test/ui/imports/local-modularized-tricky-fail-3.stderr @@ -1,11 +1,11 @@ error: macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths - --> $DIR/local-modularized-tricky-fail-3.rs:25:9 + --> $DIR/local-modularized-tricky-fail-3.rs:23:9 | LL | use exported; | ^^^^^^^^ | note: the macro is defined here - --> $DIR/local-modularized-tricky-fail-3.rs:17:5 + --> $DIR/local-modularized-tricky-fail-3.rs:15:5 | LL | / macro_rules! exported { LL | | () => () @@ -16,13 +16,13 @@ LL | define_exported!(); | ------------------- in this macro invocation error: macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths - --> $DIR/local-modularized-tricky-fail-3.rs:30:5 + --> $DIR/local-modularized-tricky-fail-3.rs:28:5 | LL | ::exported!(); | ^^^^^^^^^^ | note: the macro is defined here - --> $DIR/local-modularized-tricky-fail-3.rs:17:5 + --> $DIR/local-modularized-tricky-fail-3.rs:15:5 | LL | / macro_rules! exported { LL | | () => () diff --git a/src/test/ui/imports/local-modularized-tricky-pass.rs b/src/test/ui/imports/local-modularized-tricky-pass.rs index 04df357e106cb..9392473eace66 100644 --- a/src/test/ui/imports/local-modularized-tricky-pass.rs +++ b/src/test/ui/imports/local-modularized-tricky-pass.rs @@ -10,8 +10,6 @@ // compile-pass -#![feature(use_extern_macros)] - macro_rules! define_exported { () => { #[macro_export] macro_rules! exported { diff --git a/src/test/ui/imports/local-modularized.rs b/src/test/ui/imports/local-modularized.rs index a5297c54c9e02..260a406ef75f9 100644 --- a/src/test/ui/imports/local-modularized.rs +++ b/src/test/ui/imports/local-modularized.rs @@ -10,8 +10,6 @@ // compile-pass -#![feature(use_extern_macros)] - #[macro_export(local_inner_macros)] macro_rules! dollar_crate_exported { (1) => { $crate::exported!(); }; diff --git a/src/test/ui/imports/macro-paths.rs b/src/test/ui/imports/macro-paths.rs index e709eeee14a84..50cfd2d2170e8 100644 --- a/src/test/ui/imports/macro-paths.rs +++ b/src/test/ui/imports/macro-paths.rs @@ -10,8 +10,6 @@ // aux-build:two_macros.rs -#![feature(use_extern_macros)] - extern crate two_macros; mod foo { diff --git a/src/test/ui/imports/macro-paths.stderr b/src/test/ui/imports/macro-paths.stderr index 799e7f972464b..08f45e1a57530 100644 --- a/src/test/ui/imports/macro-paths.stderr +++ b/src/test/ui/imports/macro-paths.stderr @@ -1,34 +1,34 @@ error[E0659]: `bar` is ambiguous - --> $DIR/macro-paths.rs:25:5 + --> $DIR/macro-paths.rs:23:5 | LL | bar::m! { //~ ERROR ambiguous | ^^^^^^ | note: `bar` could refer to the name defined here - --> $DIR/macro-paths.rs:26:9 + --> $DIR/macro-paths.rs:24:9 | LL | mod bar { pub use two_macros::m; } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ note: `bar` could also refer to the name imported here - --> $DIR/macro-paths.rs:24:9 + --> $DIR/macro-paths.rs:22:9 | LL | use foo::*; | ^^^^^^ = note: macro-expanded items do not shadow when used in a macro invocation path error[E0659]: `baz` is ambiguous - --> $DIR/macro-paths.rs:35:5 + --> $DIR/macro-paths.rs:33:5 | LL | baz::m! { //~ ERROR ambiguous | ^^^^^^ | note: `baz` could refer to the name defined here - --> $DIR/macro-paths.rs:36:9 + --> $DIR/macro-paths.rs:34:9 | LL | mod baz { pub use two_macros::m; } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ note: `baz` could also refer to the name defined here - --> $DIR/macro-paths.rs:30:1 + --> $DIR/macro-paths.rs:28:1 | LL | / pub mod baz { LL | | pub use two_macros::m; diff --git a/src/test/ui/imports/macros.rs b/src/test/ui/imports/macros.rs index ed5907800e9de..47ab8fc6c2f75 100644 --- a/src/test/ui/imports/macros.rs +++ b/src/test/ui/imports/macros.rs @@ -10,8 +10,6 @@ // aux-build:two_macros.rs -#![feature(use_extern_macros)] - extern crate two_macros; // two identity macros `m` and `n` mod foo { diff --git a/src/test/ui/imports/macros.stderr b/src/test/ui/imports/macros.stderr index f91987cd9f340..01d1f4fdfad03 100644 --- a/src/test/ui/imports/macros.stderr +++ b/src/test/ui/imports/macros.stderr @@ -1,51 +1,51 @@ error: `m` is ambiguous - --> $DIR/macros.rs:50:5 + --> $DIR/macros.rs:48:5 | LL | m!(); //~ ERROR ambiguous | ^ | note: `m` could refer to the macro defined here - --> $DIR/macros.rs:48:5 + --> $DIR/macros.rs:46:5 | LL | macro_rules! m { () => {} } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ note: `m` could also refer to the macro imported here - --> $DIR/macros.rs:49:9 + --> $DIR/macros.rs:47:9 | LL | use two_macros::m; | ^^^^^^^^^^^^^ error[E0659]: `m` is ambiguous - --> $DIR/macros.rs:28:5 + --> $DIR/macros.rs:26:5 | LL | m! { //~ ERROR ambiguous | ^ | note: `m` could refer to the name imported here - --> $DIR/macros.rs:29:13 + --> $DIR/macros.rs:27:13 | LL | use foo::m; | ^^^^^^ note: `m` could also refer to the name imported here - --> $DIR/macros.rs:27:9 + --> $DIR/macros.rs:25:9 | LL | use two_macros::*; | ^^^^^^^^^^^^^ = note: macro-expanded macro imports do not shadow error[E0659]: `m` is ambiguous - --> $DIR/macros.rs:41:9 + --> $DIR/macros.rs:39:9 | LL | m! { //~ ERROR ambiguous | ^ | note: `m` could refer to the name imported here - --> $DIR/macros.rs:42:17 + --> $DIR/macros.rs:40:17 | LL | use two_macros::n as m; | ^^^^^^^^^^^^^^^^^^ note: `m` could also refer to the name imported here - --> $DIR/macros.rs:34:9 + --> $DIR/macros.rs:32:9 | LL | use two_macros::m; | ^^^^^^^^^^^^^ diff --git a/src/test/ui/imports/shadow_builtin_macros.rs b/src/test/ui/imports/shadow_builtin_macros.rs index 93de136c4051d..90718abc37b31 100644 --- a/src/test/ui/imports/shadow_builtin_macros.rs +++ b/src/test/ui/imports/shadow_builtin_macros.rs @@ -10,8 +10,6 @@ // aux-build:two_macros.rs -#![feature(use_extern_macros)] - mod foo { extern crate two_macros; pub use self::two_macros::m as panic; diff --git a/src/test/ui/imports/shadow_builtin_macros.stderr b/src/test/ui/imports/shadow_builtin_macros.stderr index c9d80ada47250..693b7aadeca4e 100644 --- a/src/test/ui/imports/shadow_builtin_macros.stderr +++ b/src/test/ui/imports/shadow_builtin_macros.stderr @@ -1,5 +1,5 @@ error: `panic` is already in scope - --> $DIR/shadow_builtin_macros.rs:42:9 + --> $DIR/shadow_builtin_macros.rs:40:9 | LL | macro_rules! panic { () => {} } //~ ERROR `panic` is already in scope | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -10,13 +10,13 @@ LL | m!(); = note: macro-expanded `macro_rules!`s may not shadow existing macros (see RFC 1560) error[E0659]: `panic` is ambiguous - --> $DIR/shadow_builtin_macros.rs:27:14 + --> $DIR/shadow_builtin_macros.rs:25:14 | LL | fn f() { panic!(); } //~ ERROR ambiguous | ^^^^^ | note: `panic` could refer to the name imported here - --> $DIR/shadow_builtin_macros.rs:26:9 + --> $DIR/shadow_builtin_macros.rs:24:9 | LL | use foo::*; | ^^^^^^ @@ -24,13 +24,13 @@ LL | use foo::*; = note: consider adding an explicit import of `panic` to disambiguate error[E0659]: `panic` is ambiguous - --> $DIR/shadow_builtin_macros.rs:32:14 + --> $DIR/shadow_builtin_macros.rs:30:14 | LL | fn f() { panic!(); } //~ ERROR ambiguous | ^^^^^ | note: `panic` could refer to the name imported here - --> $DIR/shadow_builtin_macros.rs:31:26 + --> $DIR/shadow_builtin_macros.rs:29:26 | LL | ::two_macros::m!(use foo::panic;); | ^^^^^^^^^^ @@ -38,18 +38,18 @@ LL | ::two_macros::m!(use foo::panic;); = note: macro-expanded macro imports do not shadow error[E0659]: `n` is ambiguous - --> $DIR/shadow_builtin_macros.rs:61:5 + --> $DIR/shadow_builtin_macros.rs:59:5 | LL | n!(); //~ ERROR ambiguous | ^ | note: `n` could refer to the name imported here - --> $DIR/shadow_builtin_macros.rs:60:9 + --> $DIR/shadow_builtin_macros.rs:58:9 | LL | use bar::*; | ^^^^^^ note: `n` could also refer to the name imported here - --> $DIR/shadow_builtin_macros.rs:48:13 + --> $DIR/shadow_builtin_macros.rs:46:13 | LL | #[macro_use(n)] | ^ diff --git a/src/test/ui/macros/macro-path-prelude-fail-1.rs b/src/test/ui/macros/macro-path-prelude-fail-1.rs index b953805a7eb2f..e1181eb741bf9 100644 --- a/src/test/ui/macros/macro-path-prelude-fail-1.rs +++ b/src/test/ui/macros/macro-path-prelude-fail-1.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(use_extern_macros, extern_prelude)] +#![feature(extern_prelude)] mod m { fn check() { diff --git a/src/test/ui/macros/macro-path-prelude-fail-2.rs b/src/test/ui/macros/macro-path-prelude-fail-2.rs index ec77e276bd403..82258dac37b86 100644 --- a/src/test/ui/macros/macro-path-prelude-fail-2.rs +++ b/src/test/ui/macros/macro-path-prelude-fail-2.rs @@ -8,8 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(use_extern_macros)] - mod m { fn check() { Result::Ok!(); //~ ERROR fail to resolve non-ident macro path diff --git a/src/test/ui/macros/macro-path-prelude-fail-2.stderr b/src/test/ui/macros/macro-path-prelude-fail-2.stderr index d23aed847a30c..876ee2584e9aa 100644 --- a/src/test/ui/macros/macro-path-prelude-fail-2.stderr +++ b/src/test/ui/macros/macro-path-prelude-fail-2.stderr @@ -1,5 +1,5 @@ error: fail to resolve non-ident macro path - --> $DIR/macro-path-prelude-fail-2.rs:15:9 + --> $DIR/macro-path-prelude-fail-2.rs:13:9 | LL | Result::Ok!(); //~ ERROR fail to resolve non-ident macro path | ^^^^^^^^^^ diff --git a/src/test/ui/macros/macro-path-prelude-fail-3.rs b/src/test/ui/macros/macro-path-prelude-fail-3.rs index d325b0460015c..c706b8f613dd7 100644 --- a/src/test/ui/macros/macro-path-prelude-fail-3.rs +++ b/src/test/ui/macros/macro-path-prelude-fail-3.rs @@ -8,8 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(use_extern_macros)] - #[derive(inline)] //~ ERROR cannot find derive macro `inline` in this scope struct S; diff --git a/src/test/ui/macros/macro-path-prelude-fail-3.stderr b/src/test/ui/macros/macro-path-prelude-fail-3.stderr index c9af4b6642751..a8edf54d22048 100644 --- a/src/test/ui/macros/macro-path-prelude-fail-3.stderr +++ b/src/test/ui/macros/macro-path-prelude-fail-3.stderr @@ -1,11 +1,11 @@ error: cannot find derive macro `inline` in this scope - --> $DIR/macro-path-prelude-fail-3.rs:13:10 + --> $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:17:5 + --> $DIR/macro-path-prelude-fail-3.rs:15:5 | LL | inline!(); //~ ERROR cannot find macro `inline!` in this scope | ^^^^^^ help: you could try the macro: `line` diff --git a/src/test/ui/macros/macro-path-prelude-pass.rs b/src/test/ui/macros/macro-path-prelude-pass.rs index bc58754513b6d..1f281d4a68603 100644 --- a/src/test/ui/macros/macro-path-prelude-pass.rs +++ b/src/test/ui/macros/macro-path-prelude-pass.rs @@ -10,7 +10,7 @@ // compile-pass -#![feature(use_extern_macros, extern_prelude)] +#![feature(extern_prelude)] mod m { fn check() { diff --git a/src/test/ui/macros/macro-reexport-removed.stderr b/src/test/ui/macros/macro-reexport-removed.stderr index ba0ab232e8648..c93c7144f9ebe 100644 --- a/src/test/ui/macros/macro-reexport-removed.stderr +++ b/src/test/ui/macros/macro-reexport-removed.stderr @@ -4,7 +4,7 @@ error[E0557]: feature has been removed LL | #![feature(macro_reexport)] //~ ERROR feature has been removed | ^^^^^^^^^^^^^^ | -note: subsumed by `#![feature(use_extern_macros)]` and `pub use` +note: subsumed by `pub use` --> $DIR/macro-reexport-removed.rs:13:12 | LL | #![feature(macro_reexport)] //~ ERROR feature has been removed diff --git a/src/test/ui/macros/macro-with-seps-err-msg.rs b/src/test/ui/macros/macro-with-seps-err-msg.rs deleted file mode 100644 index 1281adce5c58e..0000000000000 --- a/src/test/ui/macros/macro-with-seps-err-msg.rs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2012 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// gate-test-use_extern_macros - -fn main() { - globnar::brotz!(); //~ ERROR non-ident macro paths are experimental -} diff --git a/src/test/ui/macros/macro-with-seps-err-msg.stderr b/src/test/ui/macros/macro-with-seps-err-msg.stderr deleted file mode 100644 index 0b6d186b2368d..0000000000000 --- a/src/test/ui/macros/macro-with-seps-err-msg.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0658]: non-ident macro paths are experimental (see issue #35896) - --> $DIR/macro-with-seps-err-msg.rs:14:5 - | -LL | globnar::brotz!(); //~ ERROR non-ident macro paths are experimental - | ^^^^^^^^^^^^^^ - | - = help: add #![feature(use_extern_macros)] to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/macros/macro_undefined.rs b/src/test/ui/macros/macro_undefined.rs index c0acbc979ad1f..4a812739a6b26 100644 --- a/src/test/ui/macros/macro_undefined.rs +++ b/src/test/ui/macros/macro_undefined.rs @@ -19,5 +19,5 @@ mod m { fn main() { k!(); //~ ERROR cannot find - kl!(); //~ ERROR cannot find + kl!(); } diff --git a/src/test/ui/macros/macro_undefined.stderr b/src/test/ui/macros/macro_undefined.stderr index 8d44df8af0cbd..87b039f483485 100644 --- a/src/test/ui/macros/macro_undefined.stderr +++ b/src/test/ui/macros/macro_undefined.stderr @@ -1,16 +1,8 @@ -error: cannot find macro `kl!` in this scope - --> $DIR/macro_undefined.rs:22:5 - | -LL | kl!(); //~ ERROR cannot find - | ^^ - | - = help: have you added the `#[macro_use]` on the module/import? - error: cannot find macro `k!` in this scope --> $DIR/macro_undefined.rs:21:5 | LL | k!(); //~ ERROR cannot find | ^ help: you could try the macro: `kl` -error: aborting due to 2 previous errors +error: aborting due to previous error diff --git a/src/test/ui/macros/macros-nonfatal-errors.rs b/src/test/ui/macros/macros-nonfatal-errors.rs index 2815e1be70983..ce2dfb906c5ce 100644 --- a/src/test/ui/macros/macros-nonfatal-errors.rs +++ b/src/test/ui/macros/macros-nonfatal-errors.rs @@ -30,8 +30,6 @@ fn main() { env!(foo, abr, baz); //~ ERROR env!("RUST_HOPEFULLY_THIS_DOESNT_EXIST"); //~ ERROR - foo::blah!(); //~ ERROR - format!(invalid); //~ ERROR include!(invalid); //~ ERROR diff --git a/src/test/ui/macros/macros-nonfatal-errors.stderr b/src/test/ui/macros/macros-nonfatal-errors.stderr index 084042acc974d..81e250d5ea09e 100644 --- a/src/test/ui/macros/macros-nonfatal-errors.stderr +++ b/src/test/ui/macros/macros-nonfatal-errors.stderr @@ -40,16 +40,8 @@ error: environment variable `RUST_HOPEFULLY_THIS_DOESNT_EXIST` not defined LL | env!("RUST_HOPEFULLY_THIS_DOESNT_EXIST"); //~ ERROR | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error[E0658]: non-ident macro paths are experimental (see issue #35896) - --> $DIR/macros-nonfatal-errors.rs:33:5 - | -LL | foo::blah!(); //~ ERROR - | ^^^^^^^^^ - | - = help: add #![feature(use_extern_macros)] to the crate attributes to enable - error: format argument must be a string literal - --> $DIR/macros-nonfatal-errors.rs:35:13 + --> $DIR/macros-nonfatal-errors.rs:33:13 | LL | format!(invalid); //~ ERROR | ^^^^^^^ @@ -59,42 +51,41 @@ LL | format!("{}", invalid); //~ ERROR | ^^^^^ error: argument must be a string literal - --> $DIR/macros-nonfatal-errors.rs:37:14 + --> $DIR/macros-nonfatal-errors.rs:35:14 | LL | include!(invalid); //~ ERROR | ^^^^^^^ error: argument must be a string literal - --> $DIR/macros-nonfatal-errors.rs:39:18 + --> $DIR/macros-nonfatal-errors.rs:37:18 | LL | include_str!(invalid); //~ ERROR | ^^^^^^^ error: couldn't read $DIR/i'd be quite surprised if a file with this name existed: No such file or directory (os error 2) - --> $DIR/macros-nonfatal-errors.rs:40:5 + --> $DIR/macros-nonfatal-errors.rs:38:5 | LL | include_str!("i'd be quite surprised if a file with this name existed"); //~ ERROR | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: argument must be a string literal - --> $DIR/macros-nonfatal-errors.rs:41:20 + --> $DIR/macros-nonfatal-errors.rs:39:20 | LL | include_bytes!(invalid); //~ ERROR | ^^^^^^^ error: couldn't read $DIR/i'd be quite surprised if a file with this name existed: No such file or directory (os error 2) - --> $DIR/macros-nonfatal-errors.rs:42:5 + --> $DIR/macros-nonfatal-errors.rs:40:5 | LL | include_bytes!("i'd be quite surprised if a file with this name existed"); //~ ERROR | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: trace_macros! accepts only `true` or `false` - --> $DIR/macros-nonfatal-errors.rs:44:5 + --> $DIR/macros-nonfatal-errors.rs:42:5 | LL | trace_macros!(invalid); //~ ERROR | ^^^^^^^^^^^^^^^^^^^^^^^ -error: aborting due to 15 previous errors +error: aborting due to 14 previous errors -Some errors occurred: E0658, E0665. -For more information about an error, try `rustc --explain E0658`. +For more information about this error, try `rustc --explain E0665`. diff --git a/src/test/ui/no-link.rs b/src/test/ui/no-link.rs index f74ff55e2c08e..36efb67cf8032 100644 --- a/src/test/ui/no-link.rs +++ b/src/test/ui/no-link.rs @@ -12,7 +12,6 @@ #[no_link] extern crate empty_struct; -//~^ WARN proc macro crates and `#[no_link]` crates have no effect without `#[macro_use]` fn main() { empty_struct::XEmpty1; //~ ERROR cannot find value `XEmpty1` in module `empty_struct` diff --git a/src/test/ui/no-link.stderr b/src/test/ui/no-link.stderr index 3af7968f64043..3f159ddfbd18a 100644 --- a/src/test/ui/no-link.stderr +++ b/src/test/ui/no-link.stderr @@ -1,11 +1,5 @@ -warning: proc macro crates and `#[no_link]` crates have no effect without `#[macro_use]` - --> $DIR/no-link.rs:14:1 - | -LL | extern crate empty_struct; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ - error[E0425]: cannot find value `XEmpty1` in module `empty_struct` - --> $DIR/no-link.rs:18:19 + --> $DIR/no-link.rs:17:19 | LL | empty_struct::XEmpty1; //~ ERROR cannot find value `XEmpty1` in module `empty_struct` | ^^^^^^^ not found in `empty_struct` diff --git a/src/test/ui/rust-2018/macro-use-warned-against.rs b/src/test/ui/rust-2018/macro-use-warned-against.rs index f50419434ae1d..ce4c696028180 100644 --- a/src/test/ui/rust-2018/macro-use-warned-against.rs +++ b/src/test/ui/rust-2018/macro-use-warned-against.rs @@ -13,7 +13,6 @@ // compile-pass #![warn(macro_use_extern_crate, unused)] -#![feature(use_extern_macros)] #[macro_use] //~ WARN should be replaced at use sites with a `use` statement extern crate macro_use_warned_against; diff --git a/src/test/ui/rust-2018/macro-use-warned-against.stderr b/src/test/ui/rust-2018/macro-use-warned-against.stderr index 7af404fab790e..da69daf6ba8e7 100644 --- a/src/test/ui/rust-2018/macro-use-warned-against.stderr +++ b/src/test/ui/rust-2018/macro-use-warned-against.stderr @@ -1,5 +1,5 @@ warning: deprecated `#[macro_use]` directive used to import macros should be replaced at use sites with a `use` statement to import the macro instead - --> $DIR/macro-use-warned-against.rs:18:1 + --> $DIR/macro-use-warned-against.rs:17:1 | LL | #[macro_use] //~ WARN should be replaced at use sites with a `use` statement | ^^^^^^^^^^^^ @@ -11,7 +11,7 @@ LL | #![warn(macro_use_extern_crate, unused)] | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused `#[macro_use]` import - --> $DIR/macro-use-warned-against.rs:20:1 + --> $DIR/macro-use-warned-against.rs:19:1 | LL | #[macro_use] //~ WARN unused `#[macro_use]` | ^^^^^^^^^^^^ diff --git a/src/test/ui/tool-attributes/tool-attributes-disabled-1.rs b/src/test/ui/tool-attributes/tool-attributes-disabled-1.rs deleted file mode 100644 index 87d47b75607c1..0000000000000 --- a/src/test/ui/tool-attributes/tool-attributes-disabled-1.rs +++ /dev/null @@ -1,15 +0,0 @@ -// 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// If macro modularization (`use_extern_macros`) is not enabled, -// then tool attributes are treated as custom attributes. - -#[rustfmt::bar] //~ ERROR The attribute `rustfmt::bar` is currently unknown to the compiler -fn main() {} diff --git a/src/test/ui/tool-attributes/tool-attributes-disabled-1.stderr b/src/test/ui/tool-attributes/tool-attributes-disabled-1.stderr deleted file mode 100644 index 6302c06057aa2..0000000000000 --- a/src/test/ui/tool-attributes/tool-attributes-disabled-1.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0658]: The attribute `rustfmt::bar` is currently unknown to the compiler and may have meaning added to it in the future (see issue #29642) - --> $DIR/tool-attributes-disabled-1.rs:14:1 - | -LL | #[rustfmt::bar] //~ ERROR The attribute `rustfmt::bar` is currently unknown to the compiler - | ^^^^^^^^^^^^^^^ - | - = help: add #![feature(custom_attribute)] to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/tool-attributes/tool-attributes-disabled-2.rs b/src/test/ui/tool-attributes/tool-attributes-disabled-2.rs deleted file mode 100644 index 2d97e160f4914..0000000000000 --- a/src/test/ui/tool-attributes/tool-attributes-disabled-2.rs +++ /dev/null @@ -1,15 +0,0 @@ -// 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// If macro modularization (`use_extern_macros`) is not enabled, -// then tool attributes are treated as custom attributes. - -#[rustfmt::bar] //~ ERROR attribute `rustfmt::bar` is currently unknown to the compiler -fn main() {} diff --git a/src/test/ui/tool-attributes/tool-attributes-disabled-2.stderr b/src/test/ui/tool-attributes/tool-attributes-disabled-2.stderr deleted file mode 100644 index b327773dd6adc..0000000000000 --- a/src/test/ui/tool-attributes/tool-attributes-disabled-2.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0658]: The attribute `rustfmt::bar` is currently unknown to the compiler and may have meaning added to it in the future (see issue #29642) - --> $DIR/tool-attributes-disabled-2.rs:14:1 - | -LL | #[rustfmt::bar] //~ ERROR attribute `rustfmt::bar` is currently unknown to the compiler - | ^^^^^^^^^^^^^^^ - | - = help: add #![feature(custom_attribute)] to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. From 674a5db1a50e25dd60a8ee6669edee9a366c9fab Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Fri, 17 Aug 2018 13:17:39 +0300 Subject: [PATCH 2/2] Fix undesirable fallout compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs - resolution change for derive helper attributes with the same name as derive itself run-pass/macro-comma-support.rs - indeterminate resolutions for macros in expression positions ui/issues/issue-49074.rs - diagnostics regression, not enough recovery to report the second error ui/object-lifetime/object-lifetime-default.stderr - unstable diagnostics? --- .../proc-macro/proc-macro-attributes.rs | 6 +- src/test/run-pass/macro-comma-support.rs | 102 +++++++++--------- src/test/ui/issues/issue-49074.rs | 1 - src/test/ui/issues/issue-49074.stderr | 10 +- .../object-lifetime-default.stderr | 48 ++++----- 5 files changed, 79 insertions(+), 88 deletions(-) diff --git a/src/test/compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs b/src/test/compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs index df3f7a239b926..215d51c227084 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs @@ -17,11 +17,11 @@ extern crate derive_b; #[derive(B)] -#[B] -#[C] //~ ERROR: The attribute `C` is currently unknown to the compiler +#[B] //~ ERROR `B` is a derive mode +#[C] #[B(D)] #[B(E = "foo")] -#[B(arbitrary tokens)] //~ ERROR expected one of `(`, `)`, `,`, `::`, or `=`, found `tokens` +#[B(arbitrary tokens)] struct B; fn main() {} diff --git a/src/test/run-pass/macro-comma-support.rs b/src/test/run-pass/macro-comma-support.rs index bfd911002a0ee..f645849cd5114 100644 --- a/src/test/run-pass/macro-comma-support.rs +++ b/src/test/run-pass/macro-comma-support.rs @@ -61,30 +61,30 @@ fn assert_ne() { #[test] fn cfg() { - let _ = cfg!(pants); - let _ = cfg!(pants,); - let _ = cfg!(pants = "pants"); - let _ = cfg!(pants = "pants",); - let _ = cfg!(all(pants)); - let _ = cfg!(all(pants),); - let _ = cfg!(all(pants,)); - let _ = cfg!(all(pants,),); + cfg!(pants); + cfg!(pants,); + cfg!(pants = "pants"); + cfg!(pants = "pants",); + cfg!(all(pants)); + cfg!(all(pants),); + cfg!(all(pants,)); + cfg!(all(pants,),); } #[test] fn column() { - let _ = column!(); + column!(); } // compile_error! is in a companion to this test in compile-fail #[test] fn concat() { - let _ = concat!(); - let _ = concat!("hello"); - let _ = concat!("hello",); - let _ = concat!("hello", " world"); - let _ = concat!("hello", " world",); + concat!(); + concat!("hello"); + concat!("hello",); + concat!("hello", " world"); + concat!("hello", " world",); } #[test] @@ -130,10 +130,10 @@ fn debug_assert_ne() { #[test] fn env() { - let _ = env!("PATH"); - let _ = env!("PATH",); - let _ = env!("PATH", "not found"); - let _ = env!("PATH", "not found",); + env!("PATH"); + env!("PATH",); + env!("PATH", "not found"); + env!("PATH", "not found",); } #[cfg(std)] @@ -157,58 +157,58 @@ fn eprintln() { #[test] fn file() { - let _ = file!(); + file!(); } #[cfg(std)] #[test] fn format() { - let _ = format!("hello"); - let _ = format!("hello",); - let _ = format!("hello {}", "world"); - let _ = format!("hello {}", "world",); + format!("hello"); + format!("hello",); + format!("hello {}", "world"); + format!("hello {}", "world",); } #[test] fn format_args() { - let _ = format_args!("hello"); - let _ = format_args!("hello",); - let _ = format_args!("hello {}", "world"); - let _ = format_args!("hello {}", "world",); + format_args!("hello"); + format_args!("hello",); + format_args!("hello {}", "world"); + format_args!("hello {}", "world",); } #[test] fn include() { - let _ = include!("auxiliary/macro-comma-support.rs"); - let _ = include!("auxiliary/macro-comma-support.rs",); + include!("auxiliary/macro-comma-support.rs"); + include!("auxiliary/macro-comma-support.rs",); } #[test] fn include_bytes() { - let _ = include_bytes!("auxiliary/macro-comma-support.rs"); - let _ = include_bytes!("auxiliary/macro-comma-support.rs",); + include_bytes!("auxiliary/macro-comma-support.rs"); + include_bytes!("auxiliary/macro-comma-support.rs",); } #[test] fn include_str() { - let _ = include_str!("auxiliary/macro-comma-support.rs"); - let _ = include_str!("auxiliary/macro-comma-support.rs",); + include_str!("auxiliary/macro-comma-support.rs"); + include_str!("auxiliary/macro-comma-support.rs",); } #[test] fn line() { - let _ = line!(); + line!(); } #[test] fn module_path() { - let _ = module_path!(); + module_path!(); } #[test] fn option_env() { - let _ = option_env!("PATH"); - let _ = option_env!("PATH",); + option_env!("PATH"); + option_env!("PATH",); } #[test] @@ -308,10 +308,10 @@ fn unreachable() { #[test] fn vec() { let _: Vec<()> = vec![]; - let _ = vec![0]; - let _ = vec![0,]; - let _ = vec![0, 1]; - let _ = vec![0, 1,]; + vec![0]; + vec![0,]; + vec![0, 1]; + vec![0, 1,]; } // give a test body access to a fmt::Formatter, which seems @@ -339,21 +339,21 @@ macro_rules! test_with_formatter { test_with_formatter! { #[test] fn write(f: &mut fmt::Formatter) { - let _ = write!(f, "hello"); - let _ = write!(f, "hello",); - let _ = write!(f, "hello {}", "world"); - let _ = write!(f, "hello {}", "world",); + write!(f, "hello"); + write!(f, "hello",); + write!(f, "hello {}", "world"); + write!(f, "hello {}", "world",); } } test_with_formatter! { #[test] fn writeln(f: &mut fmt::Formatter) { - let _ = writeln!(f); - let _ = writeln!(f,); - let _ = writeln!(f, "hello"); - let _ = writeln!(f, "hello",); - let _ = writeln!(f, "hello {}", "world"); - let _ = writeln!(f, "hello {}", "world",); + writeln!(f); + writeln!(f,); + writeln!(f, "hello"); + writeln!(f, "hello",); + writeln!(f, "hello {}", "world"); + writeln!(f, "hello {}", "world",); } } diff --git a/src/test/ui/issues/issue-49074.rs b/src/test/ui/issues/issue-49074.rs index 2e7e118441090..d255fac5427b6 100644 --- a/src/test/ui/issues/issue-49074.rs +++ b/src/test/ui/issues/issue-49074.rs @@ -20,5 +20,4 @@ mod foo { fn main() { bar!(); - //~^ ERROR cannot find macro `bar!` } diff --git a/src/test/ui/issues/issue-49074.stderr b/src/test/ui/issues/issue-49074.stderr index c9984ea2e9a8a..888222b69cc4e 100644 --- a/src/test/ui/issues/issue-49074.stderr +++ b/src/test/ui/issues/issue-49074.stderr @@ -1,11 +1,3 @@ -error: cannot find macro `bar!` in this scope - --> $DIR/issue-49074.rs:22:4 - | -LL | bar!(); - | ^^^ - | - = help: have you added the `#[macro_use]` on the module/import? - error[E0658]: The attribute `marco_use` is currently unknown to the compiler and may have meaning added to it in the future (see issue #29642) --> $DIR/issue-49074.rs:13:1 | @@ -14,6 +6,6 @@ LL | #[marco_use] // typo | = help: add #![feature(custom_attribute)] to the crate attributes to enable -error: aborting due to 2 previous errors +error: aborting due to previous error For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/object-lifetime/object-lifetime-default.stderr b/src/test/ui/object-lifetime/object-lifetime-default.stderr index 567ab72e56ad3..7e334a0e8e6bd 100644 --- a/src/test/ui/object-lifetime/object-lifetime-default.stderr +++ b/src/test/ui/object-lifetime/object-lifetime-default.stderr @@ -1,20 +1,20 @@ -error: BaseDefault - --> $DIR/object-lifetime-default.rs:16:1 +error: 'a,Ambiguous + --> $DIR/object-lifetime-default.rs:34:1 | -LL | struct A(T); //~ ERROR BaseDefault - | ^^^^^^^^^^^^^^^ +LL | struct G<'a,'b,T:'a,U:'a+'b>(&'a T, &'b U); //~ ERROR 'a,Ambiguous + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: BaseDefault - --> $DIR/object-lifetime-default.rs:19:1 +error: 'a,'b + --> $DIR/object-lifetime-default.rs:31:1 | -LL | struct B<'a,T>(&'a (), T); //~ ERROR BaseDefault - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ +LL | struct F<'a,'b,T:'a,U:'b>(&'a T, &'b U); //~ ERROR 'a,'b + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 'a - --> $DIR/object-lifetime-default.rs:22:1 +error: 'b + --> $DIR/object-lifetime-default.rs:28:1 | -LL | struct C<'a,T:'a>(&'a T); //~ ERROR 'a - | ^^^^^^^^^^^^^^^^^^^^^^^^^ +LL | struct E<'a,'b:'a,T:'b>(&'a T, &'b T); //~ ERROR 'b + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: Ambiguous --> $DIR/object-lifetime-default.rs:25:1 @@ -22,23 +22,23 @@ error: Ambiguous LL | struct D<'a,'b,T:'a+'b>(&'a T, &'b T); //~ ERROR Ambiguous | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 'b - --> $DIR/object-lifetime-default.rs:28:1 +error: 'a + --> $DIR/object-lifetime-default.rs:22:1 | -LL | struct E<'a,'b:'a,T:'b>(&'a T, &'b T); //~ ERROR 'b - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +LL | struct C<'a,T:'a>(&'a T); //~ ERROR 'a + | ^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 'a,'b - --> $DIR/object-lifetime-default.rs:31:1 +error: BaseDefault + --> $DIR/object-lifetime-default.rs:19:1 | -LL | struct F<'a,'b,T:'a,U:'b>(&'a T, &'b U); //~ ERROR 'a,'b - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +LL | struct B<'a,T>(&'a (), T); //~ ERROR BaseDefault + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 'a,Ambiguous - --> $DIR/object-lifetime-default.rs:34:1 +error: BaseDefault + --> $DIR/object-lifetime-default.rs:16:1 | -LL | struct G<'a,'b,T:'a,U:'a+'b>(&'a T, &'b U); //~ ERROR 'a,Ambiguous - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +LL | struct A(T); //~ ERROR BaseDefault + | ^^^^^^^^^^^^^^^ error: aborting due to 7 previous errors