aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.rust/modules.rs
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2016-04-26 19:38:43 -0600
committerTom Tromey <tom@tromey.com>2016-05-17 12:02:01 -0600
commit67218854b1987d89593ccaf5feaf5b29b1b976f2 (patch)
tree8137e1713d27a507dfc57015308f44166543ffc6 /gdb/testsuite/gdb.rust/modules.rs
parentc44af4ebc000f606d16b42224cba2cfe80391d5c (diff)
downloadgdb-67218854b1987d89593ccaf5feaf5b29b1b976f2.zip
gdb-67218854b1987d89593ccaf5feaf5b29b1b976f2.tar.gz
gdb-67218854b1987d89593ccaf5feaf5b29b1b976f2.tar.bz2
Update gdb test suite for Rust
This updates the gdb test suite for Rust. 2016-05-17 Tom Tromey <tom@tromey.com> Manish Goregaokar <manishsmail@gmail.com> * lib/rust-support.exp: New file. * lib/gdb.exp (skip_rust_tests): New proc. (build_executable_from_specs): Handle rust. * lib/future.exp (gdb_find_rustc): New proc. (gdb_default_target_compile): Handle rust. * gdb.rust/expr.exp: New file. * gdb.rust/generics.exp: New file. * gdb.rust/generics.rs: New file. * gdb.rust/methods.exp: New file. * gdb.rust/methods.rs: New file. * gdb.rust/modules.exp: New file. * gdb.rust/modules.rs: New file. * gdb.rust/simple.exp: New file. * gdb.rust/simple.rs: New file.
Diffstat (limited to 'gdb/testsuite/gdb.rust/modules.rs')
-rw-r--r--gdb/testsuite/gdb.rust/modules.rs90
1 files changed, 90 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.rust/modules.rs b/gdb/testsuite/gdb.rust/modules.rs
new file mode 100644
index 0000000..35829b8
--- /dev/null
+++ b/gdb/testsuite/gdb.rust/modules.rs
@@ -0,0 +1,90 @@
+// Copyright (C) 2016 Free Software Foundation, Inc.
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+#![allow(dead_code)]
+#![allow(unused_variables)]
+#![allow(unused_assignments)]
+
+fn f2() {
+ println!("::f2");
+}
+
+pub struct Generic<T>(T);
+
+pub struct Type;
+
+pub mod mod1 {
+ pub struct Type(usize, isize);
+
+ pub mod inner {
+ pub struct Type(f64);
+
+ pub mod innest {
+ pub struct Type {pub x : u32}
+
+ fn wrap<T> (x: T) -> ::Generic<::Generic<T>> {
+ ::Generic(::Generic(x))
+ }
+
+ pub fn f1 () {
+ struct Type(i8);
+
+ let x: u8 = 0;
+
+ let ct = ::Type;
+ let ctg = wrap(ct);
+ let m1t = ::mod1::Type(23, 97);
+ let m1tg = wrap(m1t);
+ let innert = super::Type(10101.5);
+ let innertg = wrap(innert);
+ let innestt = self::Type{x: 0xfff};
+ let innesttg = wrap(innestt);
+ let f1t = Type(9);
+ let f1tg = wrap(f1t);
+
+ let f2 = || println!("lambda f2");
+
+ f2(); // set breakpoint here
+ f3();
+ self::f2();
+ super::f2();
+ self::super::f2();
+ self::super::super::f2();
+ super::super::f2();
+ ::f2();
+ }
+
+ pub fn f2() {
+ println!("mod1::inner::innest::f2");
+ }
+
+ pub fn f3() {
+ println!("mod1::inner::innest::f3");
+ }
+ }
+
+ pub fn f2() {
+ println!("mod1::inner::f2");
+ }
+ }
+
+ pub fn f2() {
+ println!("mod1::f2");
+ }
+}
+
+fn main () {
+ mod1::inner::innest::f1();
+}