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

# 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 ${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
#

