| # Copyright 2021 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/> . |
| |
| # Test using whatis and ptype on different configurations of dynamic |
| # types. |
| |
| if {[skip_fortran_tests]} { return -1 } |
| |
| standard_testfile ".f90" |
| load_lib fortran.exp |
| |
| if {[prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \ |
| {debug f90}]} { |
| return -1 |
| } |
| |
| if {![fortran_runto_main]} { |
| perror "Could not run to main." |
| continue |
| } |
| |
| gdb_breakpoint [gdb_get_line_number "Break Here"] |
| gdb_continue_to_breakpoint "Break Here" |
| |
| gdb_test "whatis var1" "type = real\\(kind=4\\) \\(3\\)" |
| gdb_test "whatis var2" "type = real\\(kind=4\\), allocatable \\(4\\)" |
| gdb_test "whatis var3" "type = Type type1" |
| gdb_test "whatis var4" "type = Type type2" |
| gdb_test "whatis var5" "type = Type type3" |
| gdb_test "whatis var6" "type = Type type4" |
| gdb_test "whatis var7" "type = Type type5" |
| gdb_test "ptype var1" "type = real\\(kind=4\\) \\(3\\)" |
| gdb_test "ptype var2" "type = real\\(kind=4\\), allocatable \\(4\\)" |
| gdb_test "ptype var3" \ |
| [ multi_line "type = Type type1" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " integer\\(kind=4\\) :: t1_i" \ |
| "End Type type1" ] |
| gdb_test "ptype var4" \ |
| [multi_line "type = Type type2" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " Type type1, allocatable :: t2_array\\(3\\)" \ |
| "End Type type2"] |
| gdb_test "ptype var5" \ |
| [ multi_line "type = Type type3" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " Type type1 :: t3_array\\(3\\)"\ |
| "End Type type3" ] |
| gdb_test "ptype var6" \ |
| [ multi_line "type = Type type4" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " Type type2, allocatable :: t4_array\\(3\\)" \ |
| "End Type type4" ] |
| gdb_test "ptype var7" \ |
| [ multi_line "type = Type type5" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " Type type2 :: t5_array\\(4\\)" \ |
| "End Type type5" ] |
| gdb_test "whatis var3%t1_i" "type = integer\\(kind=4\\)" |
| gdb_test "whatis var4%t2_array" "type = Type type1, allocatable \\(3\\)" |
| gdb_test "whatis var5%t3_array" "type = Type type1 \\(3\\)" |
| gdb_test "whatis var6%t4_array" "type = Type type2, allocatable \\(3\\)" |
| gdb_test "whatis var7%t5_array" "type = Type type2 \\(4\\)" |
| gdb_test "ptype var3%t1_i" "type = integer\\(kind=4\\)" |
| gdb_test "ptype var4%t2_array" [ multi_line "type = Type type1" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " integer\\(kind=4\\) :: t1_i" \ |
| "End Type type1, allocatable \\(3\\)" ] |
| gdb_test "ptype var5%t3_array" [ multi_line "type = Type type1" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " integer\\(kind=4\\) :: t1_i" \ |
| "End Type type1 \\(3\\)" ] |
| gdb_test "ptype var6%t4_array" \ |
| [ multi_line "type = Type type2" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " Type type1, allocatable :: t2_array\\(:\\)" \ |
| "End Type type2, allocatable \\(3\\)" ] |
| gdb_test "ptype var7%t5_array" \ |
| [ multi_line "type = Type type2" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " Type type1, allocatable :: t2_array\\(:\\)" \ |
| "End Type type2 \\(4\\)" ] |
| gdb_test "whatis var4%t2_array(1)" "type = Type type1" |
| gdb_test "whatis var5%t3_array(1)" "type = Type type1" |
| gdb_test "whatis var6%t4_array(1)" "type = Type type2" |
| gdb_test "whatis var7%t5_array(1)" "type = Type type2" |
| gdb_test "ptype var4%t2_array(1)" \ |
| [ multi_line "type = Type type1" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " integer\\(kind=4\\) :: t1_i" \ |
| "End Type type1" ] |
| gdb_test "ptype var5%t3_array(1)" \ |
| [ multi_line "type = Type type1" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " integer\\(kind=4\\) :: t1_i" \ |
| "End Type type1" ] |
| gdb_test "ptype var6%t4_array(1)" \ |
| [ multi_line "type = Type type2" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " Type type1, allocatable :: t2_array\\(2\\)" \ |
| "End Type type2" ] |
| gdb_test "ptype var7%t5_array(1)" \ |
| [ multi_line "type = Type type2" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " Type type1, allocatable :: t2_array\\(2\\)" \ |
| "End Type type2" ] |
| gdb_test "whatis var4%t2_array(1)%t1_i" "type = integer\\(kind=4\\)" |
| gdb_test "whatis var5%t3_array(1)%t1_i" "type = integer\\(kind=4\\)" |
| gdb_test "whatis var6%t4_array(1)%t2_array" \ |
| "type = Type type1, allocatable \\(2\\)" |
| gdb_test "whatis var7%t5_array(1)%t2_array" \ |
| "type = Type type1, allocatable \\(2\\)" |
| gdb_test "ptype var4%t2_array(1)%t1_i" "type = integer\\(kind=4\\)" |
| gdb_test "ptype var5%t3_array(1)%t1_i" "type = integer\\(kind=4\\)" |
| gdb_test "ptype var6%t4_array(1)%t2_array" \ |
| [ multi_line "type = Type type1" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " integer\\(kind=4\\) :: t1_i" \ |
| "End Type type1, allocatable \\(2\\)" ] |
| gdb_test "ptype var7%t5_array(1)%t2_array" \ |
| [ multi_line "type = Type type1" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " integer\\(kind=4\\) :: t1_i" \ |
| "End Type type1, allocatable \\(2\\)" ] |
| gdb_test "whatis var6%t4_array(1)%t2_array(1)" \ |
| "type = Type type1" |
| gdb_test "whatis var7%t5_array(1)%t2_array(1)" \ |
| "type = Type type1" |
| gdb_test "ptype var6%t4_array(1)%t2_array(1)" \ |
| [ multi_line \ |
| "type = Type type1" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " integer\\(kind=4\\) :: t1_i" \ |
| "End Type type1" ] |
| gdb_test "ptype var7%t5_array(1)%t2_array(1)" \ |
| [ multi_line \ |
| "type = Type type1" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " integer\\(kind=4\\) :: t1_i" \ |
| "End Type type1" ] |
| gdb_test "ptype var8%ptr_1%t2_array" \ |
| [ multi_line \ |
| "type = Type type1" \ |
| " integer\\(kind=4\\) :: spacer" \ |
| " integer\\(kind=4\\) :: t1_i" \ |
| "End Type type1, allocatable \\(3\\)" ] |