# This testcase is part of GDB, the GNU debugger. # Copyright 2012 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 . # 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." }