@@ -236,21 +236,20 @@ impl<'a> base::Resolver for Resolver<'a> {
236236 } ;
237237 invoc. expansion_data . mark . set_expn_info ( ext. expn_info ( span, & format) ) ;
238238
239+ if let Some ( ( feature, issue) ) = ext. unstable_feature {
240+ let features = self . session . features_untracked ( ) ;
241+ if !span. allows_unstable ( feature) &&
242+ features. declared_lib_features . iter ( ) . all ( |( feat, _) | * feat != feature) {
243+ let msg = format ! ( "macro {}! is unstable" , path) ;
244+ emit_feature_err ( & self . session . parse_sess , feature, span,
245+ GateIssue :: Library ( Some ( issue) ) , & msg) ;
246+ }
247+ }
248+
239249 if let Res :: Def ( _, def_id) = res {
240250 if after_derive {
241251 self . session . span_err ( span, "macro attributes must be placed before `#[derive]`" ) ;
242252 }
243- if let Some ( ( feature, issue) ) = ext. unstable_feature {
244- // Do not stability-check macros in the same crate.
245- let features = self . session . features_untracked ( ) ;
246- if !def_id. is_local ( ) &&
247- !span. allows_unstable ( feature) &&
248- features. declared_lib_features . iter ( ) . all ( |( feat, _) | * feat != feature) {
249- let msg = format ! ( "macro {}! is unstable" , path) ;
250- emit_feature_err ( & self . session . parse_sess , feature, span,
251- GateIssue :: Library ( Some ( issue) ) , & msg) ;
252- }
253- }
254253 self . macro_defs . insert ( invoc. expansion_data . mark , def_id) ;
255254 let normal_module_def_id =
256255 self . macro_def_scope ( invoc. expansion_data . mark ) . normal_ancestor_id ;
0 commit comments