]> git.proxmox.com Git - rustc.git/blame - src/test/debuginfo/method-on-trait.rs
New upstream version 1.14.0+dfsg1
[rustc.git] / src / test / debuginfo / method-on-trait.rs
CommitLineData
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_trait::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_trait::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_trait::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_trait::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_trait::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 125struct Struct {
c34b1796 126 x: isize
1a4d82fc
JJ
127}
128
129trait Trait {
c34b1796
AL
130 fn self_by_ref(&self, arg1: isize, arg2: isize) -> isize;
131 fn self_by_val(self, arg1: isize, arg2: isize) -> isize;
132 fn self_owned(self: Box<Self>, arg1: isize, arg2: isize) -> isize;
1a4d82fc
JJ
133}
134
135impl Trait for Struct {
136
c34b1796 137 fn self_by_ref(&self, arg1: isize, arg2: isize) -> isize {
1a4d82fc
JJ
138 zzz(); // #break
139 self.x + arg1 + arg2
140 }
141
c34b1796 142 fn self_by_val(self, arg1: isize, arg2: isize) -> isize {
1a4d82fc
JJ
143 zzz(); // #break
144 self.x + arg1 + arg2
145 }
146
c34b1796 147 fn self_owned(self: Box<Struct>, arg1: isize, arg2: isize) -> isize {
1a4d82fc
JJ
148 zzz(); // #break
149 self.x + arg1 + arg2
150 }
151}
152
153fn main() {
154 let stack = Struct { x: 100 };
155 let _ = stack.self_by_ref(-1, -2);
156 let _ = stack.self_by_val(-3, -4);
157
c34b1796 158 let owned: Box<_> = box Struct { x: 200 };
1a4d82fc
JJ
159 let _ = owned.self_by_ref(-5, -6);
160 let _ = owned.self_by_val(-7, -8);
161 let _ = owned.self_owned(-9, -10);
162}
163
164fn zzz() {()}