@@ -22,7 +22,7 @@ use rustc_errors::{struct_span_err, Applicability, PResult};
2222use rustc_feature:: Features ;
2323use rustc_parse:: parser:: { AttemptLocalParseRecovery , Parser } ;
2424use rustc_parse:: validate_attr;
25- use rustc_session:: lint:: builtin:: UNUSED_DOC_COMMENTS ;
25+ use rustc_session:: lint:: builtin:: { SOFT_UNSTABLE , UNUSED_DOC_COMMENTS } ;
2626use rustc_session:: lint:: BuiltinLintDiagnostics ;
2727use rustc_session:: parse:: { feature_err, ParseSess } ;
2828use rustc_session:: Limit ;
@@ -1064,17 +1064,24 @@ impl<'a, 'b> InvocationCollector<'a, 'b> {
10641064 } )
10651065 . map ( |i| attrs. remove ( i) ) ;
10661066 if let Some ( attr) = & attr {
1067- if !self . cx . ecfg . custom_inner_attributes ( )
1068- && attr. style == ast:: AttrStyle :: Inner
1069- && !attr. has_name ( sym:: test)
1070- {
1071- feature_err (
1072- & self . cx . sess . parse_sess ,
1073- sym:: custom_inner_attributes,
1074- attr. span ,
1075- "non-builtin inner attributes are unstable" ,
1076- )
1077- . emit ( ) ;
1067+ if attr. style == ast:: AttrStyle :: Inner && !self . cx . ecfg . custom_inner_attributes ( ) {
1068+ let msg = "non-builtin inner attributes are unstable" ;
1069+ if attr. has_name ( sym:: test) {
1070+ self . cx . sess . parse_sess . buffer_lint (
1071+ SOFT_UNSTABLE ,
1072+ attr. span ,
1073+ ast:: CRATE_NODE_ID ,
1074+ msg,
1075+ ) ;
1076+ } else {
1077+ feature_err (
1078+ & self . cx . sess . parse_sess ,
1079+ sym:: custom_inner_attributes,
1080+ attr. span ,
1081+ msg,
1082+ )
1083+ . emit ( ) ;
1084+ }
10781085 }
10791086 }
10801087 attr
0 commit comments