self-in-generic-default-method.rs 3.6 KB
Newer Older
1
// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
2 3 4 5 6 7 8 9 10
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

11
// ignore-android: FIXME(#10381)
12
// min-lldb-version: 310
13

14
// compile-flags:-g
15 16 17

// === GDB TESTS ===================================================================================

18 19
// gdb-command:rbreak zzz
// gdb-command:run
20 21

// STACK BY REF
22 23 24 25 26
// gdb-command:finish
// gdb-command:print *self
// gdb-check:$1 = {x = 987}
// gdb-command:print arg1
// gdb-check:$2 = -1
27 28
// gdb-command:print arg2
// gdb-check:$3 = 2
29
// gdb-command:continue
30 31

// STACK BY VAL
32 33 34 35 36 37 38 39
// gdb-command:finish
// gdb-command:print self
// gdb-check:$4 = {x = 987}
// gdb-command:print arg1
// gdb-check:$5 = -3
// gdb-command:print arg2
// gdb-check:$6 = -4
// gdb-command:continue
40 41

// OWNED BY REF
42 43 44 45 46 47 48 49
// gdb-command:finish
// gdb-command:print *self
// gdb-check:$7 = {x = 879}
// gdb-command:print arg1
// gdb-check:$8 = -5
// gdb-command:print arg2
// gdb-check:$9 = -6
// gdb-command:continue
50 51

// OWNED BY VAL
52 53 54 55 56 57 58 59
// gdb-command:finish
// gdb-command:print self
// gdb-check:$10 = {x = 879}
// gdb-command:print arg1
// gdb-check:$11 = -7
// gdb-command:print arg2
// gdb-check:$12 = -8
// gdb-command:continue
60 61

// OWNED MOVED
62 63 64 65 66 67 68 69
// gdb-command:finish
// gdb-command:print *self
// gdb-check:$13 = {x = 879}
// gdb-command:print arg1
// gdb-check:$14 = -9
// gdb-command:print arg2
// gdb-check:$15 = -10.5
// gdb-command:continue
70

71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121

// === LLDB TESTS ==================================================================================

// lldb-command:run

// STACK BY REF
// lldb-command:print *self
// lldb-check:[...]$0 = Struct { x: 987 }
// lldb-command:print arg1
// lldb-check:[...]$1 = -1
// lldb-command:print arg2
// lldb-check:[...]$2 = 2
// lldb-command:continue

// STACK BY VAL
// lldb-command:print self
// lldb-check:[...]$3 = Struct { x: 987 }
// lldb-command:print arg1
// lldb-check:[...]$4 = -3
// lldb-command:print arg2
// lldb-check:[...]$5 = -4
// lldb-command:continue

// OWNED BY REF
// lldb-command:print *self
// lldb-check:[...]$6 = Struct { x: 879 }
// lldb-command:print arg1
// lldb-check:[...]$7 = -5
// lldb-command:print arg2
// lldb-check:[...]$8 = -6
// lldb-command:continue

// OWNED BY VAL
// lldb-command:print self
// lldb-check:[...]$9 = Struct { x: 879 }
// lldb-command:print arg1
// lldb-check:[...]$10 = -7
// lldb-command:print arg2
// lldb-check:[...]$11 = -8
// lldb-command:continue

// OWNED MOVED
// lldb-command:print *self
// lldb-check:[...]$12 = Struct { x: 879 }
// lldb-command:print arg1
// lldb-check:[...]$13 = -9
// lldb-command:print arg2
// lldb-check:[...]$14 = -10.5
// lldb-command:continue


122 123 124 125 126 127 128
struct Struct {
    x: int
}

trait Trait {

    fn self_by_ref<T>(&self, arg1: int, arg2: T) -> int {
129
        zzz(); // #break
130 131 132 133
        arg1
    }

    fn self_by_val<T>(self, arg1: int, arg2: T) -> int {
134
        zzz(); // #break
135 136 137
        arg1
    }

138
    fn self_owned<T>(self: Box<Self>, arg1: int, arg2: T) -> int {
139
        zzz(); // #break
140 141 142 143
        arg1
    }
}

144
impl Trait for Struct {}
145 146 147

fn main() {
    let stack = Struct { x: 987 };
148
    let _ = stack.self_by_ref(-1, 2_u16);
149 150
    let _ = stack.self_by_val(-3, -4_i16);

151
    let owned = box Struct { x: 879 };
152 153 154 155 156 157
    let _ = owned.self_by_ref(-5, -6_i32);
    let _ = owned.self_by_val(-7, -8_i64);
    let _ = owned.self_owned(-9, -10.5_f32);
}

fn zzz() {()}