aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMike Stump <mrs@wrs.com>1999-12-03 03:31:44 +0000
committerMike Stump <mrs@gcc.gnu.org>1999-12-03 03:31:44 +0000
commit2fbfe9b812e266e823ba26d423587466f2b1ba4c (patch)
tree27873de9defd66eddec3c6d525eb56440f812c45 /gcc
parent38a7fbac35e914fb8a71c2ce9eb88c36f33fb808 (diff)
downloadgcc-2fbfe9b812e266e823ba26d423587466f2b1ba4c.zip
gcc-2fbfe9b812e266e823ba26d423587466f2b1ba4c.tar.gz
gcc-2fbfe9b812e266e823ba26d423587466f2b1ba4c.tar.bz2
Fix p24939.
From-SVN: r30765
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() { }