From 7c042cd70b9528051a1a1abba9e5d18657550306 Mon Sep 17 00:00:00 2001 From: Michael Woerister Date: Wed, 16 Apr 2014 12:22:38 +0200 Subject: [PATCH] debuginfo: Add a test case for issue #12886. --- src/test/debug-info/issue12886.rs | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/test/debug-info/issue12886.rs diff --git a/src/test/debug-info/issue12886.rs b/src/test/debug-info/issue12886.rs new file mode 100644 index 0000000000000..328ed54b5b271 --- /dev/null +++ b/src/test/debug-info/issue12886.rs @@ -0,0 +1,35 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// ignore-android: FIXME(#10381) + +// compile-flags:-g +// debugger:break issue12886.rs:29 +// debugger:run +// debugger:next +// check:[...]30[...]s +// debugger:continue + +// IF YOU MODIFY THIS FILE, BE CAREFUL TO ADAPT THE LINE NUMBERS IN THE DEBUGGER COMMANDS + +// This test makes sure that gdb does not set unwanted breakpoints in inlined functions. If a +// breakpoint existed in unwrap(), then calling `next` would (when stopped at line 27) would stop +// in unwrap() instead of stepping over the function invocation. By making sure that `s` is +// contained in the output, after calling `next` just once, we can be sure that we did not stop in +// unwrap(). (The testing framework doesn't allow for checking that some text is *not* contained in +// the output, which is why we have to make the test in this kind of roundabout way) +fn bar() -> int { + let s = Some(5).unwrap(); + s +} + +fn main() { + let _ = bar(); +}