许杰友 Jieyou Xu (Joe) | 6e48b96 | 2024-02-22 12:10:29 | [diff] [blame] | 1 | //@ compile-flags:-g |
Tom Tromey | fb204cb | 2018-10-12 13:34:14 | [diff] [blame] | 2 | |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 3 | // === GDB TESTS =================================================================================== |
| 4 | |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 5 | // gdb-command:run |
| 6 | |
| 7 | // STACK BY REF |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 8 | // gdb-command:print *self |
Ben Kimock | fa0e858 | 2024-08-17 21:31:49 | [diff] [blame] | 9 | // gdb-check:$1 = generic_method_on_generic_struct::Struct<(u32, i32)> {x: (8888, -8888)} |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 10 | // gdb-command:print arg1 |
| 11 | // gdb-check:$2 = -1 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 12 | // gdb-command:print arg2 |
| 13 | // gdb-check:$3 = 2 |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 14 | // gdb-command:continue |
| 15 | |
| 16 | // STACK BY VAL |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 17 | // gdb-command:print self |
Ben Kimock | fa0e858 | 2024-08-17 21:31:49 | [diff] [blame] | 18 | // gdb-check:$4 = generic_method_on_generic_struct::Struct<(u32, i32)> {x: (8888, -8888)} |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 19 | // gdb-command:print arg1 |
| 20 | // gdb-check:$5 = -3 |
| 21 | // gdb-command:print arg2 |
| 22 | // gdb-check:$6 = -4 |
| 23 | // gdb-command:continue |
| 24 | |
| 25 | // OWNED BY REF |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 26 | // gdb-command:print *self |
Ben Kimock | fa0e858 | 2024-08-17 21:31:49 | [diff] [blame] | 27 | // gdb-check:$7 = generic_method_on_generic_struct::Struct<f64> {x: 1234.5} |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 28 | // gdb-command:print arg1 |
| 29 | // gdb-check:$8 = -5 |
| 30 | // gdb-command:print arg2 |
| 31 | // gdb-check:$9 = -6 |
| 32 | // gdb-command:continue |
| 33 | |
| 34 | // OWNED BY VAL |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 35 | // gdb-command:print self |
Ben Kimock | fa0e858 | 2024-08-17 21:31:49 | [diff] [blame] | 36 | // gdb-check:$10 = generic_method_on_generic_struct::Struct<f64> {x: 1234.5} |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 37 | // gdb-command:print arg1 |
| 38 | // gdb-check:$11 = -7 |
| 39 | // gdb-command:print arg2 |
| 40 | // gdb-check:$12 = -8 |
| 41 | // gdb-command:continue |
| 42 | |
| 43 | // OWNED MOVED |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 44 | // gdb-command:print *self |
Ben Kimock | fa0e858 | 2024-08-17 21:31:49 | [diff] [blame] | 45 | // gdb-check:$13 = generic_method_on_generic_struct::Struct<f64> {x: 1234.5} |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 46 | // gdb-command:print arg1 |
| 47 | // gdb-check:$14 = -9 |
| 48 | // gdb-command:print arg2 |
| 49 | // gdb-check:$15 = -10.5 |
| 50 | // gdb-command:continue |
| 51 | |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 52 | |
| 53 | // === LLDB TESTS ================================================================================== |
| 54 | |
| 55 | // lldb-command:run |
| 56 | |
| 57 | // STACK BY REF |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 58 | // lldb-command:v *self |
Ben Kimock | b2dae98 | 2024-08-18 21:41:01 | [diff] [blame] | 59 | // lldb-check:[...] { x = { 0 = 8888 1 = -8888 } } |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 60 | // lldb-command:v arg1 |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 61 | // lldb-check:[...] -1 |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 62 | // lldb-command:v arg2 |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 63 | // lldb-check:[...] 2 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 64 | // lldb-command:continue |
| 65 | |
| 66 | // STACK BY VAL |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 67 | // lldb-command:v self |
Ben Kimock | b2dae98 | 2024-08-18 21:41:01 | [diff] [blame] | 68 | // lldb-check:[...] { x = { 0 = 8888 1 = -8888 } } |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 69 | // lldb-command:v arg1 |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 70 | // lldb-check:[...] -3 |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 71 | // lldb-command:v arg2 |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 72 | // lldb-check:[...] -4 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 73 | // lldb-command:continue |
| 74 | |
| 75 | // OWNED BY REF |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 76 | // lldb-command:v *self |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 77 | // lldb-check:[...] { x = 1234.5 } |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 78 | // lldb-command:v arg1 |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 79 | // lldb-check:[...] -5 |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 80 | // lldb-command:v arg2 |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 81 | // lldb-check:[...] -6 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 82 | // lldb-command:continue |
| 83 | |
| 84 | // OWNED BY VAL |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 85 | // lldb-command:v self |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 86 | // lldb-check:[...] { x = 1234.5 } |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 87 | // lldb-command:v arg1 |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 88 | // lldb-check:[...] -7 |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 89 | // lldb-command:v arg2 |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 90 | // lldb-check:[...] -8 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 91 | // lldb-command:continue |
| 92 | |
| 93 | // OWNED MOVED |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 94 | // lldb-command:v *self |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 95 | // lldb-check:[...] { x = 1234.5 } |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 96 | // lldb-command:v arg1 |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 97 | // lldb-check:[...] -9 |
Markus Reiter | 96431e4 | 2024-03-15 14:05:57 | [diff] [blame] | 98 | // lldb-command:v arg2 |
Ben Kimock | 22ed23d | 2024-08-18 21:00:33 | [diff] [blame] | 99 | // lldb-check:[...] -10.5 |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 100 | // lldb-command:continue |
| 101 | |
Andrew Paseltiner | 6fa0ff2 | 2015-09-19 20:33:47 | [diff] [blame] | 102 | #![feature(omit_gdb_pretty_printer_section)] |
Michael Woerister | 91a0e18 | 2014-12-03 22:48:18 | [diff] [blame] | 103 | #![omit_gdb_pretty_printer_section] |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 104 | |
Niko Matsakis | 890ed5c | 2015-03-30 13:38:27 | [diff] [blame] | 105 | #[derive(Copy, Clone)] |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 106 | struct Struct<T> { |
| 107 | x: T |
| 108 | } |
| 109 | |
| 110 | impl<T1> Struct<T1> { |
| 111 | |
Alex Crichton | 43bfaa4 | 2015-03-26 00:06:52 | [diff] [blame] | 112 | fn self_by_ref<T2>(&self, arg1: isize, arg2: T2) -> isize { |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 113 | zzz(); // #break |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 114 | arg1 |
| 115 | } |
| 116 | |
Alex Crichton | 43bfaa4 | 2015-03-26 00:06:52 | [diff] [blame] | 117 | fn self_by_val<T2>(self, arg1: isize, arg2: T2) -> isize { |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 118 | zzz(); // #break |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 119 | arg1 |
| 120 | } |
| 121 | |
Alex Crichton | 43bfaa4 | 2015-03-26 00:06:52 | [diff] [blame] | 122 | fn self_owned<T2>(self: Box<Struct<T1>>, arg1: isize, arg2: T2) -> isize { |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 123 | zzz(); // #break |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 124 | arg1 |
| 125 | } |
| 126 | } |
| 127 | |
| 128 | fn main() { |
| 129 | let stack = Struct { x: (8888_u32, -8888_i32) }; |
Michael Woerister | c7f45a9 | 2014-07-09 12:46:09 | [diff] [blame] | 130 | let _ = stack.self_by_ref(-1, 2_u16); |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 131 | let _ = stack.self_by_val(-3, -4_i16); |
| 132 | |
est31 | 6550021 | 2021-08-25 00:39:40 | [diff] [blame] | 133 | let owned: Box<_> = Box::new(Struct { x: 1234.5f64 }); |
Michael Woerister | 55a8bd5 | 2014-04-24 09:35:48 | [diff] [blame] | 134 | let _ = owned.self_by_ref(-5, -6_i32); |
| 135 | let _ = owned.self_by_val(-7, -8_i64); |
| 136 | let _ = owned.self_owned(-9, -10.5_f32); |
| 137 | } |
| 138 | |
| 139 | fn zzz() {()} |