#   Copyright (C) 2001-2025 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/>.

# Written by Michael Snyder, Red Hat, Inc., 9/20/2001

# This file is part of the gdb testsuite
# Tests for type expressions using the new "@code" and "@data" modifiers.

#
# test running programs
#

standard_testfile cvexpr.c

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
     untested "failed to compile"
     return -1
}

clean_restart
gdb_load $binfile

gdb_test_no_output "set print sevenbit-strings"
gdb_test_no_output "set print address off"
gdb_test_no_output "set width 0"

set ws  "\[ \t\]*"

#
# Test casting a scalar to const
#

gdb_test "whatis (@code char) v_char" \
	"type = @code char" \
	"(@code char)"
gdb_test "whatis (@code signed char) v_signed_char" \
	"type = @code signed char" \
	"(@code signed char)"
gdb_test "whatis (@code unsigned char) v_unsigned_char" \
	"type = @code (unsigned char|char)" \
	"(@code unsigned char)"
gdb_test "whatis (@code short) v_short" \
	"type = @code (short|short int)" \
	"(@code short)"
gdb_test "whatis (@code signed short) v_signed_short" \
	"type = @code (short|short int|signed short|signed short int)" \
	"(@code signed short)"
gdb_test "whatis (@code unsigned short) v_unsigned_short" \
	"type = @code (unsigned short|short unsigned int)" \
	"(@code unsigned short)"
gdb_test "whatis (@code int) v_int" \
	"type = @code int" \
	"(@code int)"
gdb_test "whatis (@code signed int) v_signed_int" \
	"type = @code (signed int|int)" \
	"(@code signed int)"
gdb_test "whatis (@code unsigned int) v_unsigned_int" \
	"type = @code unsigned int" \
	"(@code unsigned int)"
gdb_test "whatis (@code long) v_long" \
	"type = @code (long|long int)" \
	"(@code long)"
gdb_test "whatis (@code signed long) v_signed_long" \
	"type = @code (signed |)long( int|)" \
	"(@code signed long)"
gdb_test "whatis (@code unsigned long) v_unsigned_long" \
	"type = @code (unsigned long|long unsigned int)" \
	"(@code unsigned long)"
gdb_test "whatis (@code long long) v_long_long" \
	"type = @code long long( int|)" \
	"(@code long long)"
gdb_test "whatis (@code signed long long) v_signed_long_long" \
	"type = @code (signed |)long long( int|)" \
	"(@code signed long long)"
gdb_test "whatis (@code unsigned long long) v_unsigned_long_long" \
	"type = @code (unsigned long long|long long unsigned int)" \
	"(@code unsigned long long)"
gdb_test "whatis (@code float) v_float" \
	"type = @code float" \
	"(@code float)"
gdb_test "whatis (@code double) v_double" \
	"type = @code double" \
	"(@code double)"

#
# Test casting a scalar to @data
#

gdb_test "whatis (@data char) v_char" \
	"type = @data char" \
	"(@data char)"
gdb_test "whatis (@data signed char) v_signed_char" \
	"type = @data signed char" \
	"(@data signed char)"
gdb_test "whatis (@data unsigned char) v_unsigned_char" \
	"type = @data (unsigned char|char)" \
	"(@data unsigned char)"
gdb_test "whatis (@data short) v_short" \
	"type = @data (short|short int)" \
	"(@data short)"
gdb_test "whatis (@data signed short) v_signed_short" \
	"type = @data (short|short int|signed short|signed short int)" \
	"(@data signed short)"
gdb_test "whatis (@data unsigned short) v_unsigned_short" \
	"type = @data (unsigned short|short unsigned int)" \
	"(@data unsigned short)"
gdb_test "whatis (@data int) v_int" \
	"type = @data int" \
	"(@data int)"
gdb_test "whatis (@data signed int) v_signed_int" \
	"type = @data (signed int|int)" \
	"(@data signed int)"
gdb_test "whatis (@data unsigned int) v_unsigned_int" \
	"type = @data unsigned int" \
	"(@data unsigned int)"
gdb_test "whatis (@data long) v_long" \
	"type = @data (long|long int)" \
	"(@data long)"
gdb_test "whatis (@data signed long) v_signed_long" \
	"type = @data (signed |)long( int|)" \
	"(@data signed long)"
gdb_test "whatis (@data unsigned long) v_unsigned_long" \
	"type = @data (unsigned long|long unsigned int)" \
	"(@data unsigned long)"
gdb_test "whatis (@data long long) v_long_long" \
	"type = @data long long( int|)" \
	"(@data long long)"
gdb_test "whatis (@data signed long long) v_signed_long_long" \
	"type = @data (signed |)long long( int|)" \
	"(@data signed long long)"
gdb_test "whatis (@data unsigned long long) v_unsigned_long_long" \
	"type = @data (unsigned long long|long long unsigned int)" \
	"(@data unsigned long long)"
