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:
Alex Crichton 2015-03-12 19:15:52 -07:00
parent c9b03c24ec
commit 4e25765aa2
11 changed files with 130 additions and 14 deletions

View 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)

View 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>() {
}

View 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!()
}
}
}