Skip to content

Commit 1fef182

Browse files
committed
libsyntax: Separate multiple inherited traits with +
1 parent 0643df2 commit 1fef182

16 files changed

+26
-23
lines changed

src/libsyntax/parse/parser.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3119,7 +3119,7 @@ pub impl Parser {
31193119
fn parse_trait_ref_list(&self, ket: &token::Token) -> ~[@trait_ref] {
31203120
self.parse_seq_to_before_end(
31213121
ket,
3122-
seq_sep_none(),
3122+
seq_sep_trailing_disallowed(token::BINOP(token::PLUS)),
31233123
|p| p.parse_trait_ref()
31243124
)
31253125
}

src/test/auxiliary/trait_inheritance_auto_xc_aux.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ trait Foo { fn f() -> int; }
1212
trait Bar { fn g() -> int; }
1313
trait Baz { fn h() -> int; }
1414

15-
trait Quux: Foo Bar Baz { }
15+
trait Quux: Foo + Bar + Baz { }
1616

1717
impl<T:Foo + Bar + Baz> Quux for T { }

src/test/auxiliary/trait_inheritance_overloading_xc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
use core::cmp::Eq;
1212

13-
pub trait MyNum : Add<Self,Self> Sub<Self,Self> Mul<Self,Self> Eq {
13+
pub trait MyNum : Add<Self,Self> + Sub<Self,Self> + Mul<Self,Self> + Eq {
1414
}
1515

1616
pub struct MyInt {

src/test/compile-fail/issue-3953.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,15 @@
1010

1111
use core::cmp::Eq;
1212

13-
trait Hahaha: Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq //~ ERROR Duplicate supertrait in trait declaration
14-
Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq
15-
Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq
16-
Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq
17-
Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq
18-
Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq Eq {}
13+
trait Hahaha: Eq + Eq + Eq + Eq + Eq + //~ ERROR Duplicate supertrait
14+
Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq +
15+
Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq +
16+
Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq +
17+
Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq +
18+
Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq +
19+
Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq +
20+
Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq + Eq +
21+
Eq {}
1922

2023
enum Lol = int;
2124

src/test/run-pass/trait-inheritance-auto-xc-2.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ extern mod aux(name = "trait_inheritance_auto_xc_2_aux");
1717
use aux::{Foo, Bar, Baz, A};
1818

1919
// We want to extend all Foo, Bar, Bazes to Quuxes
20-
pub trait Quux: Foo Bar Baz { }
20+
pub trait Quux: Foo + Bar + Baz { }
2121
impl<T:Foo + Bar + Baz> Quux for T { }
2222

2323
fn f<T:Quux>(a: &T) {

src/test/run-pass/trait-inheritance-auto.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ trait Foo { fn f() -> int; }
1616
trait Bar { fn g() -> int; }
1717
trait Baz { fn h() -> int; }
1818

19-
trait Quux: Foo Bar Baz { }
19+
trait Quux: Foo + Bar + Baz { }
2020

2121
struct A { x: int }
2222

src/test/run-pass/trait-inheritance-diamond.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
trait A { fn a(&self) -> int; }
1414
trait B: A { fn b(&self) -> int; }
1515
trait C: A { fn c(&self) -> int; }
16-
trait D: B C { fn d(&self) -> int; }
16+
trait D: B + C { fn d(&self) -> int; }
1717

1818
struct S { bogus: () }
1919

src/test/run-pass/trait-inheritance-num.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ use core::num::NumCast::from;
1616
extern mod std;
1717
use std::cmp::FuzzyEq;
1818

19-
pub trait NumExt: NumCast Eq Ord {}
19+
pub trait NumExt: NumCast + Eq + Ord {}
2020

21-
pub trait FloatExt: NumExt FuzzyEq<Self> {}
21+
pub trait FloatExt: NumExt + FuzzyEq<Self> {}
2222

2323
fn greater_than_one<T:NumExt>(n: &T) -> bool { *n > from(1) }
2424
fn greater_than_one_float<T:FloatExt>(n: &T) -> bool { *n > from(1) }

src/test/run-pass/trait-inheritance-num0.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ trait Num {
1919
fn gt(&self, other: &Self) -> bool;
2020
}
2121

22-
pub trait NumExt: Num NumCast { }
22+
pub trait NumExt: Num + NumCast { }
2323

2424
fn greater_than_one<T:NumExt>(n: &T) -> bool {
2525
n.gt(&from(1))

src/test/run-pass/trait-inheritance-num1.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use core::cmp::Ord;
1212
use core::num::NumCast::from;
1313

14-
pub trait NumExt: NumCast Ord { }
14+
pub trait NumExt: NumCast + Ord { }
1515

1616
fn greater_than_one<T:NumExt>(n: &T) -> bool {
1717
*n > from(1)

src/test/run-pass/trait-inheritance-num2.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ impl TypeExt for f64 {}
3838
impl TypeExt for float {}
3939

4040

41-
pub trait NumExt: TypeExt Eq Ord NumCast {}
41+
pub trait NumExt: TypeExt + Eq + Ord + NumCast {}
4242

4343
impl NumExt for u8 {}
4444
impl NumExt for u16 {}
@@ -94,7 +94,7 @@ impl IntegerExt for i64 {}
9494
impl IntegerExt for int {}
9595

9696

97-
pub trait FloatExt: NumExt FuzzyEq<Self> {}
97+
pub trait FloatExt: NumExt + FuzzyEq<Self> {}
9898

9999
impl FloatExt for f32 {}
100100
impl FloatExt for f64 {}

src/test/run-pass/trait-inheritance-num3.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use core::cmp::{Eq, Ord};
1212
use core::num::NumCast::from;
1313

14-
pub trait NumExt: Eq Ord NumCast {}
14+
pub trait NumExt: Eq + Ord + NumCast {}
1515

1616
impl NumExt for f32 {}
1717

src/test/run-pass/trait-inheritance-num5.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use core::cmp::{Eq, Ord};
1212
use core::num::NumCast::from;
1313

14-
pub trait NumExt: Eq NumCast {}
14+
pub trait NumExt: Eq + NumCast {}
1515

1616
impl NumExt for f32 {}
1717
impl NumExt for int {}

src/test/run-pass/trait-inheritance-overloading.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
use core::cmp::Eq;
1212

13-
trait MyNum : Add<Self,Self> Sub<Self,Self> Mul<Self,Self> Eq { }
13+
trait MyNum : Add<Self,Self> + Sub<Self,Self> + Mul<Self,Self> + Eq { }
1414

1515
struct MyInt { val: int }
1616

src/test/run-pass/trait-inheritance-static2.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ trait MyNum {
1414
static fn from_int(int) -> Self;
1515
}
1616

17-
pub trait NumExt: MyEq MyNum { }
17+
pub trait NumExt: MyEq + MyNum { }
1818

1919
struct S { v: int }
2020

src/test/run-pass/trait-inheritance2.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ trait Foo { fn f() -> int; }
1212
trait Bar { fn g() -> int; }
1313
trait Baz { fn h() -> int; }
1414

15-
trait Quux: Foo Bar Baz { }
15+
trait Quux: Foo + Bar + Baz { }
1616

1717
struct A { x: int }
1818

0 commit comments

Comments
 (0)