gdb_test "whatis (@data float) v_float" \
	"type = @data float" \
	"(@data float)"
gdb_test "whatis (@data double) v_double" \
	"type = @data double" \
	"(@data double)"

#
# Now put the '@code' and '@data' keywords after the base type.
#

gdb_test "whatis (char @code) v_char" \
	"type = @code char" \
	"(char @code)"
gdb_test "whatis (signed char @code) v_signed_char" \
	"type = @code signed char" \
	"(signed char @code)"
gdb_test "whatis (unsigned char @code) v_unsigned_char" \
	"type = @code (unsigned char|char)" \
	"(unsigned char @code)"
gdb_test "whatis (short @code) v_short" \
	"type = @code (short|short int)" \
	"(short @code)"
gdb_test "whatis (signed short @code) v_signed_short" \
	"type = @code (short|short int|signed short|signed short int)" \
	"(signed short @code)"
gdb_test "whatis (unsigned short @code) v_unsigned_short" \
	"type = @code (unsigned short|short unsigned int)" \
	"(unsigned short @code)"
gdb_test "whatis (int @code) v_int" \
	"type = @code int" \
	"(int @code)"
gdb_test "whatis (signed int @code) v_signed_int" \
	"type = @code (signed int|int)" \
	"(signed int @code)"
gdb_test "whatis (unsigned int @code) v_unsigned_int" \
	"type = @code unsigned int" \
	"(unsigned int @code)"
gdb_test "whatis (long @code) v_long" \
	"type = @code (long|long int)" \
	"(long @code)"
gdb_test "whatis (signed long @code) v_signed_long" \
	"type = @code (signed |)long( int|)" \
	"(signed long @code)"
gdb_test "whatis (unsigned long @code) v_unsigned_long" \
	"type = @code (unsigned long|long unsigned int)" \
	"(unsigned long @code)"
gdb_test "whatis (long long @code) v_long_long" \
	"type = @code long long( int|)" \
	"(long long @code)"
gdb_test "whatis (signed long long @code) v_signed_long_long" \
	"type = @code (signed |)long long( int|)" \
	"(signed long long @code)"
gdb_test "whatis (unsigned long long @code) v_unsigned_long_long" \
	"type = @code (unsigned long long|long long unsigned int)" \
	"(unsigned long long @code)"
gdb_test "whatis (float @code) v_float" \
	"type = @code float" \
	"(float @code)"
gdb_test "whatis (double @code) v_double" \
	"type = @code double" \
	"(double @code)"

gdb_test "whatis (char @data) v_char" \
	"type = @data char" \
	"(char @data)"
gdb_test "whatis (signed char @data) v_signed_char" \
	"type = @data signed char" \
	"(signed char @data)"
gdb_test "whatis (unsigned char @data) v_unsigned_char" \
	"type = @data (unsigned char|char)" \
	"(unsigned char @data)"
gdb_test "whatis (short @data) v_short" \
	"type = @data (short|short int)" \
	"(short @data)"
gdb_test "whatis (signed short @data) v_signed_short" \
	"type = @data (short|short int|signed short|signed short int)" \
	"(signed short @data)"
gdb_test "whatis (unsigned short @data) v_unsigned_short" \
	"type = @data (unsigned short|short unsigned int)" \
	"(unsigned short @data)"
gdb_test "whatis (int @data) v_int" \
	"type = @data int" \
	"(int @data)"
gdb_test "whatis (signed int @data) v_signed_int" \
	"type = @data (signed int|int)" \
	"(signed int @data)"
gdb_test "whatis (unsigned int @data) v_unsigned_int" \
	"type = @data unsigned int" \
	"(unsigned int @data)"
gdb_test "whatis (long @data) v_long" \
	"type = @data (long|long int)" \
	"(long @data)"
gdb_test "whatis (signed long @data) v_signed_long" \
	"type = @data (signed |)long( int|)" \
	"(signed long @data)"
gdb_test "whatis (unsigned long @data) v_unsigned_long" \
	"type = @data (unsigned long|long unsigned int)" \
	"(unsigned long @data)"
gdb_test "whatis (long long @data) v_long_long" \
	"type = @data long long( int|)" \
	"(long long @data)"
gdb_test "whatis (signed long long @data) v_signed_long_long" \
	"type = @data (signed |)long long( int|)" \
	"(signed long long @data)"
gdb_test "whatis (unsigned long long @data) v_unsigned_long_long" \
	"type = @data (unsigned long long|long long unsigned int)" \
	"(unsigned long long @data)"
gdb_test "whatis (float @data) v_float" \
	"type = @data float" \
	"(float @data)"
gdb_test "whatis (double @data) v_double" \
	"type = @data double" \
	"(double @data)"

#
# enums
#

gdb_test "whatis (@code enum misordered) v_misordered" \
	"type = @code enum misordered" \
	"(@code enum misordered)"
