Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 1 | // compile-flags:-g |
Tom Tromey | fb204cb | 2018-10-12 13:34:14 | [diff] [blame] | 2 | |
| 3 | // Some versions of the non-rust-enabled LLDB print the wrong generic |
| 4 | // parameter type names in this test. |
| 5 | // rust-lldb |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 6 | |
| 7 | // === GDB TESTS =================================================================================== |
| 8 | |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 9 | // gdb-command:run |
| 10 | |
| 11 | // STACK BY REF |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 12 | // gdb-command:print *self |
Tim Neumann | 9253e12 | 2016-10-25 21:32:04 | [diff] [blame] | 13 | // gdbg-check:$1 = {x = {__0 = 8888, __1 = -8888}} |
| 14 | // gdbr-check:$1 = generic_method_on_generic_struct::Struct<(u32, i32)> {x: (8888, -8888)} |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 15 | // gdb-command:print arg1 |
| 16 | // gdb-check:$2 = -1 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 17 | // gdb-command:print arg2 |
| 18 | // gdb-check:$3 = 2 |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 19 | // gdb-command:continue |
| 20 | |
| 21 | // STACK BY VAL |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 22 | // gdb-command:print self |
Tim Neumann | 9253e12 | 2016-10-25 21:32:04 | [diff] [blame] | 23 | // gdbg-check:$4 = {x = {__0 = 8888, __1 = -8888}} |
| 24 | // gdbr-check:$4 = generic_method_on_generic_struct::Struct<(u32, i32)> {x: (8888, -8888)} |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 25 | // gdb-command:print arg1 |
| 26 | // gdb-check:$5 = -3 |
| 27 | // gdb-command:print arg2 |
| 28 | // gdb-check:$6 = -4 |
| 29 | // gdb-command:continue |
| 30 | |
| 31 | // OWNED BY REF |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 32 | // gdb-command:print *self |
Tim Neumann | 9253e12 | 2016-10-25 21:32:04 | [diff] [blame] | 33 | // gdbg-check:$7 = {x = 1234.5} |
| 34 | // gdbr-check:$7 = generic_method_on_generic_struct::Struct<f64> {x: 1234.5} |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 35 | // gdb-command:print arg1 |
| 36 | // gdb-check:$8 = -5 |
| 37 | // gdb-command:print arg2 |
| 38 | // gdb-check:$9 = -6 |
| 39 | // gdb-command:continue |
| 40 | |
| 41 | // OWNED BY VAL |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 42 | // gdb-command:print self |
Tim Neumann | 9253e12 | 2016-10-25 21:32:04 | [diff] [blame] | 43 | // gdbg-check:$10 = {x = 1234.5} |
| 44 | // gdbr-check:$10 = generic_method_on_generic_struct::Struct<f64> {x: 1234.5} |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 45 | // gdb-command:print arg1 |
| 46 | // gdb-check:$11 = -7 |
| 47 | // gdb-command:print arg2 |
| 48 | // gdb-check:$12 = -8 |
| 49 | // gdb-command:continue |
| 50 | |
| 51 | // OWNED MOVED |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 52 | // gdb-command:print *self |
Tim Neumann | 9253e12 | 2016-10-25 21:32:04 | [diff] [blame] | 53 | // gdbg-check:$13 = {x = 1234.5} |
| 54 | // gdbr-check:$13 = generic_method_on_generic_struct::Struct<f64> {x: 1234.5} |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 55 | // gdb-command:print arg1 |
| 56 | // gdb-check:$14 = -9 |
| 57 | // gdb-command:print arg2 |
| 58 | // gdb-check:$15 = -10.5 |
| 59 | // gdb-command:continue |
| 60 | |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 61 | |
| 62 | // === LLDB TESTS ================================================================================== |
| 63 | |
| 64 | // lldb-command:run |
| 65 | |
| 66 | // STACK BY REF |
| 67 | // lldb-command:print *self |
ortem | 47c26e6 | 2019-05-14 12:50:58 | [diff] [blame] | 68 | // lldbg-check:[...]$0 = { x = { 0 = 8888, 1 = -8888 } } |
| 69 | // lldbr-check:(generic_method_on_generic_struct::Struct<(u32, i32)>) *self = { x = { 0 = 8888 1 = -8888 } } |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 70 | // lldb-command:print arg1 |
Tom Tromey | ac33b2e | 2018-10-02 16:13:30 | [diff] [blame] | 71 | // lldbg-check:[...]$1 = -1 |
| 72 | // lldbr-check:(isize) arg1 = -1 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 73 | // lldb-command:print arg2 |
Tom Tromey | ac33b2e | 2018-10-02 16:13:30 | [diff] [blame] | 74 | // lldbg-check:[...]$2 = 2 |
| 75 | // lldbr-check:(u16) arg2 = 2 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 76 | // lldb-command:continue |
| 77 | |
| 78 | // STACK BY VAL |
| 79 | // lldb-command:print self |
ortem | 47c26e6 | 2019-05-14 12:50:58 | [diff] [blame] | 80 | // lldbg-check:[...]$3 = { x = { 0 = 8888, 1 = -8888 } } |
| 81 | // lldbr-check:(generic_method_on_generic_struct::Struct<(u32, i32)>) self = { x = { 0 = 8888, 1 = -8888 } } |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 82 | // lldb-command:print arg1 |
Tom Tromey | ac33b2e | 2018-10-02 16:13:30 | [diff] [blame] | 83 | // lldbg-check:[...]$4 = -3 |
| 84 | // lldbr-check:(isize) arg1 = -3 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 85 | // lldb-command:print arg2 |
Tom Tromey | ac33b2e | 2018-10-02 16:13:30 | [diff] [blame] | 86 | // lldbg-check:[...]$5 = -4 |
| 87 | // lldbr-check:(i16) arg2 = -4 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 88 | // lldb-command:continue |
| 89 | |
| 90 | // OWNED BY REF |
| 91 | // lldb-command:print *self |
ortem | 47c26e6 | 2019-05-14 12:50:58 | [diff] [blame] | 92 | // lldbg-check:[...]$6 = { x = 1234.5 } |
| 93 | // lldbr-check:(generic_method_on_generic_struct::Struct<f64>) *self = { x = 1234.5 } |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 94 | // lldb-command:print arg1 |
Tom Tromey | ac33b2e | 2018-10-02 16:13:30 | [diff] [blame] | 95 | // lldbg-check:[...]$7 = -5 |
| 96 | // lldbr-check:(isize) arg1 = -5 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 97 | // lldb-command:print arg2 |
Tom Tromey | ac33b2e | 2018-10-02 16:13:30 | [diff] [blame] | 98 | // lldbg-check:[...]$8 = -6 |
| 99 | // lldbr-check:(i32) arg2 = -6 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 100 | // lldb-command:continue |
| 101 | |
| 102 | // OWNED BY VAL |
| 103 | // lldb-command:print self |
ortem | 47c26e6 | 2019-05-14 12:50:58 | [diff] [blame] | 104 | // lldbg-check:[...]$9 = { x = 1234.5 } |
| 105 | // lldbr-check:(generic_method_on_generic_struct::Struct<f64>) self = { x = 1234.5 } |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 106 | // lldb-command:print arg1 |
Tom Tromey | ac33b2e | 2018-10-02 16:13:30 | [diff] [blame] | 107 | // lldbg-check:[...]$10 = -7 |
| 108 | // lldbr-check:(isize) arg1 = -7 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 109 | // lldb-command:print arg2 |
Tom Tromey | ac33b2e | 2018-10-02 16:13:30 | [diff] [blame] | 110 | // lldbg-check:[...]$11 = -8 |
| 111 | // lldbr-check:(i64) arg2 = -8 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 112 | // lldb-command:continue |
| 113 | |
| 114 | // OWNED MOVED |
| 115 | // lldb-command:print *self |
ortem | 47c26e6 | 2019-05-14 12:50:58 | [diff] [blame] | 116 | // lldbg-check:[...]$12 = { x = 1234.5 } |
| 117 | // lldbr-check:(generic_method_on_generic_struct::Struct<f64>) *self = { x = 1234.5 } |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 118 | // lldb-command:print arg1 |
Tom Tromey | ac33b2e | 2018-10-02 16:13:30 | [diff] [blame] | 119 | // lldbg-check:[...]$13 = -9 |
| 120 | // lldbr-check:(isize) arg1 = -9 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 121 | // lldb-command:print arg2 |
Tom Tromey | ac33b2e | 2018-10-02 16:13:30 | [diff] [blame] | 122 | // lldbg-check:[...]$14 = -10.5 |
| 123 | // lldbr-check:(f32) arg2 = -10.5 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 124 | // lldb-command:continue |
| 125 | |
Andrew Paseltiner | 6fa0ff2 | 2015-09-19 20:33:47 | [diff] [blame] | 126 | #![feature(omit_gdb_pretty_printer_section)] |
Michael Woerister | 91a0e18 | 2014-12-03 22:48:18 | [diff] [blame] | 127 | #![omit_gdb_pretty_printer_section] |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 128 | |
Niko Matsakis | 890ed5c | 2015-03-30 13:38:27 | [diff] [blame] | 129 | #[derive(Copy, Clone)] |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 130 | struct Struct<T> { |
| 131 | x: T |
| 132 | } |
| 133 | |
| 134 | impl<T1> Struct<T1> { |
| 135 | |
Alex Crichton | 43bfaa4 | 2015-03-26 00:06:52 | [diff] [blame] | 136 | fn self_by_ref<T2>(&self, arg1: isize, arg2: T2) -> isize { |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 137 | zzz(); // #break |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 138 | arg1 |
| 139 | } |
| 140 | |
Alex Crichton | 43bfaa4 | 2015-03-26 00:06:52 | [diff] [blame] | 141 | fn self_by_val<T2>(self, arg1: isize, arg2: T2) -> isize { |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 142 | zzz(); // #break |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 143 | arg1 |
| 144 | } |
| 145 | |
Alex Crichton | 43bfaa4 | 2015-03-26 00:06:52 | [diff] [blame] | 146 | fn self_owned<T2>(self: Box<Struct<T1>>, arg1: isize, arg2: T2) -> isize { |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 147 | zzz(); // #break |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 148 | arg1 |
| 149 | } |
| 150 | } |
| 151 | |
| 152 | fn main() { |
| 153 | let stack = Struct { x: (8888_u32, -8888_i32) }; |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 154 | let _ = stack.self_by_ref(-1, 2_u16); |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 155 | let _ = stack.self_by_val(-3, -4_i16); |
| 156 | |
est31 | 6550021 | 2021-08-25 00:39:40 | [diff] [blame^] | 157 | let owned: Box<_> = Box::new(Struct { x: 1234.5f64 }); |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 158 | let _ = owned.self_by_ref(-5, -6_i32); |
| 159 | let _ = owned.self_by_val(-7, -8_i64); |
| 160 | let _ = owned.self_owned(-9, -10.5_f32); |
| 161 | } |
| 162 | |
| 163 | fn zzz() {()} |