| # This testcase is part of GDB, the GNU debugger. |
| |
| # Copyright 2012-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/>. |
| |
| # Test basic builtin types. |
| # NOTE: The tests here intentionally do not require a go compiler. |
| |
| load_lib "go.exp" |
| |
| if { [skip_go_tests] } { continue } |
| |
| proc test_integer_literal_types_accepted {} { |
| # Test various decimal values. |
| |
| gdb_test "pt 123" "type = int" |
| |
| gdb_test "pt void(42)" "type = void" |
| gdb_test "pt byte(42)" "type = uint8" |
| gdb_test "pt int(42)" "type = int" |
| gdb_test "pt uint(42)" "type = uint" |
| gdb_test "pt uintptr(42)" "type = uintptr" |
| |
| gdb_test "pt int8(42)" "type = int8" |
| gdb_test "pt int16(42)" "type = int16" |
| gdb_test "pt int32(42)" "type = int32" |
| gdb_test "pt int64(42)" "type = int64" |
| |
| gdb_test "pt uint8(42)" "type = uint8" |
| gdb_test "pt uint16(42)" "type = uint16" |
| gdb_test "pt uint32(42)" "type = uint32" |
| gdb_test "pt uint64(42)" "type = uint64" |
| } |
| |
| proc test_logical_literal_types_accepted {} { |
| # Test the only possible values for a logical, TRUE and FALSE. |
| |
| gdb_test "pt true" "type = bool" |
| gdb_test "pt false" "type = bool" |
| |
| gdb_test "pt bool(0)" "type = bool" |
| gdb_test "pt bool(1)" "type = bool" |
| } |
| |
| proc test_character_literal_types_accepted {} { |
| # Test various character values. |
| |
| gdb_test "pt 'a'" "type = char" |
| |
| # FIXME: Need more. |
| } |
| |
| proc test_string_literal_types_accepted {} { |
| # Test various string values. |
| |
| gdb_test "pt \"a simple string\"" "type = string" |
| gdb_test "pt `a simple raw string`" "type = string" |
| |
| # FIXME: Need more. |
| } |
| |
| proc test_float_literal_types_accepted {} { |
| # Test various floating point formats. |
| |
| gdb_test "pt .44" "type = float64" |
| gdb_test "pt 44.0" "type = float64" |
| gdb_test "pt 10e20" "type = float64" |
| gdb_test "pt 10E20" "type = float64" |
| |
| gdb_test "pt float32(.42)" "type = float32" |
| |
| gdb_test "pt float64(.42)" "type = float64" |
| } |
| |
| proc test_complex_literal_types_accepted {} { |
| # Test various complex formats. |
| |
| gdb_test "pt complex64(.42)" "type = complex64" |
| setup_xfail "*-*-*" |
| gdb_test "pt complex64(.42i1.0)" "type = complex64" |
| setup_xfail "*-*-*" |
| gdb_test "pt complex64(i1.0)" "type = complex64" |
| |
| gdb_test "pt complex128(.42)" "type = complex128" |
| setup_xfail "*-*-*" |
| gdb_test "pt complex128(.42i1.0)" "type = complex128" |
| setup_xfail "*-*-*" |
| gdb_test "pt complex128(i1.0)" "type = complex128" |
| } |
| |
| # Start with a fresh gdb. |
| |
| gdb_exit |
| gdb_start |
| gdb_reinitialize_dir $srcdir/$subdir |
| |
| if [set_lang_go] { |
| test_integer_literal_types_accepted |
| test_logical_literal_types_accepted |
| test_character_literal_types_accepted |
| test_string_literal_types_accepted |
| test_float_literal_types_accepted |
| test_complex_literal_types_accepted |
| } else { |
| warning "Go type tests suppressed." |
| } |