diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2013-03-04 16:11:30 -0800 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2013-03-05 10:18:35 -0800 |
| commit | 6d4ed5283c53d975af9ff8f1a21fbc27eac9d4c1 (patch) | |
| tree | 3ee1c6be00c4c215de603c631a9a258a196a76cf | |
| parent | 5f55a070757792475a325dfd1786765b7bfc84f5 (diff) | |
| download | rust-6d4ed5283c53d975af9ff8f1a21fbc27eac9d4c1.tar.gz rust-6d4ed5283c53d975af9ff8f1a21fbc27eac9d4c1.zip | |
libsyntax: Separate multiple inherited traits with `+`
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 5 | ||||
| -rw-r--r-- | src/test/auxiliary/trait_inheritance_auto_xc_aux.rs | 2 | ||||
| -rw-r--r-- | src/test/auxiliary/trait_inheritance_overloading_xc.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/issue-3953.rs | 15 | ||||
| -rw-r--r-- | src/test/run-pass/trait-inheritance-auto-xc-2.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/trait-inheritance-auto.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/trait-inheritance-diamond.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/trait-inheritance-num.rs | 4 | ||||
| -rw-r--r-- | src/test/run-pass/trait-inheritance-num0.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/trait-inheritance-num1.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/trait-inheritance-num2.rs | 4 | ||||
| -rw-r--r-- | src/test/run-pass/trait-inheritance-num3.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/trait-inheritance-num5.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/trait-inheritance-overloading.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/trait-inheritance-static2.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/trait-inheritance2.rs | 2 |
17 files changed, 30 insertions, 24 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index dd179171fce..5013b2c919f 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -3112,7 +3112,7 @@ pub impl Parser { fn parse_trait_ref_list(&self, ket: &token::Token) -> ~[@trait_ref] { self.parse_seq_to_before_end( ket, - seq_sep_none(), + seq_sep_trailing_disallowed(token::BINOP(token::PLUS)), |p| p.parse_trait_ref() ) } diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 735344e43be..d307e3964e7 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -600,8 +600,11 @@ pub fn print_item(s: @ps, &&item: @ast::item) { print_generics(s, generics); if traits.len() != 0u { word(s.s, ~":"); - for traits.each |trait_| { + for traits.eachi |i, trait_| { nbsp(s); + if i != 0 { + word_space(s, ~"+"); + } print_path(s, trait_.path, false); } } diff --git a/src/test/auxiliary/trait_inheritance_auto_xc_aux.rs b/src/test/auxiliary/trait_inheritance_auto_xc_aux.rs index 3e26a09fb8f..ecd43686b77 100644 --- a/src/test/auxiliary/trait_inheritance_auto_xc_aux.rs +++ b/src/test/auxiliary/trait_inheritance_auto_xc_aux.rs @@ -12,6 +12,6 @@ trait Foo { fn f() -> int; } trait Bar { fn g() -> int; } trait Baz { fn h() -> int; } -trait Quux: Foo Bar Baz { } +trait Quux: Foo + Bar + Baz { } impl<T:Foo + Bar + Baz> Quux for T { } diff --git a/src/test/auxiliary/trait_inheritance_overloading_xc.rs b/src/test/auxiliary/trait_inheritance_overloading_xc.rs index 10a7238a3f7..e86f7cfd26a 100644 --- a/src/test/auxiliary/trait_inheritance_overloading_xc.rs +++ b/src/test/auxiliary/trait_inheritance_overloading_xc.rs @@ -10,7 +10,7 @@ use core::cmp::Eq; -pub trait MyNum : Add<Self,Self> Sub<Self,Self> Mul<Self,Self> Eq { +pub trait MyNum : Add<Self,Self> + Sub<Self,Self> + Mul<Self,Self> + Eq { } pub struct MyInt { diff --git a/src/test/compile-fail/issue-3953.rs b/src/test/compile-fail/issue-3953.rs index c88a94ef629..afd8cf89233 100644 --- a/src/test/compile-fail/issue-3953.rs +++ b/src/test/compile-fail/issue-3953.rs @@ -10,12 +10,15 @@ use core::cmp::Eq; -trait Hahaha: Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq //~ ERROR Duplicate supertrait in trait declaration - Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq - Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq - Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq - Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq - Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq {} +trait Hahaha: Eq + Eq + Eq + Eq + Eq + //~ ERROR Duplicate supertrait + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + + Eq {} enum Lol = int; diff --git a/src/test/run-pass/trait-inheritance-auto-xc-2.rs b/src/test/run-pass/trait-inheritance-auto-xc-2.rs index c3333fa10ab..6b8dd43d58b 100644 --- a/src/test/run-pass/trait-inheritance-auto-xc-2.rs +++ b/src/test/run-pass/trait-inheritance-auto-xc-2.rs @@ -17,7 +17,7 @@ extern mod aux(name = "trait_inheritance_auto_xc_2_aux"); use aux::{Foo, Bar, Baz, A}; // We want to extend all Foo, Bar, Bazes to Quuxes -pub trait Quux: Foo Bar Baz { } +pub trait Quux: Foo + Bar + Baz { } impl<T:Foo + Bar + Baz> Quux for T { } fn f<T:Quux>(a: &T) { diff --git a/src/test/run-pass/trait-inheritance-auto.rs b/src/test/run-pass/trait-inheritance-auto.rs index 5d576193880..7ebbc8e83cb 100644 --- a/src/test/run-pass/trait-inheritance-auto.rs +++ b/src/test/run-pass/trait-inheritance-auto.rs @@ -16,7 +16,7 @@ trait Foo { fn f() -> int; } trait Bar { fn g() -> int; } trait Baz { fn h() -> int; } -trait Quux: Foo Bar Baz { } +trait Quux: Foo + Bar + Baz { } struct A { x: int } diff --git a/src/test/run-pass/trait-inheritance-diamond.rs b/src/test/run-pass/trait-inheritance-diamond.rs index 1d6e4823091..a4a3991f9e8 100644 --- a/src/test/run-pass/trait-inheritance-diamond.rs +++ b/src/test/run-pass/trait-inheritance-diamond.rs @@ -13,7 +13,7 @@ trait A { fn a(&self) -> int; } trait B: A { fn b(&self) -> int; } trait C: A { fn c(&self) -> int; } -trait D: B C { fn d(&self) -> int; } +trait D: B + C { fn d(&self) -> int; } struct S { bogus: () } diff --git a/src/test/run-pass/trait-inheritance-num.rs b/src/test/run-pass/trait-inheritance-num.rs index 36b1e6cd4de..92cb25b8d2b 100644 --- a/src/test/run-pass/trait-inheritance-num.rs +++ b/src/test/run-pass/trait-inheritance-num.rs @@ -16,9 +16,9 @@ use core::num::NumCast::from; extern mod std; use std::cmp::FuzzyEq; -pub trait NumExt: NumCast Eq Ord {} +pub trait NumExt: NumCast + Eq + Ord {} -pub trait FloatExt: NumExt FuzzyEq<Self> {} +pub trait FloatExt: NumExt + FuzzyEq<Self> {} fn greater_than_one<T:NumExt>(n: &T) -> bool { *n > from(1) } fn greater_than_one_float<T:FloatExt>(n: &T) -> bool { *n > from(1) } diff --git a/src/test/run-pass/trait-inheritance-num0.rs b/src/test/run-pass/trait-inheritance-num0.rs index 70eed496db3..7f0d4d77b62 100644 --- a/src/test/run-pass/trait-inheritance-num0.rs +++ b/src/test/run-pass/trait-inheritance-num0.rs @@ -19,7 +19,7 @@ trait Num { fn gt(&self, other: &Self) -> bool; } -pub trait NumExt: Num NumCast { } +pub trait NumExt: Num + NumCast { } fn greater_than_one<T:NumExt>(n: &T) -> bool { n.gt(&from(1)) diff --git a/src/test/run-pass/trait-inheritance-num1.rs b/src/test/run-pass/trait-inheritance-num1.rs index 44b4bd60f1d..07b9772af29 100644 --- a/src/test/run-pass/trait-inheritance-num1.rs +++ b/src/test/run-pass/trait-inheritance-num1.rs @@ -11,7 +11,7 @@ use core::cmp::Ord; use core::num::NumCast::from; -pub trait NumExt: NumCast Ord { } +pub trait NumExt: NumCast + Ord { } fn greater_than_one<T:NumExt>(n: &T) -> bool { *n > from(1) diff --git a/src/test/run-pass/trait-inheritance-num2.rs b/src/test/run-pass/trait-inheritance-num2.rs index 5c9d9e6a13b..8f8b83c3d76 100644 --- a/src/test/run-pass/trait-inheritance-num2.rs +++ b/src/test/run-pass/trait-inheritance-num2.rs @@ -38,7 +38,7 @@ impl TypeExt for f64 {} impl TypeExt for float {} -pub trait NumExt: TypeExt Eq Ord NumCast {} +pub trait NumExt: TypeExt + Eq + Ord + NumCast {} impl NumExt for u8 {} impl NumExt for u16 {} @@ -94,7 +94,7 @@ impl IntegerExt for i64 {} impl IntegerExt for int {} -pub trait FloatExt: NumExt FuzzyEq<Self> {} +pub trait FloatExt: NumExt + FuzzyEq<Self> {} impl FloatExt for f32 {} impl FloatExt for f64 {} diff --git a/src/test/run-pass/trait-inheritance-num3.rs b/src/test/run-pass/trait-inheritance-num3.rs index c2cd56ad107..67861709e76 100644 --- a/src/test/run-pass/trait-inheritance-num3.rs +++ b/src/test/run-pass/trait-inheritance-num3.rs @@ -11,7 +11,7 @@ use core::cmp::{Eq, Ord}; use core::num::NumCast::from; -pub trait NumExt: Eq Ord NumCast {} +pub trait NumExt: Eq + Ord + NumCast {} impl NumExt for f32 {} diff --git a/src/test/run-pass/trait-inheritance-num5.rs b/src/test/run-pass/trait-inheritance-num5.rs index ac8d80359d8..2efe5b23eb5 100644 --- a/src/test/run-pass/trait-inheritance-num5.rs +++ b/src/test/run-pass/trait-inheritance-num5.rs @@ -11,7 +11,7 @@ use core::cmp::{Eq, Ord}; use core::num::NumCast::from; -pub trait NumExt: Eq NumCast {} +pub trait NumExt: Eq + NumCast {} impl NumExt for f32 {} impl NumExt for int {} diff --git a/src/test/run-pass/trait-inheritance-overloading.rs b/src/test/run-pass/trait-inheritance-overloading.rs index 54a9ea9ad1e..a4d7e33891f 100644 --- a/src/test/run-pass/trait-inheritance-overloading.rs +++ b/src/test/run-pass/trait-inheritance-overloading.rs @@ -10,7 +10,7 @@ use core::cmp::Eq; -trait MyNum : Add<Self,Self> Sub<Self,Self> Mul<Self,Self> Eq { } +trait MyNum : Add<Self,Self> + Sub<Self,Self> + Mul<Self,Self> + Eq { } struct MyInt { val: int } diff --git a/src/test/run-pass/trait-inheritance-static2.rs b/src/test/run-pass/trait-inheritance-static2.rs index 6f706ad0be7..ccc7f1fc4c0 100644 --- a/src/test/run-pass/trait-inheritance-static2.rs +++ b/src/test/run-pass/trait-inheritance-static2.rs @@ -14,7 +14,7 @@ trait MyNum { static fn from_int(int) -> Self; } -pub trait NumExt: MyEq MyNum { } +pub trait NumExt: MyEq + MyNum { } struct S { v: int } diff --git a/src/test/run-pass/trait-inheritance2.rs b/src/test/run-pass/trait-inheritance2.rs index 55a63e9099a..5925888650d 100644 --- a/src/test/run-pass/trait-inheritance2.rs +++ b/src/test/run-pass/trait-inheritance2.rs @@ -12,7 +12,7 @@ trait Foo { fn f() -> int; } trait Bar { fn g() -> int; } trait Baz { fn h() -> int; } -trait Quux: Foo Bar Baz { } +trait Quux: Foo + Bar + Baz { } struct A { x: int } |
