Re: [cplus] An initial use of the canonicalizer

Daniel Jacobowitz
2003-12-31T14:04:21Z

On Tue, Dec 30, 2003 at 11:11:40PM -0500, Michael Chastain wrote:
> > So if we're printing <int, 33> somewhere and <int,33> somewhere else,
> > that will be a bug. So I'd write all the tests to match <int, 33> only.
> >
> > That's the theory I'm going by at the moment at least.
>
> That's a point in favor of accepting only "<int,33>".
>
> However, I'm going to need to check gdb 6.0 against gdb-6_1-branch
> eventually. It will help if I can run some of the same test scripts
> from gdb-6_1-branch to check for regressions. That's why I want
> "<int, ?33>", even though it fuzzes the test a little.
>
> So I guess we're in disagreement here.

As I said, the choices are:
- Being able to test vs. 6.1
- Being able to verify that our output is consistently formatted

I guess I'll go with (A) until after the next GDB release and then
clean up any remaining formatting problems. This makes the testsuite
less useful for my development so I'll probably do (B) in
drow-cplus-branch.

> And man is there a mountain of much worse problems in gdb.cp/*.exp
> right now. I'm checking classes.exp and it's full of stuff like:
>
> "int i;{$ws};int j;.*\}\n$gdb_prompt$ "
>
> Can you do anything about this:
>
> (gdb) ptype class whatever
> type = class whatever {
> public:
> int i;
> int j;
>
> public:
> whatever & operator=(whatever const &);
> whatever(whatever const &);
> whatever();
> }
>
> The implicit functions appear with -gstabs+ and do not appear
> with -gdwarf-2. This causes either a whole lot of extra pattern
> lines or a lot of "int j;.*\}". I have low tolerance for ".*"
> in a test pattern!

It can't be fixed. I spent a miserable long time last year trying.
There's not enough information to figure out whether the constructor is
explicit or implicit. Just write out the operators inside ()? instead,
in the testcase.