@@ -383,17 +383,8 @@ pub fn phase_2_configure_and_expand(sess: &Session,
383383 -> Option < ast:: Crate > {
384384 let time_passes = sess. time_passes ( ) ;
385385
386- * sess. crate_types . borrow_mut ( ) =
387- collect_crate_types ( sess, & krate. attrs ) ;
388- * sess. crate_metadata . borrow_mut ( ) =
389- collect_crate_metadata ( sess, & krate. attrs ) ;
390-
391- time ( time_passes, "recursion limit" , ( ) , |_| {
392- middle:: recursion_limit:: update_recursion_limit ( sess, & krate) ;
393- } ) ;
394-
395- // strip before expansion to allow macros to depend on
396- // configuration variables e.g/ in
386+ // strip before anything else because crate metadata may use #[cfg_attr]
387+ // and so macros can depend on configuration variables, such as
397388 //
398389 // #[macro_use] #[cfg(foo)]
399390 // mod bar { macro_rules! baz!(() => {{}}) }
@@ -403,6 +394,15 @@ pub fn phase_2_configure_and_expand(sess: &Session,
403394 krate = time ( time_passes, "configuration 1" , krate, |krate|
404395 syntax:: config:: strip_unconfigured_items ( sess. diagnostic ( ) , krate) ) ;
405396
397+ * sess. crate_types . borrow_mut ( ) =
398+ collect_crate_types ( sess, & krate. attrs ) ;
399+ * sess. crate_metadata . borrow_mut ( ) =
400+ collect_crate_metadata ( sess, & krate. attrs ) ;
401+
402+ time ( time_passes, "recursion limit" , ( ) , |_| {
403+ middle:: recursion_limit:: update_recursion_limit ( sess, & krate) ;
404+ } ) ;
405+
406406 time ( time_passes, "gated macro checking" , ( ) , |_| {
407407 let features =
408408 syntax:: feature_gate:: check_crate_macros ( sess. codemap ( ) ,
0 commit comments