]>
Commit | Line | Data |
---|---|---|
1a4d82fc JJ |
1 | // Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT |
2 | // file at the top-level directory of this distribution and at | |
3 | // http://rust-lang.org/COPYRIGHT. | |
4 | // | |
5 | // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | |
6 | // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | |
7 | // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | |
8 | // option. This file may not be copied, modified, or distributed | |
9 | // except according to those terms. | |
10 | ||
1a4d82fc JJ |
11 | // min-lldb-version: 310 |
12 | ||
13 | // compile-flags:-g | |
14 | ||
15 | // === GDB TESTS =================================================================================== | |
16 | ||
17 | // gdb-command:run | |
18 | ||
19 | // STACK BY REF | |
20 | // gdb-command:print *self | |
c30ab7b3 SL |
21 | // gdbg-check:$1 = {x = 100} |
22 | // gdbr-check:$1 = method_on_struct::Struct {x: 100} | |
1a4d82fc JJ |
23 | // gdb-command:print arg1 |
24 | // gdb-check:$2 = -1 | |
25 | // gdb-command:print arg2 | |
26 | // gdb-check:$3 = -2 | |
27 | // gdb-command:continue | |
28 | ||
29 | // STACK BY VAL | |
30 | // gdb-command:print self | |
c30ab7b3 SL |
31 | // gdbg-check:$4 = {x = 100} |
32 | // gdbr-check:$4 = method_on_struct::Struct {x: 100} | |
1a4d82fc JJ |
33 | // gdb-command:print arg1 |
34 | // gdb-check:$5 = -3 | |
35 | // gdb-command:print arg2 | |
36 | // gdb-check:$6 = -4 | |
37 | // gdb-command:continue | |
38 | ||
39 | // OWNED BY REF | |
40 | // gdb-command:print *self | |
c30ab7b3 SL |
41 | // gdbg-check:$7 = {x = 200} |
42 | // gdbr-check:$7 = method_on_struct::Struct {x: 200} | |
1a4d82fc JJ |
43 | // gdb-command:print arg1 |
44 | // gdb-check:$8 = -5 | |
45 | // gdb-command:print arg2 | |
46 | // gdb-check:$9 = -6 | |
47 | // gdb-command:continue | |
48 | ||
49 | // OWNED BY VAL | |
50 | // gdb-command:print self | |
c30ab7b3 SL |
51 | // gdbg-check:$10 = {x = 200} |
52 | // gdbr-check:$10 = method_on_struct::Struct {x: 200} | |
1a4d82fc JJ |
53 | // gdb-command:print arg1 |
54 | // gdb-check:$11 = -7 | |
55 | // gdb-command:print arg2 | |
56 | // gdb-check:$12 = -8 | |
57 | // gdb-command:continue | |
58 | ||
59 | // OWNED MOVED | |
60 | // gdb-command:print *self | |
c30ab7b3 SL |
61 | // gdbg-check:$13 = {x = 200} |
62 | // gdbr-check:$13 = method_on_struct::Struct {x: 200} | |
1a4d82fc JJ |
63 | // gdb-command:print arg1 |
64 | // gdb-check:$14 = -9 | |
65 | // gdb-command:print arg2 | |
66 | // gdb-check:$15 = -10 | |
67 | // gdb-command:continue | |
68 | ||
69 | ||
70 | // === LLDB TESTS ================================================================================== | |
71 | ||
72 | // lldb-command:run | |
73 | ||
74 | // STACK BY REF | |
75 | // lldb-command:print *self | |
76 | // lldb-check:[...]$0 = Struct { x: 100 } | |
77 | // lldb-command:print arg1 | |
78 | // lldb-check:[...]$1 = -1 | |
79 | // lldb-command:print arg2 | |
80 | // lldb-check:[...]$2 = -2 | |
81 | // lldb-command:continue | |
82 | ||
83 | // STACK BY VAL | |
84 | // lldb-command:print self | |
85 | // lldb-check:[...]$3 = Struct { x: 100 } | |
86 | // lldb-command:print arg1 | |
87 | // lldb-check:[...]$4 = -3 | |
88 | // lldb-command:print arg2 | |
89 | // lldb-check:[...]$5 = -4 | |
90 | // lldb-command:continue | |
91 | ||
92 | // OWNED BY REF | |
93 | // lldb-command:print *self | |
94 | // lldb-check:[...]$6 = Struct { x: 200 } | |
95 | // lldb-command:print arg1 | |
96 | // lldb-check:[...]$7 = -5 | |
97 | // lldb-command:print arg2 | |
98 | // lldb-check:[...]$8 = -6 | |
99 | // lldb-command:continue | |
100 | ||
101 | // OWNED BY VAL | |
102 | // lldb-command:print self | |
103 | // lldb-check:[...]$9 = Struct { x: 200 } | |
104 | // lldb-command:print arg1 | |
105 | // lldb-check:[...]$10 = -7 | |
106 | // lldb-command:print arg2 | |
107 | // lldb-check:[...]$11 = -8 | |
108 | // lldb-command:continue | |
109 | ||
110 | // OWNED MOVED | |
111 | // lldb-command:print *self | |
112 | // lldb-check:[...]$12 = Struct { x: 200 } | |
113 | // lldb-command:print arg1 | |
114 | // lldb-check:[...]$13 = -9 | |
115 | // lldb-command:print arg2 | |
116 | // lldb-check:[...]$14 = -10 | |
117 | // lldb-command:continue | |
118 | ||
119 | ||
120 | #![feature(box_syntax)] | |
b039eaaf | 121 | #![feature(omit_gdb_pretty_printer_section)] |
1a4d82fc JJ |
122 | #![omit_gdb_pretty_printer_section] |
123 | ||
c34b1796 | 124 | #[derive(Copy, Clone)] |
1a4d82fc | 125 | struct Struct { |
c34b1796 | 126 | x: isize |
1a4d82fc JJ |
127 | } |
128 | ||
129 | impl Struct { | |
130 | ||
c34b1796 | 131 | fn self_by_ref(&self, arg1: isize, arg2: isize) -> isize { |
1a4d82fc JJ |
132 | zzz(); // #break |
133 | self.x + arg1 + arg2 | |
134 | } | |
135 | ||
c34b1796 | 136 | fn self_by_val(self, arg1: isize, arg2: isize) -> isize { |
1a4d82fc JJ |
137 | zzz(); // #break |
138 | self.x + arg1 + arg2 | |
139 | } | |
140 | ||
c34b1796 | 141 | fn self_owned(self: Box<Struct>, arg1: isize, arg2: isize) -> isize { |
1a4d82fc JJ |
142 | zzz(); // #break |
143 | self.x + arg1 + arg2 | |
144 | } | |
145 | } | |
146 | ||
147 | fn main() { | |
148 | let stack = Struct { x: 100 }; | |
149 | let _ = stack.self_by_ref(-1, -2); | |
150 | let _ = stack.self_by_val(-3, -4); | |
151 | ||
c34b1796 | 152 | let owned: Box<_> = box Struct { x: 200 }; |
1a4d82fc JJ |
153 | let _ = owned.self_by_ref(-5, -6); |
154 | let _ = owned.self_by_val(-7, -8); | |
155 | let _ = owned.self_owned(-9, -10); | |
156 | } | |
157 | ||
158 | fn zzz() {()} |