Closed
Description
// --- src/test/rustdoc-json/intra-doc-links/foreign_variant.rs ---
// aux-build: enum_variant_in_trait_method.rs
extern crate enum_variant_in_trait_method;
pub struct Local;
impl enum_variant_in_trait_method::Trait for Local {}
// --- src/test/rustdoc-json/intra-doc-links/auxiliary/enum_variant_in_trait_method.rs
pub trait Trait {
/// [`Enum::Variant`]
fn method() {}
}
pub enum Enum {
Variant,
}
Produces (abridged):
{
"crate_version": null,
"external_crates": { ... },
"format_version": 23,
"includes_private": false,
"index": {
"0:0:1568": {
"crate_id": 0,
"docs": null,
"id": "0:0:1568",
"inner": {"is_crate": true, "is_stripped": false, "items": ["0:4:1566"]},
"kind": "module",
"links": {},
"name": "foreign_variant"
},
"0:4:1566": {
"crate_id": 0,
"docs": null,
"id": "0:4:1566",
"inner": {
"generics": {"params": [], "where_predicates": []},
"impls": [ ..., "0:6"],
"kind": "unit"
},
"kind": "struct",
"links": {},
"name": "Local"
},
"0:6": {
"crate_id": 0,
"docs": null,
"id": "0:6",
"inner": {
"blanket_impl": null,
"for": {
"inner": {"args": {"angle_bracketed": {"args": [], "bindings": []}}, "id": "0:4:1566", "name": "Local"},
"kind": "resolved_path"
},
"generics": {"params": [], "where_predicates": []},
"is_unsafe": false,
"items": [],
"negative": false,
"provided_trait_methods": ["method"],
"synthetic": false,
"trait": {"args": {"angle_bracketed": {"args": [], "bindings": []}}, "id": "20:3:1567", "name": "Trait"}
},
"kind": "impl",
"links": {},
"name": null
},
"20:3:1567": {
"crate_id": 20,
"docs": null,
"id": "20:3:1567",
"inner": {
"bounds": [],
"generics": {"params": [], "where_predicates": []},
"implementations": [],
"is_auto": false,
"is_unsafe": false,
"items": ["20:4:4198"]
},
"kind": "trait",
"links": {},
"name": "Trait"
},
"20:4:4198": {
"crate_id": 20,
"docs": "[`Enum::Variant`]",
"id": "20:4:4198",
"inner": {
"decl": {"c_variadic": false, "inputs": [], "output": null},
"generics": {"params": [], "where_predicates": []},
"has_body": true,
"header": {"abi": "Rust", "async": false, "const": false, "unsafe": false}
},
"kind": "function",
"links": {"`Enum::Variant`": "20:6:65935"},
"name": "method"
}
},
"paths": {
"0:0:1568": {"crate_id": 0, "kind": "module", "path": ["foreign_variant"]},
"0:4:1566": {"crate_id": 0, "kind": "struct", "path": ["foreign_variant", "Local"]},
"20:0:1565": {"crate_id": 20, "kind": "module", "path": ["enum_variant_in_trait_method"]},
"20:3:1567": {"crate_id": 20, "kind": "trait", "path": ["enum_variant_in_trait_method", "Trait"]},
"20:5:1826": {"crate_id": 20, "kind": "enum", "path": ["enum_variant_in_trait_method", "Enum"]},
"2:0:481": {"crate_id": 2, "kind": "module", "path": ["core"]}
},
"root": "0:0:1568"
}
Causes where "links": {"
Enum::Variant": "20:6:65935"},
is dangling, because the foreign enum variant wasn't inlined, but the local one was (and enum variants don't appear in path
)
Caught by #105015, and blocks it from landing