fn check_attributes(&mut self, attrs: &[ast::Attribute]) {
        let codemap = &self.cx.parse_sess.codemap();
        let features = self.cx.ecfg.features.unwrap();
        for attr in attrs.iter() {
            feature_gate::check_attribute(&attr, &self.cx.parse_sess, codemap, features);
        }
    }
// Detect use of feature-gated or invalid attributes on macro invocations
// since they will not be detected after macro expansion.
Detect use of feature-gated or invalid attributes on macro invocations
since they will not be detected after macro expansion.
Detect use of feature - gated or invalid attributes on macro invocations since they will not be detected after macro expansion .
fn check_attributes(&mut self, attrs: &[ast::Attribute]) {
        let codemap = &self.cx.parse_sess.codemap();
        let features = self.cx.ecfg.features.unwrap();
        for attr in attrs.iter() {
            feature_gate::check_attribute(&attr, &self.cx.parse_sess, codemap, features);
        }
    }
fn check_attributes ( & mut self , attrs : & [ ast :: Attribute ] ) { let codemap = & self . cx . parse_sess . codemap ( ) ; let features = self . cx . ecfg . features . unwrap ( ) ; for attr in attrs . iter ( ) { feature_gate :: check_attribute ( & attr , & self . cx . parse_sess , codemap , features ) ; } }
Detect use of feature-gated or invalid attributes on macro invocations
since they will not be detected after macro expansion.
Detect use of feature - gated or invalid attributes on macro invocations since they will not be detected after macro expansion .
&mut self
attrs
&[ast::Attribute]
&mut self
attrs
&[ast::Attribute]