//@ compile-flags:-g
//@ disable-gdb-pretty-printers
//@ ignore-backends: gcc

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

//@ gdb-command:run

// STACK BY REF
//@ gdb-command:print *self
//@ gdb-check:$1 = method_on_generic_struct::Struct<(u32, i32)> {x: (8888, -8888)}
//@ gdb-command:print arg1
//@ gdb-check:$2 = -1
//@ gdb-command:print arg2
//@ gdb-check:$3 = -2
//@ gdb-command:continue

// STACK BY VAL
//@ gdb-command:print self
//@ gdb-check:$4 = method_on_generic_struct::Struct<(u32, i32)> {x: (8888, -8888)}
//@ gdb-command:print arg1
//@ gdb-check:$5 = -3
//@ gdb-command:print arg2
//@ gdb-check:$6 = -4
//@ gdb-command:continue

// OWNED BY REF
//@ gdb-command:print *self
//@ gdb-check:$7 = method_on_generic_struct::Struct<f64> {x: 1234.5}
//@ gdb-command:print arg1
//@ gdb-check:$8 = -5
//@ gdb-command:print arg2
//@ gdb-check:$9 = -6
//@ gdb-command:continue

// OWNED BY VAL
//@ gdb-command:print self
//@ gdb-check:$10 = method_on_generic_struct::Struct<f64> {x: 1234.5}
//@ gdb-command:print arg1
//@ gdb-check:$11 = -7
//@ gdb-command:print arg2
//@ gdb-check:$12 = -8
//@ gdb-command:continue

// OWNED MOVED
//@ gdb-command:print *self
//@ gdb-check:$13 = method_on_generic_struct::Struct<f64> {x: 1234.5}
//@ gdb-command:print arg1
//@ gdb-check:$14 = -9
//@ gdb-command:print arg2
//@ gdb-check:$15 = -10
//@ gdb-command:continue


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

//@ lldb-command:run

// STACK BY REF
//@ lldb-command:v *self
//@ lldb-check:[...]Struct<(u32, i32)>) *self = { x = (8888, -8888) }
//@ lldb-command:v arg1
//@ lldb-check:[...] -1
//@ lldb-command:v arg2
//@ lldb-check:[...] -2
//@ lldb-command:continue

// STACK BY VAL
//@ lldb-command:v self
//@ lldb-check:[...]Struct<(u32, i32)>) self = { x = (8888, -8888) }
//@ lldb-command:v arg1
//@ lldb-check:[...] -3
//@ lldb-command:v arg2
//@ lldb-check:[...] -4
//@ lldb-command:continue

// OWNED BY REF
//@ lldb-command:v *self
//@ lldb-check:[...]Struct<double>) *self = { x = 1234.5 }
//@ lldb-command:v arg1
//@ lldb-check:[...] -5
//@ lldb-command:v arg2
//@ lldb-check:[...] -6
//@ lldb-command:continue

// OWNED BY VAL
//@ lldb-command:v self
//@ lldb-check:[...]Struct<double>) self = { x = 1234.5 }
//@ lldb-command:v arg1
//@ lldb-check:[...] -7
//@ lldb-command:v arg2
//@ lldb-check:[...] -8
//@ lldb-command:continue

// OWNED MOVED
//@ lldb-command:v *self
//@ lldb-check:[...]Struct<double>) *self = { x = 1234.5 }
//@ lldb-command:v arg1
//@ lldb-check:[...] -9
//@ lldb-command:v arg2
//@ lldb-check:[...] -10
//@ lldb-command:continue

#[derive(Copy, Clone)]
struct Struct<T> {
    x: T
}

impl<T> Struct<T> {

    fn self_by_ref(&self, arg1: isize, arg2: isize) -> isize {
        zzz(); // #break
        arg1 + arg2
    }

    fn self_by_val(self, arg1: isize, arg2: isize) -> isize {
        zzz(); // #break
        arg1 + arg2
    }

    fn self_owned(self: Box<Struct<T>>, arg1: isize, arg2: isize) -> isize {
        zzz(); // #break
        arg1 + arg2
    }
}

fn main() {
    let stack = Struct { x: (8888_u32, -8888_i32) };
    let _ = stack.self_by_ref(-1, -2);
    let _ = stack.self_by_val(-3, -4);

    let owned: Box<_> = Box::new(Struct { x: 1234.5f64 });
    let _ = owned.self_by_ref(-5, -6);
    let _ = owned.self_by_val(-7, -8);
    let _ = owned.self_owned(-9, -10);
}

fn zzz() {()}
