Re: C++ testsuite changes

Michael Elizabeth Chastain
2004-01-01T22:41:22Z

Okay, this fixes the ERROR/UNRESOLVED problem on my system
when I use the sourceware version of 'expect'. It replaces one level of
"(void|)" alternative with more alternatives at a higher level.

Mark, can you try this?

2004-01-01 Michael Chastain <mec.gnu@mindspring.com>

* gdb.cp/virtfunc.exp: Modify some patterns to avoid a
mysterious bug with sourceware version of expect.

Index: virtfunc.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/virtfunc.exp,v
retrieving revision 1.3
diff -c -3 -p -r1.3 virtfunc.exp
*** virtfunc.exp 1 Jan 2004 02:30:59 -0000 1.3
--- virtfunc.exp 1 Jan 2004 22:34:18 -0000
***************
*** 1,4 ****
! # Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003
# Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
--- 1,4 ----
! # Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004
# Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
*************** proc test_ptype_of_classes {} {
*** 330,343 ****
}

# class D

set re_class "class D : public AD, public virtual V \{(${ws}private:|)"
set re_vbptr "V \\*(_vb.1V|_vb.V);"
set re_fields "int d;"
! set re_methods "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);"
set re_synth_gcc_2 "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);"
set re_synth_gcc_3 "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);"
! set re_all_methods "($re_methods|$re_synth_gcc_2${ws}$re_methods|$re_synth_gcc_3${ws}$re_methods|$re_methods${ws}$re_synth_gcc_3)"

gdb_test_multiple "ptype D" "ptype D" {
-re "type = ${re_class}${ws}(${re_vbptr}${ws}|)public:${ws}${re_fields}${ws}${re_all_methods}$nl\}$nl$gdb_prompt $" {
--- 330,351 ----
}

# class D
+ #
+ # I wrote this differently from the others to avoid a problem with
+ # the sourceware version of expect, which dates from 1998.
+ # The bug manifests as ERROR/UNRESOLVED results after an "eof"
+ # in gdb_test_multiple.
+ #
+ # -- chastain 2004-01-01

set re_class "class D : public AD, public virtual V \{(${ws}private:|)"
set re_vbptr "V \\*(_vb.1V|_vb.V);"
set re_fields "int d;"
! set re_methods_2 "static void s\\(void\\);${ws}virtual int vg\\(void\\);${ws}virtual int vd\\(void\\);${ws}int fd\\(void\\);"
! set re_methods_3 "static void s\\(\\);${ws}virtual int vg\\(\\);${ws}virtual int vd\\(\\);${ws}int fd\\(\\);"
set re_synth_gcc_2 "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);"
set re_synth_gcc_3 "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);"
! set re_all_methods "($re_methods_2|$re_methods_3|$re_synth_gcc_2${ws}$re_methods_2|$re_synth_gcc_3${ws}$re_methods_3|$re_methods${ws}$re_synth_gcc_3)"

gdb_test_multiple "ptype D" "ptype D" {
-re "type = ${re_class}${ws}(${re_vbptr}${ws}|)public:${ws}${re_fields}${ws}${re_all_methods}$nl\}$nl$gdb_prompt $" {