@@ -22,7 +22,7 @@ use rustc_errors::{struct_span_err, Applicability, PResult};
22
22
use rustc_feature:: Features ;
23
23
use rustc_parse:: parser:: { AttemptLocalParseRecovery , Parser } ;
24
24
use rustc_parse:: validate_attr;
25
- use rustc_session:: lint:: builtin:: UNUSED_DOC_COMMENTS ;
25
+ use rustc_session:: lint:: builtin:: { SOFT_UNSTABLE , UNUSED_DOC_COMMENTS } ;
26
26
use rustc_session:: lint:: BuiltinLintDiagnostics ;
27
27
use rustc_session:: parse:: { feature_err, ParseSess } ;
28
28
use rustc_session:: Limit ;
@@ -1064,17 +1064,24 @@ impl<'a, 'b> InvocationCollector<'a, 'b> {
1064
1064
} )
1065
1065
. map ( |i| attrs. remove ( i) ) ;
1066
1066
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
+ }
1078
1085
}
1079
1086
}
1080
1087
attr
0 commit comments