Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
a81716f
ci: use `macos-15-intel` runner
xtqqczze Jan 24, 2026
c10dc0c
provide a reminder on the signedness of a failed `assert_simm_bits`
folkertdev Apr 15, 2026
34f0c82
stdarch-gen-loongarch: Support marking intrinsics as portable
heiher Mar 20, 2026
09615f3
hexagon: Add scalar DSP intrinsics
androm3da Apr 8, 2026
12351c1
Merge pull request #2082 from folkertdev/clarify-bit-width
sayantn Apr 16, 2026
be08ac8
Update arm_intrinsics.json
adamgemmell Apr 16, 2026
20c15af
Fix duplicate const specifier
adamgemmell Mar 30, 2026
542aece
Detect and fix lane-swapping on big endian vectors
adamgemmell Apr 1, 2026
f24a634
Add sanity check that intrinsic output isn't empty
adamgemmell Apr 1, 2026
e7cf292
Merge pull request #2087 from adamgemmell/dev/adagem01/intrinsic-test…
folkertdev Apr 17, 2026
0ae288f
Merge pull request #2072 from androm3da/hexagon-scalar-intrinsics
Amanieu Apr 17, 2026
7bfe511
Merge pull request #2083 from adamgemmell/dev/adagem01/json-update
folkertdev Apr 17, 2026
ea746a2
Add round trip tests for v{ld,st}{2,3,4} & v{ld,st}{2,3,4} lane intri…
adamgemmell Apr 2, 2026
5f481c2
Generate some svldff1 tests now that the qemu bug has been fixed
adamgemmell Apr 15, 2026
9671a92
Remove uses of asm
sayantn Apr 14, 2026
fd5ce3c
Merge pull request #2086 from adamgemmell/dev/adagem01/new-neon-tests
folkertdev Apr 17, 2026
00ca9ec
Remove uses of deprecated intrinsics
sayantn Apr 16, 2026
d3cdaee
Implement AVX512-VP2INTERSECT intrinsics
sayantn Apr 13, 2026
1d9e0c0
Merge pull request #2000 from xtqqczze/patch-1
Amanieu Apr 18, 2026
9a5bcde
Merge pull request #2081 from sayantn/avx512vp2intersect
folkertdev Apr 19, 2026
f5fdece
Merge pull request #2085 from sayantn/more-intrinsics
folkertdev Apr 19, 2026
2c9fc72
Add AMX-AVX512 BF16 intrinsics
sayantn Apr 19, 2026
c1a63b4
Prepare for merging from rust-lang/rust
invalid-email-address Apr 20, 2026
63e38c8
Merge ref 'e22c616e4e87' from rust-lang/rust
invalid-email-address Apr 20, 2026
cfbe129
Merge pull request #2090 from rust-lang/rustc-pull
sayantn Apr 20, 2026
476ff35
enable AMX instruction tests in windows-gnu
sayantn Apr 21, 2026
8662950
Merge pull request #2089 from sayantn/amx-more
sayantn Apr 21, 2026
8276d41
loongarch: Use `intrinsics::simd` for selected LSX/LASX intrinsics
heiher Apr 9, 2026
cfb8c3b
Merge pull request #2078 from heiher/loong-generic-intrinsics
sayantn Apr 23, 2026
9334441
mark `vstl1_*` functions as unsafe
folkertdev Apr 24, 2026
89a6657
loongarch: Refactor portable SIMD helper naming and intrinsic paths
heiher Apr 28, 2026
c450860
Merge pull request #2092 from folkertdev/rcpc3-pub-unsafe
sayantn Apr 29, 2026
e8b4682
Handle `Identifier` unsafety in stdarch-gen-arm
sayantn Apr 30, 2026
3bb09d4
Remove all unneeded `unsafe` from stdarch-gen-arm
sayantn Apr 30, 2026
0281120
Fix `fixupimm`
sayantn Apr 30, 2026
7539007
Prepare for merging from rust-lang/rust
invalid-email-address May 4, 2026
075e42d
Merge ref '045b17737dab' from rust-lang/rust
invalid-email-address May 4, 2026
293492a
Merge pull request #2095 from sayantn/stdarch-gen-arm-unsafe
folkertdev May 5, 2026
2f08046
Merge pull request #2102 from rust-lang/rustc-pull
folkertdev May 5, 2026
d99adcb
Merge pull request #2094 from heiher/refine
folkertdev May 5, 2026
a8d85e6
tests/ui: allow spaces in hashbrown src normalization
kupiakos May 5, 2026
47f942d
Merge pull request #2096 from sayantn/fix-fixupimm
Amanieu May 6, 2026
feec99d
resolve: Remove `MacroData`
petrochenkov May 6, 2026
1d2b6ed
Remove #[inline(always)] from Arm intrinsic generator & re-generate i…
Jamesbarford May 6, 2026
6169e94
Remove #[inline(always)] from hexagon intrinsic generator & re-genera…
Jamesbarford May 6, 2026
13979fc
Remove #[inline(always)] from loongarch intrinsic generator & re-gene…
Jamesbarford May 6, 2026
a854325
remove `target_feature_inline_always` from lib.rs
Jamesbarford May 6, 2026
4c3bde6
replace more instances of `#[inline(always)]`
Jamesbarford May 6, 2026
f377362
Merge pull request #2104 from Jamesbarford/remove-inline-always-targe…
folkertdev May 6, 2026
5485f8e
Rollup merge of #156251 - folkertdev:stdarch-sync-2026-05-06, r=folke…
JonathanBrouwer May 6, 2026
9749f01
Rollup merge of #156236 - petrochenkov:nomacdata, r=chenyukang
JonathanBrouwer May 6, 2026
08409d2
Rollup merge of #156211 - kupiakos:space-in-hashbrown-src-location, r…
JonathanBrouwer May 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 13 additions & 7 deletions compiler/rustc_expand/src/mbe/macro_rules.rs
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ pub struct MacroRulesMacroExpander {
transparency: Transparency,
kinds: MacroKinds,
rules: Vec<MacroRule>,
macro_rules: bool,
}

