diff options
| author | bors <bors@rust-lang.org> | 2022-09-27 01:58:36 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-09-27 01:58:36 +0000 |
| commit | cd4d9d934fd3bc1b6a0b0fcb3548a1b26fc53c9d (patch) | |
| tree | 28b9a7976fd3103a1a2b087a1fac01e3519db8d4 /src | |
| parent | f3a6fbf2f2e898ca4d788b3e686726fa9770c676 (diff) | |
| parent | 7381d7d8b2594ec7dff32562ad7be705c6c0ebde (diff) | |
| download | rust-cd4d9d934fd3bc1b6a0b0fcb3548a1b26fc53c9d.tar.gz rust-cd4d9d934fd3bc1b6a0b0fcb3548a1b26fc53c9d.zip | |
Auto merge of #102331 - notriddle:rollup-dmefd2d, r=notriddle
Rollup of 6 pull requests Successful merges: - #102283 (Improve code example for Option::unwrap_or_default) - #102319 (rustdoc: merge CSS `table` rules into `.docblock`) - #102321 ( Rustdoc-Json: List impls for primitives) - #102322 (Document that Display automatically implements ToString) - #102325 (rustdoc: give `.line-number` / `.line-numbers` meaningful names) - #102326 (rustdoc: Update doc comment for splitn_mut to include mutable in the …) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'src')
21 files changed, 108 insertions, 69 deletions
diff --git a/src/librustdoc/html/sources.rs b/src/librustdoc/html/sources.rs index 2e2bee78b95..7ab65bff346 100644 --- a/src/librustdoc/html/sources.rs +++ b/src/librustdoc/html/sources.rs @@ -274,7 +274,7 @@ pub(crate) fn print_src( ) { let lines = s.lines().count(); let mut line_numbers = Buffer::empty_from(buf); - line_numbers.write_str("<pre class=\"line-numbers\">"); + line_numbers.write_str("<pre class=\"src-line-numbers\">"); match source_context { SourceContext::Standalone => { for line in 1..=lines { diff --git a/src/librustdoc/html/static/css/rustdoc.css b/src/librustdoc/html/static/css/rustdoc.css index 28dc4bf3010..e7a05b80c12 100644 --- a/src/librustdoc/html/static/css/rustdoc.css +++ b/src/librustdoc/html/static/css/rustdoc.css @@ -299,15 +299,6 @@ summary { /* Fix some style changes due to normalize.css 8 */ -td, -th { - padding: 0; -} - -table { - border-collapse: collapse; -} - button, input, optgroup, @@ -578,7 +569,7 @@ h2.location a { position: relative; } -.example-wrap > pre.line-number { +pre.example-line-numbers { overflow: initial; border: 1px solid; padding: 13px 8px; @@ -591,15 +582,15 @@ h2.location a { text-decoration: underline; } -.line-numbers { +.src-line-numbers { text-align: right; } -.rustdoc:not(.source) .example-wrap > pre:not(.line-number) { +.rustdoc:not(.source) .example-wrap > pre:not(.example-line-numbers) { width: 100%; overflow-x: auto; } -.rustdoc:not(.source) .example-wrap > pre.line-numbers { +.rustdoc:not(.source) .example-wrap > pre.src-line-numbers { width: auto; overflow-x: visible; } @@ -612,14 +603,14 @@ h2.location a { text-align: center; } -.content > .example-wrap pre.line-numbers { +.content > .example-wrap pre.src-line-numbers { position: relative; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } -.line-numbers span { +.src-line-numbers span { cursor: pointer; } @@ -695,6 +686,7 @@ pre, .rustdoc.source .example-wrap { width: calc(100% - 2px); overflow-x: auto; display: block; + border-collapse: collapse; } .docblock table td { @@ -2067,7 +2059,7 @@ in storage.js plus the media query with (min-width: 701px) padding-bottom: 0; } -.scraped-example:not(.expanded) .code-wrapper pre.line-numbers { +.scraped-example:not(.expanded) .code-wrapper pre.src-line-numbers { overflow-x: hidden; } @@ -2113,12 +2105,12 @@ in storage.js plus the media query with (min-width: 701px) bottom: 0; } -.scraped-example .code-wrapper .line-numbers { +.scraped-example .code-wrapper .src-line-numbers { margin: 0; padding: 14px 0; } -.scraped-example .code-wrapper .line-numbers span { +.scraped-example .code-wrapper .src-line-numbers span { padding: 0 14px; } diff --git a/src/librustdoc/html/static/css/themes/ayu.css b/src/librustdoc/html/static/css/themes/ayu.css index e7a898e9fa6..44238ca573d 100644 --- a/src/librustdoc/html/static/css/themes/ayu.css +++ b/src/librustdoc/html/static/css/themes/ayu.css @@ -93,8 +93,8 @@ pre, .rustdoc.source .example-wrap { color: #ff7733; } -.line-numbers span { color: #5c6773; } -.line-numbers .line-highlighted { +.src-line-numbers span { color: #5c6773; } +.src-line-numbers .line-highlighted { color: #708090; background-color: rgba(255, 236, 164, 0.06); padding-right: 4px; @@ -171,7 +171,7 @@ details.rustdoc-toggle > summary::before { color: #788797; } -.line-numbers :target { background-color: transparent; } +.src-line-numbers :target { background-color: transparent; } /* Code highlighting */ pre.rust .number, pre.rust .string { color: #b8cc52; } @@ -190,7 +190,7 @@ pre.rust .attribute { color: #e6e1cf; } -.example-wrap > pre.line-number { +pre.example-line-numbers { color: #5c67736e; border: none; } diff --git a/src/librustdoc/html/static/css/themes/dark.css b/src/librustdoc/html/static/css/themes/dark.css index 07a1ed8b7db..858d836c03d 100644 --- a/src/librustdoc/html/static/css/themes/dark.css +++ b/src/librustdoc/html/static/css/themes/dark.css @@ -54,8 +54,8 @@ input:focus + .slider { background: #444; } -.line-numbers span { color: #3B91E2; } -.line-numbers .line-highlighted { +.src-line-numbers span { color: #3B91E2; } +.src-line-numbers .line-highlighted { background-color: #0a042f !important; } @@ -141,7 +141,7 @@ details.rustdoc-toggle > summary::before { background: none; } -.line-numbers :target { background-color: transparent; } +.src-line-numbers :target { background-color: transparent; } /* Code highlighting */ pre.rust .kw { color: #ab8ac1; } @@ -155,7 +155,7 @@ pre.rust .question-mark { color: #ff9011; } -.example-wrap > pre.line-number { +pre.example-line-numbers { border-color: #4a4949; } diff --git a/src/librustdoc/html/static/css/themes/light.css b/src/librustdoc/html/static/css/themes/light.css index 64335f62928..6fbea6f6c7a 100644 --- a/src/librustdoc/html/static/css/themes/light.css +++ b/src/librustdoc/html/static/css/themes/light.css @@ -53,8 +53,8 @@ input:focus + .slider { background-color: #fff; } -.line-numbers span { color: #c67e2d; } -.line-numbers .line-highlighted { +.src-line-numbers span { color: #c67e2d; } +.src-line-numbers .line-highlighted { background-color: #FDFFD3 !important; } @@ -125,7 +125,7 @@ body.source .example-wrap pre.rust a { .stab { background: #FFF5D6; border-color: #FFC600; } .stab.portability > code { background: none; } -.line-numbers :target { background-color: transparent; } +.src-line-numbers :target { background-color: transparent; } /* Code highlighting */ pre.rust .kw { color: #8959A8; } @@ -141,7 +141,7 @@ pre.rust .question-mark { color: #ff9011; } -.example-wrap > pre.line-number { +pre.example-line-numbers { border-color: #c7c7c7; } diff --git a/src/librustdoc/html/static/js/main.js b/src/librustdoc/html/static/js/main.js index c9674f11a5e..bbaf6d3b507 100644 --- a/src/librustdoc/html/static/js/main.js +++ b/src/librustdoc/html/static/js/main.js @@ -699,7 +699,7 @@ function loadCss(cssFileName) { window.rustdoc_add_line_numbers_to_examples = () => { onEachLazy(document.getElementsByClassName("rust-example-rendered"), x => { const parent = x.parentNode; - const line_numbers = parent.querySelectorAll(".line-number"); + const line_numbers = parent.querySelectorAll(".example-line-numbers"); if (line_numbers.length > 0) { return; } @@ -709,7 +709,7 @@ function loadCss(cssFileName) { elems.push(i + 1); } const node = document.createElement("pre"); - addClass(node, "line-number"); + addClass(node, "example-line-numbers"); node.innerHTML = elems.join("\n"); parent.insertBefore(node, x); }); @@ -718,7 +718,7 @@ function loadCss(cssFileName) { window.rustdoc_remove_line_numbers_from_examples = () => { onEachLazy(document.getElementsByClassName("rust-example-rendered"), x => { const parent = x.parentNode; - const line_numbers = parent.querySelectorAll(".line-number"); + const line_numbers = parent.querySelectorAll(".example-line-numbers"); for (const node of line_numbers) { parent.removeChild(node); } diff --git a/src/librustdoc/html/static/js/scrape-examples.js b/src/librustdoc/html/static/js/scrape-examples.js index fd7a1449763..d0fd115fd15 100644 --- a/src/librustdoc/html/static/js/scrape-examples.js +++ b/src/librustdoc/html/static/js/scrape-examples.js @@ -8,7 +8,7 @@ // Scroll code block to the given code location function scrollToLoc(elt, loc) { - const lines = elt.querySelector(".line-numbers"); + const lines = elt.querySelector(".src-line-numbers"); let scrollOffset; // If the block is greater than the size of the viewer, diff --git a/src/librustdoc/html/static/js/source-script.js b/src/librustdoc/html/static/js/source-script.js index 06d15d9e5ff..8286e9201e6 100644 --- a/src/librustdoc/html/static/js/source-script.js +++ b/src/librustdoc/html/static/js/source-script.js @@ -183,7 +183,7 @@ function highlightSourceLines(match) { if (x) { x.scrollIntoView(); } - onEachLazy(document.getElementsByClassName("line-numbers"), e => { + onEachLazy(document.getElementsByClassName("src-line-numbers"), e => { onEachLazy(e.getElementsByTagName("span"), i_e => { removeClass(i_e, "line-highlighted"); }); @@ -245,7 +245,7 @@ window.addEventListener("hashchange", () => { } }); -onEachLazy(document.getElementsByClassName("line-numbers"), el => { +onEachLazy(document.getElementsByClassName("src-line-numbers"), el => { el.addEventListener("click", handleSourceHighlight); }); diff --git a/src/librustdoc/json/conversions.rs b/src/librustdoc/json/conversions.rs index 49a31f5f1da..4170412caef 100644 --- a/src/librustdoc/json/conversions.rs +++ b/src/librustdoc/json/conversions.rs @@ -272,7 +272,12 @@ fn from_clean_item(item: clean::Item, tcx: TyCtxt<'_>) -> ItemEnum { ConstantItem(c) => ItemEnum::Constant(c.into_tcx(tcx)), MacroItem(m) => ItemEnum::Macro(m.source), ProcMacroItem(m) => ItemEnum::ProcMacro(m.into_tcx(tcx)), - PrimitiveItem(p) => ItemEnum::PrimitiveType(p.as_sym().to_string()), + PrimitiveItem(p) => { + ItemEnum::Primitive(Primitive { + name: p.as_sym().to_string(), + impls: Vec::new(), // Added in JsonRenderer::item + }) + } TyAssocConstItem(ty) => ItemEnum::AssocConst { type_: ty.into_tcx(tcx), default: None }, AssocConstItem(ty, default) => { ItemEnum::AssocConst { type_: ty.into_tcx(tcx), default: Some(default.expr(tcx)) } diff --git a/src/librustdoc/json/mod.rs b/src/librustdoc/json/mod.rs index 5e8f5f6fe3e..8d6450838c1 100644 --- a/src/librustdoc/json/mod.rs +++ b/src/librustdoc/json/mod.rs @@ -219,12 +219,15 @@ impl<'tcx> FormatRenderer<'tcx> for JsonRenderer<'tcx> { u.impls = self.get_impls(item_id.expect_def_id()); false } + types::ItemEnum::Primitive(ref mut p) => { + p.impls = self.get_impls(item_id.expect_def_id()); + false + } types::ItemEnum::Method(_) | types::ItemEnum::Module(_) | types::ItemEnum::AssocConst { .. } - | types::ItemEnum::AssocType { .. } - | types::ItemEnum::PrimitiveType(_) => true, + | types::ItemEnum::AssocType { .. } => true, types::ItemEnum::ExternCrate { .. } | types::ItemEnum::Import(_) | types::ItemEnum::StructField(_) diff --git a/src/rustdoc-json-types/lib.rs b/src/rustdoc-json-types/lib.rs index fb183042670..7379b04ad16 100644 --- a/src/rustdoc-json-types/lib.rs +++ b/src/rustdoc-json-types/lib.rs @@ -9,7 +9,7 @@ use std::path::PathBuf; use serde::{Deserialize, Serialize}; /// rustdoc format-version. -pub const FORMAT_VERSION: u32 = 21; +pub const FORMAT_VERSION: u32 = 22; /// A `Crate` is the root of the emitted JSON blob. It contains all type/documentation information /// about the language items in the local crate, as well as info about external items to allow @@ -254,7 +254,7 @@ pub enum ItemEnum { Macro(String), ProcMacro(ProcMacro), - PrimitiveType(String), + Primitive(Primitive), AssocConst { #[serde(rename = "type")] @@ -709,5 +709,11 @@ pub struct Static { pub expr: String, } +#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] +pub struct Primitive { + pub name: String, + pub impls: Vec<Id>, +} + #[cfg(test)] mod tests; diff --git a/src/test/run-make-fulldeps/rustdoc-scrape-examples-macros/src/lib.rs b/src/test/run-make-fulldeps/rustdoc-scrape-examples-macros/src/lib.rs index bac3970a4d3..d8658a0f255 100644 --- a/src/test/run-make-fulldeps/rustdoc-scrape-examples-macros/src/lib.rs +++ b/src/test/run-make-fulldeps/rustdoc-scrape-examples-macros/src/lib.rs @@ -1,8 +1,8 @@ // Scraped example should only include line numbers for items b and c in ex.rs -// @!has foobar/fn.f.html '//*[@class="line-numbers"]' '14' -// @has foobar/fn.f.html '//*[@class="line-numbers"]' '15' -// @has foobar/fn.f.html '//*[@class="line-numbers"]' '21' -// @!has foobar/fn.f.html '//*[@class="line-numbers"]' '22' +// @!has foobar/fn.f.html '//*[@class="src-line-numbers"]' '14' +// @has foobar/fn.f.html '//*[@class="src-line-numbers"]' '15' +// @has foobar/fn.f.html '//*[@class="src-line-numbers"]' '21' +// @!has foobar/fn.f.html '//*[@class="src-line-numbers"]' '22' pub fn f() {} diff --git a/src/test/rustdoc-gui/basic-code.goml b/src/test/rustdoc-gui/basic-code.goml index 27deb2c989c..79090b499c8 100644 --- a/src/test/rustdoc-gui/basic-code.goml +++ b/src/test/rustdoc-gui/basic-code.goml @@ -1,3 +1,3 @@ goto: file://|DOC_PATH|/test_docs/index.html click: ".srclink" -assert-count: (".line-numbers", 1) +assert-count: (".src-line-numbers", 1) diff --git a/src/test/rustdoc-gui/docblock-code-block-line-number.goml b/src/test/rustdoc-gui/docblock-code-block-line-number.goml index ebfffbce715..4e1e83c0fbd 100644 --- a/src/test/rustdoc-gui/docblock-code-block-line-number.goml +++ b/src/test/rustdoc-gui/docblock-code-block-line-number.goml @@ -2,7 +2,7 @@ goto: file://|DOC_PATH|/test_docs/fn.foo.html // We check that without this setting, there is no line number displayed. -assert-false: "pre.line-number" +assert-false: "pre.example-line-numbers" // We now set the setting to show the line numbers on code examples. local-storage: {"rustdoc-line-numbers": "true" } @@ -10,16 +10,16 @@ local-storage: {"rustdoc-line-numbers": "true" } reload: // We wait for them to be added into the DOM by the JS... -wait-for: "pre.line-number" +wait-for: "pre.example-line-numbers" // If the test didn't fail, it means that it was found! // Let's now check some CSS properties... -assert-css: ("pre.line-number", { +assert-css: ("pre.example-line-numbers", { "margin": "0px", "padding": "13px 8px", "text-align": "right", }) // The first code block has two lines so let's check its `<pre>` elements lists both of them. -assert-text: ("pre.line-number", "1\n2") +assert-text: ("pre.example-line-numbers", "1\n2") // Now, try changing the setting dynamically. We'll turn it off, using the settings menu, // and make sure it goes away. @@ -32,8 +32,8 @@ assert-css: ("#settings", {"display": "block"}) // Then, click the toggle button. click: "input#line-numbers + .slider" wait-for: 100 // wait-for-false does not exist -assert-false: "pre.line-number" +assert-false: "pre.example-line-numbers" // Finally, turn it on again. click: "input#line-numbers + .slider" -wait-for: "pre.line-number" +wait-for: "pre.example-line-numbers" diff --git a/src/test/rustdoc-gui/source-code-page.goml b/src/test/rustdoc-gui/source-code-page.goml index 581f826a3d9..5f0bb7f19c0 100644 --- a/src/test/rustdoc-gui/source-code-page.goml +++ b/src/test/rustdoc-gui/source-code-page.goml @@ -1,22 +1,22 @@ // Checks that the interactions with the source code pages are working as expected. goto: file://|DOC_PATH|/src/test_docs/lib.rs.html // Check that we can click on the line number. -click: ".line-numbers > span:nth-child(4)" // This is the span for line 4. +click: ".src-line-numbers > span:nth-child(4)" // This is the span for line 4. // Ensure that the page URL was updated. assert-document-property: ({"URL": "lib.rs.html#4"}, ENDS_WITH) assert-attribute: ("//*[@id='4']", {"class": "line-highlighted"}) // We now check that the good spans are highlighted goto: file://|DOC_PATH|/src/test_docs/lib.rs.html#4-6 -assert-attribute-false: (".line-numbers > span:nth-child(3)", {"class": "line-highlighted"}) -assert-attribute: (".line-numbers > span:nth-child(4)", {"class": "line-highlighted"}) -assert-attribute: (".line-numbers > span:nth-child(5)", {"class": "line-highlighted"}) -assert-attribute: (".line-numbers > span:nth-child(6)", {"class": "line-highlighted"}) -assert-attribute-false: (".line-numbers > span:nth-child(7)", {"class": "line-highlighted"}) +assert-attribute-false: (".src-line-numbers > span:nth-child(3)", {"class": "line-highlighted"}) +assert-attribute: (".src-line-numbers > span:nth-child(4)", {"class": "line-highlighted"}) +assert-attribute: (".src-line-numbers > span:nth-child(5)", {"class": "line-highlighted"}) +assert-attribute: (".src-line-numbers > span:nth-child(6)", {"class": "line-highlighted"}) +assert-attribute-false: (".src-line-numbers > span:nth-child(7)", {"class": "line-highlighted"}) // This is to ensure that the content is correctly align with the line numbers. compare-elements-position: ("//*[@id='1']", ".rust > code > span", ("y")) // Assert that the line numbers text is aligned to the right. -assert-css: (".line-numbers", {"text-align": "right"}) +assert-css: (".src-line-numbers", {"text-align": "right"}) // Now let's check that clicking on something else than the line number doesn't // do anything (and certainly not add a `#NaN` to the URL!). @@ -24,7 +24,7 @@ show-text: true goto: file://|DOC_PATH|/src/test_docs/lib.rs.html // We use this assert-position to know where we will click. assert-position: ("//*[@id='1']", {"x": 104, "y": 103}) -// We click on the left of the "1" span but still in the "line-number" `<pre>`. +// We click on the left of the "1" span but still in the "src-line-number" `<pre>`. click: (103, 103) assert-document-property: ({"URL": "/lib.rs.html"}, ENDS_WITH) diff --git a/src/test/rustdoc-json/primitives/primitive_impls.rs b/src/test/rustdoc-json/primitives/primitive_impls.rs new file mode 100644 index 00000000000..1fc9374065f --- /dev/null +++ b/src/test/rustdoc-json/primitives/primitive_impls.rs @@ -0,0 +1,34 @@ +#![feature(no_core)] +#![feature(rustc_attrs)] +#![feature(rustdoc_internals)] +#![no_core] +#![rustc_coherence_is_core] + +// @set impl_i32 = "$.index[*][?(@.docs=='Only core can do this')].id" + +/// Only core can do this +impl i32 { + // @set identity = "$.index[*][?(@.docs=='Do Nothing')].id" + + /// Do Nothing + pub fn identity(self) -> Self { + self + } + + // @is "$.index[*][?(@.docs=='Only core can do this')].inner.items[*]" $identity +} + +// @set Trait = "$.index[*][?(@.name=='Trait')].id" +pub trait Trait {} +// @set impl_trait_for_i32 = "$.index[*][?(@.docs=='impl Trait for i32')].id" +/// impl Trait for i32 +impl Trait for i32 {} + +/// i32 +#[doc(primitive = "i32")] +mod prim_i32 {} + +// @set i32 = "$.index[*][?(@.docs=='i32')].id" +// @is "$.index[*][?(@.docs=='i32')].name" '"i32"' +// @is "$.index[*][?(@.docs=='i32')].inner.name" '"i32"' +// @ismany "$.index[*][?(@.docs=='i32')].inner.impls[*]" $impl_i32 $impl_trait_for_i32 diff --git a/src/test/rustdoc-json/primitive_overloading.rs b/src/test/rustdoc-json/primitives/primitive_overloading.rs index 56b35cd14c0..56b35cd14c0 100644 --- a/src/test/rustdoc-json/primitive_overloading.rs +++ b/src/test/rustdoc-json/primitives/primitive_overloading.rs diff --git a/src/test/rustdoc-json/primitives.rs b/src/test/rustdoc-json/primitives/primitive_type.rs index 8024044bc05..8024044bc05 100644 --- a/src/test/rustdoc-json/primitives.rs +++ b/src/test/rustdoc-json/primitives/primitive_type.rs diff --git a/src/test/rustdoc-json/primitive.rs b/src/test/rustdoc-json/primitives/use_primitive.rs index 6454dd7f51f..e2292737462 100644 --- a/src/test/rustdoc-json/primitive.rs +++ b/src/test/rustdoc-json/primitives/use_primitive.rs @@ -5,7 +5,7 @@ #[doc(primitive = "usize")] mod usize {} -// @set local_crate_id = "$.index[*][?(@.name=='primitive')].crate_id" +// @set local_crate_id = "$.index[*][?(@.name=='use_primitive')].crate_id" // @has "$.index[*][?(@.name=='ilog10')]" // @!is "$.index[*][?(@.name=='ilog10')].crate_id" $local_crate_id diff --git a/src/tools/jsondoclint/src/item_kind.rs b/src/tools/jsondoclint/src/item_kind.rs index ad8e96a0bd8..6d986e57501 100644 --- a/src/tools/jsondoclint/src/item_kind.rs +++ b/src/tools/jsondoclint/src/item_kind.rs @@ -142,8 +142,7 @@ impl Kind { ItemEnum::Static(_) => Static, ItemEnum::Macro(_) => Macro, ItemEnum::ProcMacro(_) => ProcMacro, - // https://github.com/rust-lang/rust/issues/100961 - ItemEnum::PrimitiveType(_) => Primitive, + ItemEnum::Primitive(_) => Primitive, ItemEnum::ForeignType => ForeignType, ItemEnum::ExternCrate { .. } => ExternCrate, ItemEnum::AssocConst { .. } => AssocConst, diff --git a/src/tools/jsondoclint/src/validator.rs b/src/tools/jsondoclint/src/validator.rs index a0e77127dc2..94af4c5e9e1 100644 --- a/src/tools/jsondoclint/src/validator.rs +++ b/src/tools/jsondoclint/src/validator.rs @@ -4,8 +4,8 @@ use std::hash::Hash; use rustdoc_json_types::{ Constant, Crate, DynTrait, Enum, FnDecl, Function, FunctionPointer, GenericArg, GenericArgs, GenericBound, GenericParamDef, Generics, Id, Impl, Import, ItemEnum, Method, Module, OpaqueTy, - Path, ProcMacro, Static, Struct, StructKind, Term, Trait, TraitAlias, Type, TypeBinding, - TypeBindingKind, Typedef, Union, Variant, WherePredicate, + Path, Primitive, ProcMacro, Static, Struct, StructKind, Term, Trait, TraitAlias, Type, + TypeBinding, TypeBindingKind, Typedef, Union, Variant, WherePredicate, }; use crate::{item_kind::Kind, Error, ErrorKind}; @@ -76,7 +76,7 @@ impl<'a> Validator<'a> { ItemEnum::ForeignType => {} // nop ItemEnum::Macro(x) => self.check_macro(x), ItemEnum::ProcMacro(x) => self.check_proc_macro(x), - ItemEnum::PrimitiveType(x) => self.check_primitive_type(x), + ItemEnum::Primitive(x) => self.check_primitive_type(x), ItemEnum::Module(x) => self.check_module(x), // FIXME: Why don't these have their own structs? ItemEnum::ExternCrate { .. } => {} @@ -219,8 +219,8 @@ impl<'a> Validator<'a> { // nop } - fn check_primitive_type(&mut self, _: &'a str) { - // nop + fn check_primitive_type(&mut self, x: &'a Primitive) { + x.impls.iter().for_each(|i| self.add_impl_id(i)); } fn check_generics(&mut self, x: &'a Generics) { |
