@@ -383,17 +383,8 @@ pub fn phase_2_configure_and_expand(sess: &Session,
383
383
-> Option < ast:: Crate > {
384
384
let time_passes = sess. time_passes ( ) ;
385
385
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
397
388
//
398
389
// #[macro_use] #[cfg(foo)]
399
390
// mod bar { macro_rules! baz!(() => {{}}) }
@@ -403,6 +394,15 @@ pub fn phase_2_configure_and_expand(sess: &Session,
403
394
krate = time ( time_passes, "configuration 1" , krate, |krate|
404
395
syntax:: config:: strip_unconfigured_items ( sess. diagnostic ( ) , krate) ) ;
405
396
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
+
406
406
time ( time_passes, "gated macro checking" , ( ) , |_| {
407
407
let features =
408
408
syntax:: feature_gate:: check_crate_macros ( sess. codemap ( ) ,
0 commit comments