From b02a77d6b471fe76e8c88ea8462a5251f7744ca3 Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Wed, 4 Jan 2012 17:28:16 +0100 Subject: [PATCH] Add test for generic iface methods Issue #1227 --- src/test/run-pass/iface-generic.rs | 33 ++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/test/run-pass/iface-generic.rs diff --git a/src/test/run-pass/iface-generic.rs b/src/test/run-pass/iface-generic.rs new file mode 100644 index 00000000000..cc1c9b1a953 --- /dev/null +++ b/src/test/run-pass/iface-generic.rs @@ -0,0 +1,33 @@ +iface to_str { + fn to_str() -> str; +} +impl of to_str for int { + fn to_str() -> str { int::str(self) } +} +impl of to_str for str { + fn to_str() -> str { self } +} + +iface map { + fn map(f: block(T) -> U) -> [U]; +} +impl of map for [T] { + fn map(f: block(T) -> U) -> [U] { + let r = []; + for x in self { r += [f(x)]; } + r + } +} + +fn foo>(x: T) -> [str] { + x.map({|_e| "hi" }) +} +fn bar>(x: T) -> [str] { + x.map({|_e| _e.to_str() }) +} + +fn main() { + assert foo([1]) == ["hi"]; + assert bar::([4, 5]) == ["4", "5"]; + assert bar::(["x", "y"]) == ["x", "y"]; +}