rustdoc: Fix ICE with cross-crate default impls
This adds a special code path for impls which are listed as default impls to ensure that they're loaded correctly.
This commit is contained in:
parent
c9b03c24ec
commit
4e25765aa2
11 changed files with 130 additions and 14 deletions
5
src/test/run-make/rustdoc-default-impl/Makefile
Normal file
5
src/test/run-make/rustdoc-default-impl/Makefile
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
-include ../tools.mk
|
||||
|
||||
all: foo.rs bar.rs
|
||||
$(RUSTC) foo.rs --crate-type lib
|
||||
$(HOST_RPATH_ENV) $(RUSTDOC) -w html -o $(TMPDIR)/doc bar.rs -L $(TMPDIR)
|
||||
17
src/test/run-make/rustdoc-default-impl/bar.rs
Normal file
17
src/test/run-make/rustdoc-default-impl/bar.rs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
extern crate foo;
|
||||
|
||||
pub use foo::bar;
|
||||
|
||||
pub fn wut<T: bar::Bar>() {
|
||||
}
|
||||
|
||||
33
src/test/run-make/rustdoc-default-impl/foo.rs
Normal file
33
src/test/run-make/rustdoc-default-impl/foo.rs
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
pub mod bar {
|
||||
use std::marker;
|
||||
|
||||
pub trait Bar: marker::MarkerTrait + 'static {}
|
||||
|
||||
impl Bar for .. {}
|
||||
|
||||
pub trait Foo {
|
||||
fn foo(&self) {}
|
||||
}
|
||||
|
||||
impl Foo {
|
||||
pub fn test<T: Bar>(&self) {}
|
||||
}
|
||||
|
||||
pub struct TypeId;
|
||||
|
||||
impl TypeId {
|
||||
pub fn of<T: Bar + ?Sized>() -> TypeId {
|
||||
panic!()
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue