aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/init.c3
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/s24939.C13
3 files changed, 20 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index db5dad4..5e34a57 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+1999-12-02 Mike Stump <mrs@wrs.com>
+
+ * init.c (perform_member_init): Handle parse errors better.
+
1999-12-01 Mark Mitchell <mark@codesourcery.com>
* cp-tree.h (min_tree_cons): Remove.
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 639087a..b0be498 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -144,6 +144,9 @@ perform_member_init (member, name, init, explicit)
decl = build_component_ref (current_class_ref, name, NULL_TREE, explicit);
+ if (decl == error_mark_node)
+ return;
+
/* Deal with this here, as we will get confused if we try to call the
assignment op for an anonymous union. This can happen in a
synthesized copy constructor. */
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/s24939.C b/gcc/testsuite/g++.old-deja/g++.mike/s24939.C
new file mode 100644
index 0000000..3ed8fd1
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.mike/s24939.C
@@ -0,0 +1,13 @@
+// Build don't link:
+
+class A;
+
+class B {
+public:
+ B();
+private:
+ A a; // ERROR -
+};
+
+class A { };
+B::B() { }