Closed
Description
#![feature(no_core)]
#![no_core]
mod m1 {
pub fn f() {}
}
mod m2 {
pub fn f(_: u8) {}
}
pub use m2::*;
pub use m1::*;
Produces an output with references to non existant items: 0:3:1564
and 0:1:1563
{
"crate_version": null,
"external_crates": {},
"format_version": 18,
"includes_private": false,
"index": {
"0:0:1565": {
"crate_id": 0,
"id": "0:0:1565",
"inner": {"is_crate": true, "is_stripped": false, "items": ["0:5", "0:6"]},
"kind": "module",
"name": "glob_private_simple",
"visibility": "public"
},
"0:5": {
"crate_id": 0,
"id": "0:5",
"inner": {"glob": true, "id": "0:3:1564", "name": "m2", "source": "m2"},
"kind": "import",
"name": null,
"visibility": "public"
},
"0:6": {
"crate_id": 0,
"id": "0:6",
"inner": {"glob": true, "id": "0:1:1563", "name": "m1", "source": "m1"},
"kind": "import",
"name": null,
"visibility": "public"
}
},
"root": "0:0:1565"
}
Full
{
"crate_version": null,
"external_crates": {},
"format_version": 18,
"includes_private": false,
"index": {
"0:0:1565": {
"attrs": ["#![feature(no_core)]", "#![no_core]"],
"crate_id": 0,
"deprecation": null,
"docs": null,
"id": "0:0:1565",
"inner": {"is_crate": true, "is_stripped": false, "items": ["0:5", "0:6"]},
"kind": "module",
"links": {},
"name": "glob_private_simple",
"span": {
"begin": [1, 0],
"end": [12, 14],
"filename": "/home/nixon/dev/rust/rust/src/test/rustdoc-json/reexport/glob_private_simple.rs"
},
"visibility": "public"
},
"0:5": {
"attrs": [],
"crate_id": 0,
"deprecation": null,
"docs": null,
"id": "0:5",
"inner": {"glob": true, "id": "0:3:1564", "name": "m2", "source": "m2"},
"kind": "import",
"links": {},
"name": null,
"span": {
"begin": [11, 0],
"end": [11, 14],
"filename": "/home/nixon/dev/rust/rust/src/test/rustdoc-json/reexport/glob_private_simple.rs"
},
"visibility": "public"
},
"0:6": {
"attrs": [],
"crate_id": 0,
"deprecation": null,
"docs": null,
"id": "0:6",
"inner": {"glob": true, "id": "0:1:1563", "name": "m1", "source": "m1"},
"kind": "import",
"links": {},
"name": null,
"span": {
"begin": [12, 0],
"end": [12, 14],
"filename": "/home/nixon/dev/rust/rust/src/test/rustdoc-json/reexport/glob_private_simple.rs"
},
"visibility": "public"
}
},
"paths": {"0:0:1565": {"crate_id": 0, "kind": "module", "path": ["glob_private_simple"]}},
"root": "0:0:1565"
}
If you remove one of the imports, everything is fine
#![feature(no_core)]
#![no_core]
mod m1 {
pub fn f() {}
}
mod m2 {
pub fn f(_: u8) {}
}
pub use m2::*;
{
"crate_version": null,
"external_crates": {},
"format_version": 18,
"includes_private": false,
"index": {
"0:0:1565": {
"crate_id": 0,
"id": "0:0:1565",
"inner": {"is_crate": true, "is_stripped": false, "items": ["0:5"]},
"kind": "module",
"name": "glob_private_simple",
"visibility": "public"
},
"0:3:1564": {
"crate_id": 0,
"id": "0:3:1564",
"inner": {"is_crate": false, "is_stripped": true, "items": ["0:4:630"]},
"kind": "module",
"name": "m2",
"visibility": "crate"
},
"0:4:630": {
"crate_id": 0,
"id": "0:4:630",
"inner": { ... },
"kind": "function",
"name": "f",
"visibility": "public"
},
"0:5": {
"crate_id": 0,
"id": "0:5",
"inner": {"glob": true, "id": "0:3:1564", "name": "m2", "source": "m2"},
"kind": "import",
"name": null,
"visibility": "public"
}
},
"root": "0:0:1565"
}
Full
{
"crate_version": null,
"external_crates": {},
"format_version": 18,
"includes_private": false,
"index": {
"0:0:1565": {
"attrs": ["#![feature(no_core)]", "#![no_core]"],
"crate_id": 0,
"deprecation": null,
"docs": null,
"id": "0:0:1565",
"inner": {"is_crate": true, "is_stripped": false, "items": ["0:5"]},
"kind": "module",
"links": {},
"name": "glob_private_simple",
"span": {
"begin": [1, 0],
"end": [11, 14],
"filename": "/home/nixon/dev/rust/rust/src/test/rustdoc-json/reexport/glob_private_simple.rs"
},
"visibility": "public"
},
"0:3:1564": {
"attrs": [],
"crate_id": 0,
"deprecation": null,
"docs": null,
"id": "0:3:1564",
"inner": {"is_crate": false, "is_stripped": true, "items": ["0:4:630"]},
"kind": "module",
"links": {},
"name": "m2",
"span": {
"begin": [7, 0],
"end": [7, 6],
"filename": "/home/nixon/dev/rust/rust/src/test/rustdoc-json/reexport/glob_private_simple.rs"
},
"visibility": "crate"
},
"0:4:630": {
"attrs": [],
"crate_id": 0,
"deprecation": null,
"docs": null,
"id": "0:4:630",
"inner": {
"decl": {
"c_variadic": false,
"inputs": [["_", {"inner": "u8", "kind": "primitive"}]],
"output": null
},
"generics": {"params": [], "where_predicates": []},
"header": {"abi": "Rust", "async": false, "const": false, "unsafe": false}
},
"kind": "function",
"links": {},
"name": "f",
"span": {
"begin": [8, 4],
"end": [8, 22],
"filename": "/home/nixon/dev/rust/rust/src/test/rustdoc-json/reexport/glob_private_simple.rs"
},
"visibility": "public"
},
"0:5": {
"attrs": [],
"crate_id": 0,
"deprecation": null,
"docs": null,
"id": "0:5",
"inner": {"glob": true, "id": "0:3:1564", "name": "m2", "source": "m2"},
"kind": "import",
"links": {},
"name": null,
"span": {
"begin": [11, 0],
"end": [11, 14],
"filename": "/home/nixon/dev/rust/rust/src/test/rustdoc-json/reexport/glob_private_simple.rs"
},
"visibility": "public"
}
},
"paths": {"0:0:1565": {"crate_id": 0, "kind": "module", "path": ["glob_private_simple"]}},
"root": "0:0:1565"
}
This should have been caught by check_missing_items.py
, but wasn't. Instead is was caught by jsondoclint
, a rust based replacement (PR soon).
@rustbot modify labels: +A-rustdoc-json +T-rustdoc