]> git.proxmox.com Git - rustc.git/blame - src/test/ui/traits/trait-default-method-xc.rs
New upstream version 1.51.0+dfsg1
[rustc.git] / src / test / ui / traits / trait-default-method-xc.rs
CommitLineData
b7449926 1// run-pass
0bf4aa26 2#![allow(dead_code)]
b7449926
XL
3#![allow(non_camel_case_types)]
4
1a4d82fc 5// aux-build:trait_default_method_xc_aux.rs
970d7e83 6
c34b1796
AL
7
8extern crate trait_default_method_xc_aux as aux;
1a4d82fc
JJ
9use aux::{A, TestEquality, Something};
10use aux::B;
970d7e83
LB
11
12fn f<T: aux::A>(i: T) {
13 assert_eq!(i.g(), 10);
14}
15
c34b1796 16fn welp<T>(i: isize, _x: &T) -> isize {
1a4d82fc
JJ
17 i.g()
18}
970d7e83 19
1a4d82fc 20mod stuff {
c34b1796 21 pub struct thing { pub x: isize }
1a4d82fc
JJ
22}
23
24impl A for stuff::thing {
c34b1796 25 fn f(&self) -> isize { 10 }
970d7e83
LB
26}
27
28fn g<T, U, V: B<T>>(i: V, j: T, k: U) -> (T, U) {
29 i.thing(j, k)
30}
31
32fn eq<T: TestEquality>(lhs: &T, rhs: &T) -> bool {
33 lhs.test_eq(rhs)
34}
35fn neq<T: TestEquality>(lhs: &T, rhs: &T) -> bool {
36 lhs.test_neq(rhs)
37}
38
39
1a4d82fc
JJ
40impl TestEquality for stuff::thing {
41 fn test_eq(&self, rhs: &stuff::thing) -> bool {
970d7e83
LB
42 //self.x.test_eq(&rhs.x)
43 eq(&self.x, &rhs.x)
44 }
45}
46
47
1a4d82fc 48pub fn main() {
970d7e83 49 // Some tests of random things
85aaf69f 50 f(0);
970d7e83 51
85aaf69f 52 assert_eq!(A::lurr(&0, &1), 21);
970d7e83 53
1a4d82fc
JJ
54 let a = stuff::thing { x: 0 };
55 let b = stuff::thing { x: 1 };
56 let c = Something { x: 1 };
970d7e83 57
85aaf69f 58 assert_eq!(0.g(), 10);
1a4d82fc
JJ
59 assert_eq!(a.g(), 10);
60 assert_eq!(a.h(), 11);
61 assert_eq!(c.h(), 11);
970d7e83 62
85aaf69f
SL
63 assert_eq!(0.thing(3.14f64, 1), (3.14f64, 1));
64 assert_eq!(B::staticthing(&0, 3.14f64, 1), (3.14f64, 1));
c34b1796 65 assert_eq!(B::<f64>::staticthing::<isize>(&0, 3.14, 1), (3.14, 1));
970d7e83 66
85aaf69f
SL
67 assert_eq!(g(0, 3.14f64, 1), (3.14f64, 1));
68 assert_eq!(g(false, 3.14f64, 1), (3.14, 1));
970d7e83
LB
69
70
71 // Trying out a real one
85aaf69f
SL
72 assert!(12.test_neq(&10));
73 assert!(!10.test_neq(&10));
970d7e83
LB
74 assert!(a.test_neq(&b));
75 assert!(!a.test_neq(&a));
76
85aaf69f
SL
77 assert!(neq(&12, &10));
78 assert!(!neq(&10, &10));
970d7e83
LB
79 assert!(neq(&a, &b));
80 assert!(!neq(&a, &a));
81}