@@ -514,10 +514,10 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
514
514
}
515
515
}
516
516
517
- pub fn check_crate ( krate : & ast:: Crate , sess : & Session ) {
518
- maybe_stage_features ( sess, krate) ;
519
- check_incompatible_features ( sess) ;
520
- let mut visitor = PostExpansionVisitor { sess, features : & sess . features_untracked ( ) } ;
517
+ pub fn check_crate ( krate : & ast:: Crate , sess : & Session , features : & Features ) {
518
+ maybe_stage_features ( sess, features , krate) ;
519
+ check_incompatible_features ( sess, features ) ;
520
+ let mut visitor = PostExpansionVisitor { sess, features } ;
521
521
522
522
let spans = sess. parse_sess . gated_spans . spans . borrow ( ) ;
523
523
macro_rules! gate_all {
@@ -600,12 +600,12 @@ pub fn check_crate(krate: &ast::Crate, sess: &Session) {
600
600
visit:: walk_crate ( & mut visitor, krate) ;
601
601
}
602
602
603
- fn maybe_stage_features ( sess : & Session , krate : & ast:: Crate ) {
603
+ fn maybe_stage_features ( sess : & Session , features : & Features , krate : & ast:: Crate ) {
604
604
// checks if `#![feature]` has been used to enable any lang feature
605
605
// does not check the same for lib features unless there's at least one
606
606
// declared lang feature
607
607
if !sess. opts . unstable_features . is_nightly_build ( ) {
608
- let lang_features = & sess . features_untracked ( ) . declared_lang_features ;
608
+ let lang_features = & features . declared_lang_features ;
609
609
if lang_features. len ( ) == 0 {
610
610
return ;
611
611
}
@@ -640,9 +640,7 @@ fn maybe_stage_features(sess: &Session, krate: &ast::Crate) {
640
640
}
641
641
}
642
642
643
- fn check_incompatible_features ( sess : & Session ) {
644
- let features = sess. features_untracked ( ) ;
645
-
643
+ fn check_incompatible_features ( sess : & Session , features : & Features ) {
646
644
let declared_features = features
647
645
. declared_lang_features
648
646
. iter ( )
0 commit comments