impl MacroRulesMacroExpander {
Expand All @@ -189,6 +190,14 @@ impl MacroRulesMacroExpander {
self.kinds
}

pub fn nrules(&self) -> usize {
self.rules.len()
}

pub fn is_macro_rules(&self) -> bool {
self.macro_rules
}

pub fn expand_derive(
&self,
cx: &mut ExtCtxt<'_>,
Expand Down Expand Up @@ -714,13 +723,12 @@ pub fn compile_declarative_macro(
span: Span,
node_id: NodeId,
edition: Edition,
) -> (SyntaxExtension, usize) {
) -> SyntaxExtension {
let mk_syn_ext = |kind| {
let is_local = is_defined_in_current_crate(node_id);
SyntaxExtension::new(sess, kind, span, Vec::new(), edition, ident.name, attrs, is_local)
};
let dummy_syn_ext =
|guar| (mk_syn_ext(SyntaxExtensionKind::Bang(Arc::new(DummyBang(guar)))), 0);
let dummy_syn_ext = |guar| mk_syn_ext(SyntaxExtensionKind::Bang(Arc::new(DummyBang(guar))));

let macro_rules = macro_def.macro_rules;
let exp_sep = if macro_rules { exp!(Semi) } else { exp!(Comma) };
Expand Down Expand Up @@ -857,9 +865,6 @@ pub fn compile_declarative_macro(
return dummy_syn_ext(guar);
}

// Return the number of rules for unused rule linting, if this is a local macro.
let nrules = if is_defined_in_current_crate(node_id) { rules.len() } else { 0 };

let on_unmatch_args = find_attr!(
attrs,
OnUnmatchArgs { directive, .. } => directive.clone()
Expand All @@ -875,8 +880,9 @@ pub fn compile_declarative_macro(
on_unmatch_args,
transparency,
rules,
macro_rules,
};
(mk_syn_ext(SyntaxExtensionKind::MacroRules(Arc::new(exp))), nrules)
mk_syn_ext(SyntaxExtensionKind::MacroRules(Arc::new(exp)))
}

fn check_no_eof(sess: &Session, p: &Parser<'_>, msg: &'static str) -> Option<ErrorGuaranteed> {
Expand Down
27 changes: 13 additions & 14 deletions compiler/rustc_resolve/src/build_reduced_graph.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use rustc_ast::{
TyAlias,
};
use rustc_attr_parsing::AttributeParser;
use rustc_expand::base::ResolverExpand;
use rustc_expand::base::{ResolverExpand, SyntaxExtension, SyntaxExtensionKind};
use rustc_hir::Attribute;
use rustc_hir::attrs::{AttributeKind, MacroUseArgs};
use rustc_hir::def::{self, *};
Expand All @@ -37,9 +37,8 @@ use crate::macros::{MacroRulesDecl, MacroRulesScope, MacroRulesScopeRef};
use crate::ref_mut::CmCell;
use crate::{
BindingKey, Decl, DeclData, DeclKind, DelayedVisResolutionError, ExternModule,
ExternPreludeEntry, Finalize, IdentKey, LocalModule, MacroData, Module, ModuleKind,
ModuleOrUniformRoot, ParentScope, PathResult, Res, Resolver, Segment, Used, VisResolutionError,
errors,
ExternPreludeEntry, Finalize, IdentKey, LocalModule, Module, ModuleKind, ModuleOrUniformRoot,
ParentScope, PathResult, Res, Resolver, Segment, Used, VisResolutionError, errors,
};

impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
Expand Down Expand Up @@ -207,28 +206,28 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
}
}

pub(crate) fn get_macro(&self, res: Res) -> Option<&'ra MacroData> {
pub(crate) fn get_macro(&self, res: Res) -> Option<&'ra Arc<SyntaxExtension>> {
match res {
Res::Def(DefKind::Macro(..), def_id) => Some(self.get_macro_by_def_id(def_id)),
Res::NonMacroAttr(_) => Some(self.non_macro_attr),
_ => None,
}
}

pub(crate) fn get_macro_by_def_id(&self, def_id: DefId) -> &'ra MacroData {
pub(crate) fn get_macro_by_def_id(&self, def_id: DefId) -> &'ra Arc<SyntaxExtension> {
// Local macros are always compiled.
match def_id.as_local() {
Some(local_def_id) => self.local_macro_map[&local_def_id],
None => *self.extern_macro_map.borrow_mut().entry(def_id).or_insert_with(|| {
None => self.extern_macro_map.borrow_mut().entry(def_id).or_insert_with(|| {
let loaded_macro = self.cstore().load_macro_untracked(self.tcx, def_id);
let macro_data = match loaded_macro {
let ext = match loaded_macro {
LoadedMacro::MacroDef { def, ident, attrs, span, edition } => {
self.compile_macro(&def, ident, &attrs, span, ast::DUMMY_NODE_ID, edition)
}
LoadedMacro::ProcMacro(ext) => MacroData::new(Arc::new(ext)),
LoadedMacro::ProcMacro(ext) => ext,
};

self.arenas.alloc_macro(macro_data)
self.arenas.alloc_macro(Arc::new(ext))
}),
}
}
Expand Down Expand Up @@ -1269,8 +1268,9 @@ impl<'a, 'ra, 'tcx> DefCollector<'a, 'ra, 'tcx> {
fn insert_unused_macro(&mut self, ident: Ident, def_id: LocalDefId, node_id: NodeId) {
if !ident.as_str().starts_with('_') {
self.r.unused_macros.insert(def_id, (node_id, ident));
let nrules = self.r.local_macro_map[&def_id].nrules;
self.r.unused_macro_rules.insert(node_id, DenseBitSet::new_filled(nrules));
if let SyntaxExtensionKind::MacroRules(mr) = &self.r.local_macro_map[&def_id].kind {
self.r.unused_macro_rules.insert(node_id, DenseBitSet::new_filled(mr.nrules()));
}
}
}

Expand All @@ -1291,8 +1291,7 @@ impl<'a, 'ra, 'tcx> DefCollector<'a, 'ra, 'tcx> {
Some((macro_kind, ident, span)) => {
let macro_kinds = macro_kind.into();
let res = Res::Def(DefKind::Macro(macro_kinds), def_id.to_def_id());
let macro_data = MacroData::new(self.r.dummy_ext(macro_kind));
self.r.new_local_macro(def_id, macro_data);
self.r.new_local_macro(def_id, self.r.dummy_ext(macro_kind));
self.r.proc_macro_stubs.insert(def_id);
(res, ident, span, false)
}
Expand Down
13 changes: 7 additions & 6 deletions compiler/rustc_resolve/src/def_collector.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use std::mem;
use std::sync::Arc;

use rustc_ast::visit::FnKind;
use rustc_ast::*;
Expand Down Expand Up @@ -117,7 +118,7 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
fn visit_item(&mut self, i: &'a Item) {
// Pick the def data. This need not be unique, but the more
// information we encapsulate into, the better
let mut opt_macro_data = None;
let mut opt_syn_ext = None;
let def_kind = match &i.kind {
ItemKind::Impl(i) => DefKind::Impl { of_trait: i.of_trait.is_some() },
ItemKind::ForeignMod(..) => DefKind::ForeignMod,
Expand Down Expand Up @@ -165,9 +166,9 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
},
);

let macro_data = self.r.compile_macro(def, *ident, &attrs, i.span, i.id, edition);
let macro_kinds = macro_data.ext.macro_kinds();
opt_macro_data = Some(macro_data);
let ext = self.r.compile_macro(def, *ident, &attrs, i.span, i.id, edition);
let macro_kinds = ext.macro_kinds();
opt_syn_ext = Some(ext);
DefKind::Macro(macro_kinds)
}
ItemKind::GlobalAsm(..) => DefKind::GlobalAsm,
Expand All @@ -185,8 +186,8 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
};
let feed = self.create_def(i.id, i.kind.ident().map(|ident| ident.name), def_kind, i.span);

if let Some(macro_data) = opt_macro_data {
self.r.new_local_macro(feed.def_id(), macro_data);
if let Some(ext) = opt_syn_ext {
self.r.new_local_macro(feed.def_id(), Arc::new(ext));
}

self.with_parent(feed.def_id(), |this| {
Expand Down
8 changes: 4 additions & 4 deletions compiler/rustc_resolve/src/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1742,7 +1742,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
if let Some((def_id, unused_ident)) = unused_macro {
let scope = self.local_macro_def_scopes[&def_id];
let parent_nearest = parent_scope.module.nearest_parent_mod();
let unused_macro_kinds = self.local_macro_map[def_id].ext.macro_kinds();
let unused_macro_kinds = self.local_macro_map[def_id].macro_kinds();
if !unused_macro_kinds.contains(macro_kind.into()) {
match macro_kind {
MacroKind::Bang => {
Expand Down Expand Up @@ -1860,13 +1860,13 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
let mut all_attrs: UnordMap<Symbol, Vec<_>> = UnordMap::default();
// We're collecting these in a hashmap, and handle ordering the output further down.
#[allow(rustc::potential_query_instability)]
for (def_id, data) in self
for (def_id, ext) in self
.local_macro_map
.iter()
.map(|(local_id, data)| (local_id.to_def_id(), data))
.map(|(local_id, ext)| (local_id.to_def_id(), ext))
.chain(self.extern_macro_map.borrow().iter().map(|(id, d)| (*id, d)))
{
for helper_attr in &data.ext.helper_attrs {
for helper_attr in &ext.helper_attrs {
let item_name = self.tcx.item_name(def_id);
all_attrs.entry(*helper_attr).or_default().push(item_name);
if helper_attr == &ident.name {
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_resolve/src/ident.rs
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
// The macro is a proc macro derive
&& let Some(def_id) = module.expansion.expn_data().macro_def_id
{
let ext = &self.get_macro_by_def_id(def_id).ext;
let ext = self.get_macro_by_def_id(def_id);
if ext.builtin_name.is_none()
&& ext.macro_kinds() == MacroKinds::DERIVE
&& parent.expansion.outer_expn_is_descendant_of(**ctxt)
Expand Down
5 changes: 4 additions & 1 deletion compiler/rustc_resolve/src/imports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ use rustc_errors::codes::*;
use rustc_errors::{
Applicability, BufferedEarlyLint, Diagnostic, MultiSpan, pluralize, struct_span_code_err,
};
use rustc_expand::base::SyntaxExtensionKind;
use rustc_hir::Attribute;
use rustc_hir::attrs::AttributeKind;
use rustc_hir::attrs::diagnostic::{CustomDiagnostic, Directive, FormatArgs};
Expand Down Expand Up @@ -1639,7 +1640,9 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
match decl.kind {
// exclude decl_macro
DeclKind::Def(Res::Def(DefKind::Macro(_), def_id))
if self.get_macro_by_def_id(def_id).macro_rules =>
if let SyntaxExtensionKind::MacroRules(mr) =
&self.get_macro_by_def_id(def_id).kind
&& mr.is_macro_rules() =>
{
err.subdiagnostic(ConsiderAddingMacroExport { span: decl.span });
err.subdiagnostic(ConsiderMarkingAsPubCrate { vis_span: import.vis_span });
Expand Down
41 changes: 16 additions & 25 deletions compiler/rustc_resolve/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1265,18 +1265,6 @@ struct DeriveData {
has_derive_copy: bool,
}

struct MacroData {
ext: Arc<SyntaxExtension>,
nrules: usize,
macro_rules: bool,
}

impl MacroData {
fn new(ext: Arc<SyntaxExtension>) -> MacroData {
MacroData { ext, nrules: 0, macro_rules: false }
}
}

pub struct ResolverOutputs<'tcx> {
pub global_ctxt: ResolverGlobalCtxt,
pub ast_lowering: ResolverAstLowering<'tcx>,
Expand Down Expand Up @@ -1396,12 +1384,12 @@ pub struct Resolver<'ra, 'tcx> {
registered_tools: &'tcx RegisteredTools,
macro_use_prelude: FxIndexMap<Symbol, Decl<'ra>>,
/// Eagerly populated map of all local macro definitions.
local_macro_map: FxHashMap<LocalDefId, &'ra MacroData> = default::fx_hash_map(),
local_macro_map: FxHashMap<LocalDefId, &'ra Arc<SyntaxExtension>> = default::fx_hash_map(),
/// Lazily populated cache of macro definitions loaded from external crates.
extern_macro_map: CacheRefCell<FxHashMap<DefId, &'ra MacroData>>,
extern_macro_map: CacheRefCell<FxHashMap<DefId, &'ra Arc<SyntaxExtension>>>,
dummy_ext_bang: Arc<SyntaxExtension>,
dummy_ext_derive: Arc<SyntaxExtension>,
non_macro_attr: &'ra MacroData,
non_macro_attr: &'ra Arc<SyntaxExtension>,
local_macro_def_scopes: FxHashMap<LocalDefId, LocalModule<'ra>> = default::fx_hash_map(),
ast_transform_scopes: FxHashMap<LocalExpnId, LocalModule<'ra>> = default::fx_hash_map(),
unused_macros: FxIndexMap<LocalDefId, (NodeId, Ident)>,
Expand Down Expand Up @@ -1520,7 +1508,7 @@ pub struct ResolverArenas<'ra> {
imports: TypedArena<ImportData<'ra>>,
name_resolutions: TypedArena<CmRefCell<NameResolution<'ra>>>,
ast_paths: TypedArena<ast::Path>,
macros: TypedArena<MacroData>,
macros: TypedArena<Arc<SyntaxExtension>>,
dropless: DroplessArena,
}

Expand Down Expand Up @@ -1599,8 +1587,8 @@ impl<'ra> ResolverArenas<'ra> {
fn alloc_ast_paths(&'ra self, paths: &[ast::Path]) -> &'ra [ast::Path] {
self.ast_paths.alloc_from_iter(paths.iter().cloned())
}
fn alloc_macro(&'ra self, macro_data: MacroData) -> &'ra MacroData {
self.macros.alloc(macro_data)
fn alloc_macro(&'ra self, ext: Arc<SyntaxExtension>) -> &'ra Arc<SyntaxExtension> {
self.macros.alloc(ext)
}
fn alloc_pattern_spans(&'ra self, spans: impl Iterator<Item = Span>) -> &'ra [Span] {
self.dropless.alloc_from_iter(spans)
Expand Down Expand Up @@ -1821,8 +1809,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
extern_macro_map: Default::default(),
dummy_ext_bang: Arc::new(SyntaxExtension::dummy_bang(edition)),
dummy_ext_derive: Arc::new(SyntaxExtension::dummy_derive(edition)),
non_macro_attr: arenas
.alloc_macro(MacroData::new(Arc::new(SyntaxExtension::non_macro_attr(edition)))),
non_macro_attr: arenas.alloc_macro(Arc::new(SyntaxExtension::non_macro_attr(edition))),
unused_macros: Default::default(),
unused_macro_rules: Default::default(),
single_segment_macro_resolutions: Default::default(),
Expand Down Expand Up @@ -1889,8 +1876,12 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
module
}

fn new_local_macro(&mut self, def_id: LocalDefId, macro_data: MacroData) -> &'ra MacroData {
let mac = self.arenas.alloc_macro(macro_data);
fn new_local_macro(
&mut self,
def_id: LocalDefId,
ext: Arc<SyntaxExtension>,
) -> &'ra Arc<SyntaxExtension> {
let mac = self.arenas.alloc_macro(ext);
self.local_macro_map.insert(def_id, mac);
mac
}
Expand Down Expand Up @@ -1993,7 +1984,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
match macro_kind {
MacroKind::Bang => Arc::clone(&self.dummy_ext_bang),
MacroKind::Derive => Arc::clone(&self.dummy_ext_derive),
MacroKind::Attr => Arc::clone(&self.non_macro_attr.ext),
MacroKind::Attr => Arc::clone(self.non_macro_attr),
}
}

Expand Down Expand Up @@ -2022,11 +2013,11 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
}

fn is_builtin_macro(&self, res: Res) -> bool {
self.get_macro(res).is_some_and(|macro_data| macro_data.ext.builtin_name.is_some())
self.get_macro(res).is_some_and(|ext| ext.builtin_name.is_some())
}

fn is_specific_builtin_macro(&self, res: Res, symbol: Symbol) -> bool {
self.get_macro(res).is_some_and(|macro_data| macro_data.ext.builtin_name == Some(symbol))
self.get_macro(res).is_some_and(|ext| ext.builtin_name == Some(symbol))
}

fn macro_def(&self, mut ctxt: SyntaxContext) -> DefId {
Expand Down
17 changes: 8 additions & 9 deletions compiler/rustc_resolve/src/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ use crate::hygiene::Macros20NormalizedSyntaxContext;
use crate::imports::Import;
use crate::{
BindingKey, CacheCell, CmResolver, Decl, DeclKind, DeriveData, Determinacy, Finalize, IdentKey,
InvocationParent, MacroData, ModuleKind, ModuleOrUniformRoot, ParentScope, PathResult, Res,
InvocationParent, ModuleKind, ModuleOrUniformRoot, ParentScope, PathResult, Res,
ResolutionError, Resolver, ScopeSet, Segment, Used,
};

Expand Down Expand Up @@ -361,8 +361,8 @@ impl<'ra, 'tcx> ResolverExpand for Resolver<'ra, 'tcx> {
continue;
}
let def_id = self.local_def_id(node_id);
let m = &self.local_macro_map[&def_id];
let SyntaxExtensionKind::MacroRules(ref m) = m.ext.kind else {
let ext = self.local_macro_map[&def_id];
let SyntaxExtensionKind::MacroRules(ref m) = ext.kind else {
continue;
};
for arm_i in unused_arms.iter() {
Expand Down Expand Up @@ -882,7 +882,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
}
_ => None,
},
None => self.get_macro(res).map(|macro_data| Arc::clone(&macro_data.ext)),
None => self.get_macro(res).map(|ext| Arc::clone(ext)),
};
Ok((ext, res))
}
Expand Down Expand Up @@ -1212,7 +1212,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
// Reserve some names that are not quite covered by the general check
// performed on `Resolver::builtin_attrs`.
if name == sym::cfg || name == sym::cfg_attr {
let macro_kinds = self.get_macro(res).map(|macro_data| macro_data.ext.macro_kinds());
let macro_kinds = self.get_macro(res).map(|ext| ext.macro_kinds());
if macro_kinds.is_some() && sub_namespace_match(macro_kinds, Some(MacroKind::Attr)) {
self.dcx().emit_err(errors::NameReservedInAttributeNamespace { span, ident: name });
}
Expand All @@ -1230,8 +1230,8 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
span: Span,
node_id: NodeId,
edition: Edition,
) -> MacroData {
let (mut ext, mut nrules) = compile_declarative_macro(
) -> SyntaxExtension {
let mut ext = compile_declarative_macro(
self.tcx.sess,
self.tcx.features(),
macro_def,
Expand All @@ -1248,13 +1248,12 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
// The macro is a built-in, replace its expander function
// while still taking everything else from the source code.
ext.kind = builtin_ext_kind.clone();
nrules = 0;
} else {
self.dcx().emit_err(errors::CannotFindBuiltinMacroWithName { span, ident });
}
}

MacroData { ext: Arc::new(ext), nrules, macro_rules: macro_def.macro_rules }
ext
}

fn path_accessible(
Expand Down
Loading
Loading