1
Fork 0

libsyntax: Separate multiple inherited traits with +

This commit is contained in:
Patrick Walton 2013-03-04 16:11:30 -08:00
parent 5f55a07075
commit 6d4ed5283c
17 changed files with 30 additions and 24 deletions

View file

@ -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()
)
}

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

View file

@ -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 { }

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

View file

@ -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;

View file

@ -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) {

View file

@ -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 }

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

View file

@ -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) }

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

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

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

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

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

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

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

View file

@ -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 }