@@ -41,7 +41,7 @@ use rustc_metadata::cstore::CStore;
41
41
use syntax:: source_map:: SourceMap ;
42
42
use syntax:: ext:: hygiene:: { Mark , Transparency , SyntaxContext } ;
43
43
use syntax:: ast:: { self , Name , NodeId , Ident , FloatTy , IntTy , UintTy } ;
44
- use syntax:: ext:: base:: SyntaxExtension ;
44
+ use syntax:: ext:: base:: { SyntaxExtension , SyntaxExtensionKind } ;
45
45
use syntax:: ext:: base:: Determinacy :: { self , Determined , Undetermined } ;
46
46
use syntax:: ext:: base:: MacroKind ;
47
47
use syntax:: symbol:: { Symbol , kw, sym} ;
@@ -1668,6 +1668,7 @@ pub struct Resolver<'a> {
1668
1668
macro_use_prelude : FxHashMap < Name , & ' a NameBinding < ' a > > ,
1669
1669
pub all_macros : FxHashMap < Name , Res > ,
1670
1670
macro_map : FxHashMap < DefId , Lrc < SyntaxExtension > > ,
1671
+ non_macro_attrs : [ Lrc < SyntaxExtension > ; 2 ] ,
1671
1672
macro_defs : FxHashMap < Mark , DefId > ,
1672
1673
local_macro_def_scopes : FxHashMap < NodeId , Module < ' a > > ,
1673
1674
@@ -1941,6 +1942,10 @@ impl<'a> Resolver<'a> {
1941
1942
let mut macro_defs = FxHashMap :: default ( ) ;
1942
1943
macro_defs. insert ( Mark :: root ( ) , root_def_id) ;
1943
1944
1945
+ let non_macro_attr = |mark_used| Lrc :: new ( SyntaxExtension :: default (
1946
+ SyntaxExtensionKind :: NonMacroAttr { mark_used } , session. edition ( )
1947
+ ) ) ;
1948
+
1944
1949
Resolver {
1945
1950
session,
1946
1951
@@ -2014,6 +2019,7 @@ impl<'a> Resolver<'a> {
2014
2019
macro_use_prelude : FxHashMap :: default ( ) ,
2015
2020
all_macros : FxHashMap :: default ( ) ,
2016
2021
macro_map : FxHashMap :: default ( ) ,
2022
+ non_macro_attrs : [ non_macro_attr ( false ) , non_macro_attr ( true ) ] ,
2017
2023
invocations,
2018
2024
macro_defs,
2019
2025
local_macro_def_scopes : FxHashMap :: default ( ) ,
@@ -2030,6 +2036,10 @@ impl<'a> Resolver<'a> {
2030
2036
Default :: default ( )
2031
2037
}
2032
2038
2039
+ fn non_macro_attr ( & self , mark_used : bool ) -> Lrc < SyntaxExtension > {
2040
+ self . non_macro_attrs [ mark_used as usize ] . clone ( )
2041
+ }
2042
+
2033
2043
/// Runs the function on each namespace.
2034
2044
fn per_ns < F : FnMut ( & mut Self , Namespace ) > ( & mut self , mut f : F ) {
2035
2045
f ( self , TypeNS ) ;
0 commit comments