diff --git a/src/test/auxiliary/issue_2242_a.rs b/src/test/auxiliary/issue_2242_a.rs new file mode 100644 index 00000000000..e7947cf583a --- /dev/null +++ b/src/test/auxiliary/issue_2242_a.rs @@ -0,0 +1,10 @@ +#[link(name = "a", vers = "0.1")]; +#[crate_type = "lib"]; + +iface to_str { + fn to_str() -> str; +} + +impl of to_str for str { + fn to_str() -> str { self } +} diff --git a/src/test/auxiliary/issue_2242_b.rs b/src/test/auxiliary/issue_2242_b.rs new file mode 100644 index 00000000000..6371e55dde4 --- /dev/null +++ b/src/test/auxiliary/issue_2242_b.rs @@ -0,0 +1,9 @@ +#[link(name = "b", vers = "0.1")]; +#[crate_type = "lib"]; + +use a; +import a::to_str; + +impl of to_str for int { + fn to_str() -> str { #fmt("%?", self) } +} diff --git a/src/test/auxiliary/issue_2242_c.rs b/src/test/auxiliary/issue_2242_c.rs new file mode 100644 index 00000000000..2497be8a42e --- /dev/null +++ b/src/test/auxiliary/issue_2242_c.rs @@ -0,0 +1,10 @@ +#[link(name = "c", vers = "0.1")]; +#[crate_type = "lib"]; + +use a; + +import a::to_str; + +impl of to_str for bool { + fn to_str() -> str { #fmt("%b", self) } +} diff --git a/src/test/run-pass/issue-2242-d.rs b/src/test/run-pass/issue-2242-d.rs new file mode 100644 index 00000000000..c6f2cc99e33 --- /dev/null +++ b/src/test/run-pass/issue-2242-d.rs @@ -0,0 +1,17 @@ +// xfail-test +// aux-build:issue_2242_a.rs +// aux-build:issue_2242_b.rs +// aux-build:issue_2242_c.rs + +use a; +use b; +use c; + +import b::to_str; +import c::to_str; + +fn main() { + io::println("foo".to_str()); + io::println(1.to_str()); + io::println(true.to_str()); +}