+2000-11-28 Nathan Sidwell <nathan@codesourcery.com>
+
+ * decl.c (grokdeclarator): Diagnose undefined template contexts.
+
2000-11-28 Nathan Sidwell <nathan@codesourcery.com>
* decl.c (grokdeclarator): Do type access control on friend
}
else if (TREE_CODE (type) == FUNCTION_TYPE)
{
- if (current_class_type == NULL_TREE
- || friendp)
+ if (current_class_type == NULL_TREE || friendp)
type = build_cplus_method_type (ctype, TREE_TYPE (type),
TYPE_ARG_TYPES (type));
else
}
type = build_offset_type (ctype, type);
}
- else if (uses_template_parms (ctype))
- {
- if (TREE_CODE (type) == FUNCTION_TYPE)
- type
- = build_cplus_method_type (ctype, TREE_TYPE (type),
- TYPE_ARG_TYPES (type));
- }
else
- {
- cp_error ("structure `%T' not yet defined", ctype);
- return error_mark_node;
- }
+ {
+ incomplete_type_error (NULL_TREE, ctype);
+ return error_mark_node;
+ }
declarator = sname;
}
+2000-11-28 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.old-deja/g++.pt/incomplete1.C: New test.
+
2000-11-28 Nathan Sidwell <nathan@codesourcery.com>
* g++.old-deja/g++.other/friend9.C: New test.
--- /dev/null
+// Build don't link:
+
+// Copyright (C) 2000 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 28 Nov 2000 <nathan@codesourcery.com>
+
+// Inspired by by 756. We'd ICE when trying to define a member of an
+// incomplete template type.
+
+template<class X> struct ObjCount; // ERROR - forward decl
+
+template<class X> int ObjCount<X>::m; // ERROR - undefined type