summaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.fortran
diff options
context:
space:
mode:
authorKeven Boell <keven.boell@intel.com>2013-10-25 12:10:57 +0100
committerKeven Boell <keven.boell@intel.com>2013-12-19 13:18:11 +0100
commit7f9b20bb352768e14cfa7361a82373b8539bebed (patch)
tree34deb1ab6cadd180d1b66111fb3b8c98685e6879 /gdb/testsuite/gdb.fortran
parentf6ec89e7bc631c0bd48cb6c4b960b29266e19550 (diff)
fortran: enable ptype/whatis for user defined types.
(gdb) ptype type old> No symbol "type" in current context. new> type = Type type integer(kind=4) :: t_i End Type type 2013-11-19 Sanimir Agovic <sanimir.agovic@intel.com> Keven Boell <keven.boell@intel.com> * f-exp.y (yylex): Add domain array to enable lookup in multiple domains. Loop over lookup domains and try to find requested symbol. Add STRUCT_DOMAIN to lookup domains to be able to query for user defined types. testsuite/ * gdb.fortran/type.f90: New file. * gdb.fortran/whatis_type.f90: New file.
Diffstat (limited to 'gdb/testsuite/gdb.fortran')
-rw-r--r--gdb/testsuite/gdb.fortran/type.f9028
-rw-r--r--gdb/testsuite/gdb.fortran/whatis_type.exp48
2 files changed, 76 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.fortran/type.f90 b/gdb/testsuite/gdb.fortran/type.f90
new file mode 100644
index 0000000000..e0c699e19a
--- /dev/null
+++ b/gdb/testsuite/gdb.fortran/type.f90
@@ -0,0 +1,28 @@
+! Copyright 2013 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/>.
+
+program type
+ implicit none
+
+ type :: t1
+ integer :: t1_i
+ real :: t1_r
+ end type t1
+
+ type (t1) :: t1v
+
+ t1v%t1_i = 42
+ t1v%t1_r = 42.24 ! bp1
+end program type
diff --git a/gdb/testsuite/gdb.fortran/whatis_type.exp b/gdb/testsuite/gdb.fortran/whatis_type.exp
new file mode 100644
index 0000000000..9d6151f0a1
--- /dev/null
+++ b/gdb/testsuite/gdb.fortran/whatis_type.exp
@@ -0,0 +1,48 @@
+# Copyright 2013 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/>.
+
+if { [skip_fortran_tests] } { continue }
+
+standard_testfile type.f90
+
+if { [prepare_for_testing ${testfile}.exp ${testfile} \
+ ${srcfile} {debug f90}] } {
+ return -1
+}
+
+if ![runto MAIN__] {
+ fail "run to MAIN__"
+ return
+}
+
+gdb_breakpoint [gdb_get_line_number "bp1"]
+gdb_continue_to_breakpoint "bp1"
+
+set t1_i "integer\\\(kind=4\\\) :: t1_i"
+set t1_r "real\\\(kind=4\\\) :: t1_r"
+
+gdb_test "whatis t1" \
+ "type = Type t1\r\n${t1_i}\r\n${t1_r}\r\nEnd Type t1" \
+ "whatis t1"
+gdb_test "whatis t1v" \
+ "type = Type t1\r\n${t1_i}\r\n${t1_r}\r\nEnd Type t1" \
+ "whatis t1v"
+
+gdb_test "ptype t1" \
+ "type = Type t1\r\n ${t1_i}\r\n ${t1_r}\r\nEnd Type t1" \
+ "ptype t1"
+gdb_test "ptype t1v" \
+ "type = Type t1\r\n ${t1_i}\r\n ${t1_r}\r\nEnd Type t1" \
+ "ptype t1v"