[comp.lang.c++] some bugs

eppstein@garfield.columbia.edu.UUCP (09/13/87)

(1) The following program:

    int * foo()
    {
	return (1 ? 0 : foo);
    }

gives the error

    "t1.c", line 3: internal <<cfront 05/20/86>> error: zero( 108)

(obviously there should be an error message but not that one).

            ------------            ------------

(2) The following program:

    void foo(int a)
    {
	switch (a) {
	case 1:
	    if (a) {
		foo(0);
		static const char * s = 0;
	    }
	}
    }

gives the error

    "t2.c", line 7: sorry, not implemented: non trivial declaration in
	switch statement (try enclosing it in a block)

If I do as it says the error goes away, but it's already enclosed in the
block of the if statement and shouldn't need another.

            ------------            ------------

(3) I have a large program in which cfront mysteriously changes the
expected type of the first argument of one of my member functions from
(my_class &) to (ostream *); thus I get an error when I call it the way
I expected rather than the new way cfront expects.  At one point with a
slightly different version of the code it instead changed it to
(char[3]).  This happens between two successive uses of the function
(i.e. the first call from within the previous function gets through
without complaint); not much happens between the two calls.  Is this a
known bug?  If not I can mail a copy of the code itself, but it's pretty
long and currently pretty rough.  I don't know how to make this one into
a small test program like the other two above.
-- 
David Eppstein, eppstein@cs.columbia.edu, Columbia U. Computer Science Dept.