File tree Expand file tree Collapse file tree 3 files changed +19
-6
lines changed
Expand file tree Collapse file tree 3 files changed +19
-6
lines changed Original file line number Diff line number Diff line change @@ -214,6 +214,8 @@ passes_doc_keyword_only_impl =
214214passes_doc_test_takes_list =
215215 `#[doc(test(...)]` takes a list of attributes
216216
217+ passes_doc_test_literal = `#![doc(test(...)]` does not take a literal
218+
217219passes_doc_test_unknown =
218220 unknown `doc(test)` attribute `{$path}`
219221
Original file line number Diff line number Diff line change @@ -944,21 +944,28 @@ impl CheckAttrVisitor<'_> {
944944 let mut is_valid = true;
945945 if let Some(metas) = meta.meta_item_list() {
946946 for i_meta in metas {
947- match i_meta.name_or_empty() {
948- sym::attr | sym::no_crate_inject => {}
949- _ => {
947+ match ( i_meta.name_or_empty(), i_meta.meta_item() ) {
948+ ( sym::attr | sym::no_crate_inject, _) => {}
949+ (_, Some(m)) => {
950950 self.tcx.emit_spanned_lint(
951951 INVALID_DOC_ATTRIBUTES,
952952 hir_id,
953953 i_meta.span(),
954954 errors::DocTestUnknown {
955- path: rustc_ast_pretty::pprust::path_to_string(
956- &i_meta.meta_item().unwrap().path,
957- ),
955+ path: rustc_ast_pretty::pprust::path_to_string(&m.path),
958956 },
959957 );
960958 is_valid = false;
961959 }
960+ (_, None) => {
961+ self.tcx.emit_spanned_lint(
962+ INVALID_DOC_ATTRIBUTES,
963+ hir_id,
964+ i_meta.span(),
965+ errors::DocTestLiteral,
966+ );
967+ is_valid = false;
968+ }
962969 }
963970 }
964971 } else {
Original file line number Diff line number Diff line change @@ -281,6 +281,10 @@ pub struct DocTestUnknown {
281281 pub path: String,
282282}
283283
284+ #[derive(LintDiagnostic)]
285+ #[diag(passes_doc_test_literal)]
286+ pub struct DocTestLiteral;
287+
284288#[derive(LintDiagnostic)]
285289#[diag(passes_doc_test_takes_list)]
286290pub struct DocTestTakesList;
You can’t perform that action at this time.
0 commit comments