diff mbox

C++ PATCH for c++/71143, 71209 (bogus error with dependent base)

Message ID CADzB+2=burDs5Oou6VWMpBecOYQkG3oDmQDHD4CS-KeZheRF3Q@mail.gmail.com
State New
Headers show

Commit Message

Jason Merrill June 17, 2016, 4:35 p.m. UTC
Now that we have stopped treating *this as a dependent scope, we need
to avoid giving errors for not finding things when we have dependent
bases.

Tested x86_64-pc-linux-gnu, applying to trunk.
commit d553bc7ff104a8d973c3f48c005457038422db26
Author: Jason Merrill <jason@redhat.com>
Date:   Fri Jun 17 12:16:00 2016 -0400

    	PR c++/71209 - wrong error with dependent base
    
    	* typeck.c (finish_class_member_access_expr): Avoid "not a base"
    	warning when there are dependent bases.
diff mbox

Patch

diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 2ccd2da..3704b88 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -2797,6 +2797,8 @@  finish_class_member_access_expr (cp_expr object, tree name, bool template_p,
 	    return error_mark_node;
 	  if (!access_path)
 	    {
+	      if (any_dependent_bases_p (object_type))
+		goto dependent;
 	      if (complain & tf_error)
 		error ("%qT is not a base of %qT", scope, object_type);
 	      return error_mark_node;
diff --git a/gcc/testsuite/g++.dg/template/dependent-base1.C b/gcc/testsuite/g++.dg/template/dependent-base1.C
new file mode 100644
index 0000000..392305b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/dependent-base1.C
@@ -0,0 +1,10 @@ 
+// PR c++/71209
+
+struct A {
+  int table_clear;
+};
+
+template <typename T>
+struct B : T {
+  B() { this->A::table_clear; }
+};