diff options
Diffstat (limited to 'src/test/debuginfo/method-on-struct.rs')
| -rw-r--r-- | src/test/debuginfo/method-on-struct.rs | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/test/debuginfo/method-on-struct.rs b/src/test/debuginfo/method-on-struct.rs new file mode 100644 index 00000000000..3d7cc96ca17 --- /dev/null +++ b/src/test/debuginfo/method-on-struct.rs @@ -0,0 +1,100 @@ +// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// ignore-android: FIXME(#10381) + +// compile-flags:-g +// gdb-command:rbreak zzz +// gdb-command:run + +// STACK BY REF +// gdb-command:finish +// gdb-command:print *self +// gdb-check:$1 = {x = 100} +// gdb-command:print arg1 +// gdb-check:$2 = -1 +// gdb-command:print arg2 +// gdb-check:$3 = -2 +// gdb-command:continue + +// STACK BY VAL +// gdb-command:finish +// gdb-command:print self +// gdb-check:$4 = {x = 100} +// gdb-command:print arg1 +// gdb-check:$5 = -3 +// gdb-command:print arg2 +// gdb-check:$6 = -4 +// gdb-command:continue + +// OWNED BY REF +// gdb-command:finish +// gdb-command:print *self +// gdb-check:$7 = {x = 200} +// gdb-command:print arg1 +// gdb-check:$8 = -5 +// gdb-command:print arg2 +// gdb-check:$9 = -6 +// gdb-command:continue + +// OWNED BY VAL +// gdb-command:finish +// gdb-command:print self +// gdb-check:$10 = {x = 200} +// gdb-command:print arg1 +// gdb-check:$11 = -7 +// gdb-command:print arg2 +// gdb-check:$12 = -8 +// gdb-command:continue + +// OWNED MOVED +// gdb-command:finish +// gdb-command:print *self +// gdb-check:$13 = {x = 200} +// gdb-command:print arg1 +// gdb-check:$14 = -9 +// gdb-command:print arg2 +// gdb-check:$15 = -10 +// gdb-command:continue + +struct Struct { + x: int +} + +impl Struct { + + fn self_by_ref(&self, arg1: int, arg2: int) -> int { + zzz(); + self.x + arg1 + arg2 + } + + fn self_by_val(self, arg1: int, arg2: int) -> int { + zzz(); + self.x + arg1 + arg2 + } + + fn self_owned(~self, arg1: int, arg2: int) -> int { + zzz(); + self.x + arg1 + arg2 + } +} + +fn main() { + let stack = Struct { x: 100 }; + let _ = stack.self_by_ref(-1, -2); + let _ = stack.self_by_val(-3, -4); + + let owned = box Struct { x: 200 }; + let _ = owned.self_by_ref(-5, -6); + let _ = owned.self_by_val(-7, -8); + let _ = owned.self_owned(-9, -10); +} + +fn zzz() {()} |
