+2000-08-11 Jason Merrill <jason@redhat.com>
+
+ * decl.c (lookup_name_real): Don't forget the TYPENAME_TYPE we're
+ looking inside.
+
2000-08-11 Nathan Sidwell <nathan@codesourcery.com>
* cp-tree.h (resolve_scope_to_name): Remove unused prototype.
* semantics.c (emit_associated_thunks): New function.
(expand_body): Use it.
* ir.texi: Adjust decriptions of thunks.
-
+
2000-06-22 Jason Merrill <jason@redhat.com>
* pt.c (tsubst_decl, case FUNCTION_DECL): Clear DECL_SAVED_TREE.
{
val = lookup_member (type, name, 0, prefer_type);
type_access_control (type, val);
+
+ /* Restore the containing TYPENAME_TYPE if we looked
+ through it before. */
+ if (got_scope && got_scope != type
+ && val && TREE_CODE (val) == TYPE_DECL
+ && TREE_CODE (TREE_TYPE (val)) == TYPENAME_TYPE)
+ TYPE_CONTEXT (TREE_TYPE (val)) = got_scope;
}
}
else
--- /dev/null
+// Bug: g++ forgets about the instantiation of class1 when looking up
+// class11_value, and tries to look things up in class1<class2>.
+
+// Special g++ Options:
+
+template<class ItIsInt>
+struct class1 {
+ struct class11 {
+ typedef ItIsInt class11_value;
+ };
+};
+
+template<class ItIsClass2>
+struct class3 {
+ int f();
+};
+
+template<class ItIsClass2>
+int class3<ItIsClass2>::f()
+{
+ return class1<typename ItIsClass2::class2_value>::class11::class11_value(10);
+}
+
+struct class2 {
+ typedef int class2_value;
+};
+
+int main()
+{
+ class3<class2> the_class3;
+ the_class3.f();
+}