[gnu.g++.bug] more BUG

rfg@MCC.COM (Ron Guilmette) (04/22/89)

In the following sourec file, G++ 1.35.0 (pre-release) fails to
diagnose all of the errors indicated.  Also, the error mesages
which are produced are confusing in two respects.  First, there
is the message "In function void _GLOBAL_$I$b037_C ():".  Shouldn't
that say "At top level"?  Also, some of the messages just say
"within this context".  I guess that these are supposed to be a
continuation of the preceeding messages, but it's hard to tell.

b037 had missed error(s) as follows:
	10: 	class1 ();				// ERROR
	32: 	c1p = new class1;			// ERROR
	33: 	c2p = new class2;			// ERROR
b037: FAILED

------------------------------------------------------------------
// Check that it is illegal to declare or to invoke (explicitly or
// implicitly) a "default" constructor for a class type within the
// private part of the given class if the given class has no friends.
//
// Cases:
//	constructor with no arguments
//	constructor with all defautable arguments

class class1 {
	class1 ();				// ERROR
public:
	class1 (int i);
};

class class2 {
	class2 (int i = 22, int j = 33);	// ERROR
public:
	class2 (float f, float g);
};

class1 global_class1_object;			// ERROR
class2 global_class2_object;			// ERROR

class1* c1p;
class2* c2p;

int test ()
{
	class1 local_class1_object;		// ERROR
	class2 local_class2_object;		// ERROR

	c1p = new class1;			// ERROR
	c2p = new class2;			// ERROR

	c1p = &local_class1_object;		// avoid warnings
	c2p = &local_class2_object;		// avoid warnings

	return 0;
}
----------------------------------------------------------------------
/usr/local/src/src/g++/build/sun3/1.35-.0-.0/g++ -B/usr/local/src/src/g++/build/sun3/1.35-.0-.0/ -Wall -Wwrite-strings -S -v b037.C
g++ version 1.35.0-
 /usr/local/src/src/g++/build/sun3/1.35-.0-.0/cpp -+ -v -undef -D__GNU__ -D__GNUG__ -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -Wall -D__HAVE_68881__ -Dmc68020 b037.C /tmp/cca16019.cpp
GNU CPP version 1.35.0-
 /usr/local/src/src/g++/build/sun3/1.35-.0-.0/c++ /tmp/cca16019.cpp -quiet -dumpbase b037.C -Wall -Wwrite-strings -noreg -version -o b037.s
GNU C++ version 1.35.0- (68k, MIT syntax) compiled by GNU C version 1.34.1.
In function int test ():
b037.C:29: constructor `struct class1 *class1::class1 ()' is private
b037.C:16: the constructor struct class2 *class2::class2 (int (=  22 ), int (=  33 )) is private
b037.C:30: within this context
In function void _GLOBAL_$I$b037_C ():
b037.C:21: constructor `struct class1 *class1::class1 ()' is private
b037.C:16: the constructor struct class2 *class2::class2 (int (=  22 ), int (=  33 )) is private
b037.C:22: within this context