+2001-01-23 Nathan Sidwell <nathan@codesourcery.com>
+
+ * decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC
+ indicates anything special about template depth. Make sure we
+ only count the user visible template classes.
+
2001-01-23 Nathan Sidwell <nathan@codesourcery.com>
* call.c (build_conv): Typo in comment.
the definition of `S<int>::f'. */
if (CLASSTYPE_TEMPLATE_INFO (t)
&& (CLASSTYPE_TEMPLATE_INSTANTIATION (t)
- || uses_template_parms (CLASSTYPE_TI_ARGS (t))))
+ || uses_template_parms (CLASSTYPE_TI_ARGS (t)))
+ && PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (t)))
template_count += 1;
t = TYPE_MAIN_DECL (t);
- if (DECL_LANG_SPECIFIC (t))
- t = DECL_CONTEXT (t);
- else
- t = NULL_TREE;
+ t = DECL_CONTEXT (t);
}
if (sname == NULL_TREE)
+2001-01-23 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.old-deja/g++.pt/spec37.C: New test.
+
2001-01-23 Nathan Sidwell <nathan@codesourcery.com>
* g++.old-deja/g++.pt/overload14.C: New test.
--- /dev/null
+// Build don't link:
+//
+// Copyright (C) 2000 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 21 Jan 2001 <nathan@codesourcery.com>
+
+// Bug 1728. We started sorting things when there were 7 fields. Our
+// template_count algorithm was rather fragile ...
+
+template <int dim> struct X
+{
+ struct Y
+ {
+ int x1;
+ int x2;
+ int x3;
+ int x4;
+ int x5;
+ int x6;
+ int x7;
+
+ void Foo ();
+ };
+};
+
+template <> void X<1>::Y::Foo () {}