]> git.lizzy.rs Git - rust.git/commitdiff
libsyntax: Separate multiple inherited traits with `+`
authorPatrick Walton <pcwalton@mimiga.net>
Tue, 5 Mar 2013 00:11:30 +0000 (16:11 -0800)
committerPatrick Walton <pcwalton@mimiga.net>
Tue, 5 Mar 2013 18:18:35 +0000 (10:18 -0800)
17 files changed:
src/libsyntax/parse/parser.rs
src/libsyntax/print/pprust.rs
src/test/auxiliary/trait_inheritance_auto_xc_aux.rs
src/test/auxiliary/trait_inheritance_overloading_xc.rs
src/test/compile-fail/issue-3953.rs
src/test/run-pass/trait-inheritance-auto-xc-2.rs
src/test/run-pass/trait-inheritance-auto.rs
src/test/run-pass/trait-inheritance-diamond.rs
src/test/run-pass/trait-inheritance-num.rs
src/test/run-pass/trait-inheritance-num0.rs
src/test/run-pass/trait-inheritance-num1.rs
src/test/run-pass/trait-inheritance-num2.rs
src/test/run-pass/trait-inheritance-num3.rs
src/test/run-pass/trait-inheritance-num5.rs
src/test/run-pass/trait-inheritance-overloading.rs
src/test/run-pass/trait-inheritance-static2.rs
src/test/run-pass/trait-inheritance2.rs

index dd179171fce883c03a6687fca6064e97b933f101..5013b2c919f7aac87cf1528cdc15d93a49079ac4 100644 (file)
@@ -3112,7 +3112,7 @@ fn parse_trait_ref(&self) -> @trait_ref {
     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()
         )
     }
index 735344e43be891a5e34cf910c329589c4697b3e2..d307e3964e71e91ff9b50216d0f177aa78f54c35 100644 (file)
@@ -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);
             }
         }
index 3e26a09fb8f0d47897f849ad63171eab5a016752..ecd43686b773a0b0ec9971c5c49c491e803ec4e6 100644 (file)
@@ -12,6 +12,6 @@
 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 { }
index 10a7238a3f7d01ac49da70f3938fbba786307d95..e86f7cfd26ad50bbdf3280ec44fe0c9ce6a16c0d 100644 (file)
@@ -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 {
index c88a94ef62969427df6e80d3c6cd3b234f26df77..afd8cf892333f7e910e34cc79adad470b29f3192 100644 (file)
 
 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;
 
index c3333fa10ab17f0321b2aae7279a8aa8326da2ee..6b8dd43d58b57b607a9521bf1cc098d273f6dee5 100644 (file)
@@ -17,7 +17,7 @@
 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) {
index 5d576193880e55430ed54e5126e8075cfa280676..7ebbc8e83cb659b5940c6408399881562ccb0f64 100644 (file)
@@ -16,7 +16,7 @@ impl<T:Foo + Bar + Baz> Quux for T { }
 trait Bar { fn g() -> int; }
 trait Baz { fn h() -> int; }
 
-trait Quux: Foo Bar Baz { }
+trait Quux: Foo + Bar + Baz { }
 
 struct A { x: int }
 
index 1d6e482309178f332810eb768907188cd9c33d11..a4a3991f9e8f9267892a6d68ecb253543a5491b9 100644 (file)
@@ -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: () }
 
index 36b1e6cd4de405dd49ed5f533bd81ad1131203f9..92cb25b8d2be7d730121d9b0f942bd9255a57243 100644 (file)
@@ -16,9 +16,9 @@
 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) }
index 70eed496db3f551844f868d8931fa0596a8d4af4..7f0d4d77b626480837c116d24fc9c01b5d0258f4 100644 (file)
@@ -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))
index 44b4bd60f1de064f8b14dee7583afa16eecc4744..07b9772af2970c248c9eb81bd582789fee561e93 100644 (file)
@@ -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)
index 5c9d9e6a13b5fee6b8536ff752df5a1b035c3076..8f8b83c3d7614425b4ae112cd5b22e67b9ec2350 100644 (file)
@@ -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 {}
index c2cd56ad1078e8c1e8c2f644fe6cf00c0dd47926..67861709e76f28dea0604da07d8aed3b9faeee69 100644 (file)
@@ -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 {}
 
index ac8d80359d87482509a6b3dac8e069f6783a3b76..2efe5b23eb57b3de2ec86b4c4edbb26a2b349ceb 100644 (file)
@@ -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 {}
index 54a9ea9ad1e32551c6bc75e823b1594a4aa5ca32..a4d7e33891f495b25aa1425ff193bf9605a99274 100644 (file)
@@ -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 }
 
index 6f706ad0be746278b0e4ea95842c3d52189a2666..ccc7f1fc4c07ff0bdb1bb4d94a4069affe8ba3a7 100644 (file)
@@ -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 }
 
index 55a63e9099a9379c0dc02b7245821c4b159fd254..5925888650d8009c772d54111ba0aaa989d8f1e6 100644 (file)
@@ -12,7 +12,7 @@
 trait Bar { fn g() -> int; }
 trait Baz { fn h() -> int; }
 
-trait Quux: Foo Bar Baz { }
+trait Quux: Foo + Bar + Baz { }
 
 struct A { x: int }