gdb_test "whatis (enum misordered @code) v_misordered" \
	"type = @code enum misordered" \
	"(enum misordered @code)"
gdb_test "whatis (@data enum misordered) v_misordered" \
	"type = @data enum misordered" \
	"(@data enum misordered)"
gdb_test "whatis (enum misordered @data) v_misordered" \
	"type = @data enum misordered" \
	"(enum misordered @data)"

#
# Pointers
#

gdb_test "whatis (@code int *) v_int_pointer" \
	"type = @code int${ws}\\*" \
	"(@code int *)"
gdb_test "whatis (int @code *) v_int_pointer" \
	"type = @code int${ws}\\*" \
	"(int @code *)"
gdb_test "whatis (int * @code) v_int_pointer" \
	"type = int \\*${ws}@code" \
	"(int * @code)"
gdb_test "whatis (@code int * @code) v_int_pointer" \
	"type = @code int${ws}\\*${ws}@code" \
	"(@code int * @code)"
gdb_test "whatis (int @code * @code) v_int_pointer" \
	"type = @code int${ws}\\*${ws}@code" \
	"(int @code * @code)"

gdb_test "whatis (@code int **) v_int_pointer_pointer" \
	"type = @code int${ws}\\*${ws}\\*" \
	"(@code int **)"
gdb_test "whatis (int @code **) v_int_pointer_pointer" \
	"type = @code int${ws}\\*${ws}\\*" \
	"(int @code **)"
gdb_test "whatis (int ** @code) v_int_pointer_pointer" \
	"type = int \\*${ws}\\*${ws}@code" \
	"(int ** @code)"
gdb_test "whatis (@code int * @code *) v_int_pointer_pointer" \
	"type = @code int${ws}\\*${ws}@code${ws}\\*" \
	"(@code int * @code *)"
gdb_test "whatis (int @code * @code *) v_int_pointer_pointer" \
	"type = @code int${ws}\\*${ws}@code${ws}\\*" \
	"(int @code * @code *)"
gdb_test "whatis (@code int * @code * @code) v_int_pointer_pointer" \
	"type = @code int${ws}\\*${ws}@code${ws}\\*${ws}@code" \
	"(@code int * @code * @code)"
gdb_test "whatis (int @code * @code * @code) v_int_pointer_pointer" \
	"type = @code int${ws}\\*${ws}@code${ws}\\*${ws}@code" \
	"(int @code * @code * @code)"

#
# Arrays TODO
#

#
# Pointers to arrays, arrays of pointers TODO
#

#
# Structs and Unions
#

gdb_test "whatis (@code struct t_struct) v_struct1" \
	"type = @code struct t_struct" \
	"(@code struct t_struct)"
gdb_test "whatis (@code union t_union) v_union" \
	"type = @code union t_union" \
	"(@code union t_union)"
gdb_test "whatis (struct t_struct @code) v_struct1" \
	"type = @code struct t_struct" \
	"(struct t_struct @code)"
gdb_test "whatis (union t_union @code) v_union" \
	"type = @code union t_union" \
	"(union t_union @code)"
gdb_test "whatis (@code struct t_struct *) &v_struct1" \
	"type = @code struct t_struct${ws}\\*" \
	"(@code struct t_struct *)"
gdb_test "whatis (@code union t_union *) &v_union" \
	"type = @code union t_union${ws}\\*" \
	"(@code union t_union *)"
gdb_test "whatis (struct t_struct @code *) &v_struct1" \
	"type = @code struct t_struct${ws}\\*" \
	"(struct t_struct @code *)"
gdb_test "whatis (union t_union @code *) &v_union" \
	"type = @code union t_union${ws}\\*" \
	"(union t_union @code *)"
gdb_test "whatis (struct t_struct * @code) &v_struct1" \
	"type = struct t_struct${ws}\\*${ws}@code" \
	"(struct t_struct * @code)"
gdb_test "whatis (union t_union * @code) &v_union" \
	"type = union t_union${ws}\\*${ws}@code" \
	"(union t_union * @code)"
gdb_test "whatis (@code struct t_struct * @code) &v_struct1" \
	"type = @code struct t_struct${ws}\\*${ws}@code" \
	"(@code struct t_struct * @code)"
gdb_test "whatis (@code union t_union * @code) &v_union" \
	"type = @code union t_union${ws}\\*${ws}@code" \
	"(@code union t_union * @code)"
gdb_test "whatis (struct t_struct @code * @code) &v_struct1" \
	"type = @code struct t_struct${ws}\\*${ws}@code" \
	"(struct t_struct @code * @code)"
gdb_test "whatis (union t_union @code * @code) &v_union" \
	"type = @code union t_union${ws}\\*${ws}@code" \
	"(union t_union @code * @code)"

#
# Function pointers TODO
#

