Skip to content

Commit 8c87eff

Browse files
committed
rustc: Fix def ids of xcrate-reexported items
This was just a typo in the decoder using the source crate's number rather than the destination crate's number of a reexport. Closes #13872
1 parent 9f484e6 commit 8c87eff

File tree

5 files changed

+63
-1
lines changed

5 files changed

+63
-1
lines changed

src/librustc/metadata/decoder.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ fn each_child_of_item_or_crate(intr: Rc<IdentInterner>,
610610
// Hand off the item to the callback.
611611
let def_like = item_to_def_like(child_item_doc,
612612
child_def_id,
613-
cdata.cnum);
613+
child_def_id.krate);
614614
// These items have a public visibility because they're part of
615615
// a public re-export.
616616
callback(def_like, token::str_to_ident(name), ast::Public);

src/test/auxiliary/issue-13872-1.rs

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
pub enum A { B }

src/test/auxiliary/issue-13872-2.rs

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
extern crate foo = "issue-13872-1";
12+
13+
pub use foo::B;

src/test/auxiliary/issue-13872-3.rs

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
extern crate bar = "issue-13872-2";
12+
13+
use bar::B;
14+
15+
pub fn foo() {
16+
match B {
17+
B => {}
18+
}
19+
}

src/test/run-pass/issue-13872.rs

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// aux-build:issue-13872-1.rs
12+
// aux-build:issue-13872-2.rs
13+
// aux-build:issue-13872-3.rs
14+
15+
extern crate other = "issue-13872-3";
16+
17+
fn main() {
18+
other::foo();
19+
}

0 commit comments

Comments
 (0)