Commit 5a887be7 by Jason Merrill Committed by Jason Merrill

PR c++/189, c++/9937, c++/13950, DR 176

	PR c++/189, c++/9937, c++/13950, DR 176
	* g++.dg/tc1/dr176.C: Adjust.

From-SVN: r154235
parent e91a8d0f
2009-11-16 Jason Merrill <jason@redhat.com> 2009-11-16 Jason Merrill <jason@redhat.com>
PR c++/13950, DR 176 PR c++/189, c++/9937, c++/13950, DR 176
* search.c (lookup_field_r): Allow lookup to find the * search.c (lookup_field_r): Allow lookup to find the
injected-class-name from a template base. injected-class-name from a template base.
(template_self_reference_p): Remove. (template_self_reference_p): Remove.
......
2009-11-16 Jason Merrill <jason@redhat.com> 2009-11-16 Jason Merrill <jason@redhat.com>
PR c++/13950 PR c++/189, c++/9937, c++/13950, DR 176
* g++.dg/tc1/dr176.C: Adjust.
* g++.dg/template/injected1.C: New. * g++.dg/template/injected1.C: New.
* g++.dg/template/inherit.C: Adjust. * g++.dg/template/inherit.C: Adjust.
* g++.old-deja/g++.brendan/crash56.C: Adjust. * g++.old-deja/g++.brendan/crash56.C: Adjust.
......
...@@ -10,19 +10,19 @@ namespace N1 { ...@@ -10,19 +10,19 @@ namespace N1 {
}; };
template <class T> struct Derived: public Base<T> { template <class T> struct Derived: public Base<T> {
Base* p; // { dg-bogus "" "injected class name in derived classes" { xfail *-*-* } } Base* p; // { dg-error "" "unqualified name binds to N1::Base" }
Base<T*>* p2; Base<T*>* p2;
typename Derived::Base* p3; // { dg-bogus "" "injected class name in derived classes" { xfail *-*-* } } typename Derived::Base* p3; // { dg-bogus "" "injected class name in derived classes" }
}; };
template struct Derived<void>; // { dg-bogus "instantiated from here" "everything should be looked up at parsing time (after DR224)" { xfail *-*-* } } template struct Derived<void>; // { dg-bogus "instantiated from here" "everything should be looked up at parsing time (after DR224)" }
} }
namespace N2 { namespace N2 {
template <class T> struct Base {}; template <class T> struct Base {};
template <class T> struct Derived: public Base<T> { template <class T> struct Derived: public Base<T> {
typename Derived::template Base<double>* p1; // { dg-bogus "" "" { xfail *-*-* } } typename Derived::template Base<double>* p1; // { dg-bogus "" "" }
}; };
template struct Derived<void>; template struct Derived<void>;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment