OSDN Git Service

cp:
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Aug 2004 09:04:06 +0000 (09:04 +0000)
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Aug 2004 09:04:06 +0000 (09:04 +0000)
        PR c++/17149
        * semantics.c (check_accessibility_of_qualified_id): Defer check
        if qualifying_type is a template parameter.
testsuite:
        PR c++/17149
        * g++.dg/template/access15.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86472 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/template/access15.C [new file with mode: 0644]

index 7e013c7..ddeb19e 100644 (file)
@@ -1,3 +1,9 @@
+2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/17149
+       * semantics.c (check_accessibility_of_qualified_id): Defer check
+       if qualifying_type is a template parameter.
+
 2004-08-23  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/17163
@@ -11,7 +17,7 @@
        Revert:
        2004-08-22  Andrew Pinski  <apinski@apple.com>
        PR c++/14029
-       * typeck.c (build_unary_op): Use &a.b if the foldded lowered
+       * typeck.c (build_unary_op): Use &a.b if the folded lowered
        expression is not constant.
 
 2004-08-23  Nathan Sidwell  <nathan@codesourcery.com>
@@ -23,7 +29,7 @@
 2004-08-22  Andrew Pinski  <apinski@apple.com>
 
        PR c++/14029
-       * typeck.c (build_unary_op): Use &a.b if the foldded lowered
+       * typeck.c (build_unary_op): Use &a.b if the folded lowered
        expression is not constant.
 
 2004-08-20  Mark Mitchell  <mark@codesourcery.com>
index 302d00e..b221cd2 100644 (file)
@@ -1384,7 +1384,9 @@ check_accessibility_of_qualified_id (tree decl,
        its bases.  */
     qualifying_type = currently_open_derived_class (scope);
 
-  if (qualifying_type)
+  if (qualifying_type && IS_AGGR_TYPE_CODE (TREE_CODE (qualifying_type)))
+    /* It is possible for qualifying type to be a TEMPLATE_TYPE_PARM
+       or similar in a default argument value.  */
     perform_or_defer_access_check (TYPE_BINFO (qualifying_type), decl);
 }
 
index 343d3bb..59138e2 100644 (file)
@@ -1,3 +1,8 @@
+2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/17149
+       * g++.dg/template/access15.C: New.
+
 2004-08-23  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/17163
diff --git a/gcc/testsuite/g++.dg/template/access15.C b/gcc/testsuite/g++.dg/template/access15.C
new file mode 100644 (file)
index 0000000..e287163
--- /dev/null
@@ -0,0 +1,12 @@
+// { dg-do compile }
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 23 Aug 2004 <nathan@codesourcery.com>
+// Origin: stefaandr@hotmail.com
+
+// Bug 17149: ICE with TEMPLATE_TYPE_PARM
+
+
+template <class super,
+         int (super::tdata::*member)() const = &super::tdata::operator()>
+struct x {};