decl.c (grokdeclarator): Diagnose undefined template contexts.
cp: * decl.c (grokdeclarator): Diagnose undefined template contexts. testsuite: * g++.old-deja/g++.pt/incomplete1.C: New test. From-SVN: r37815
This commit is contained in:
parent
5ee4cc26fb
commit
eeb753839f
@ -1,3 +1,7 @@
|
||||
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
|
||||
|
@ -10995,8 +10995,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
|
||||
}
|
||||
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
|
||||
@ -11022,18 +11021,11 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
@ -1,3 +1,7 @@
|
||||
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.
|
||||
|
11
gcc/testsuite/g++.old-deja/g++.pt/incomplete1.C
Normal file
11
gcc/testsuite/g++.old-deja/g++.pt/incomplete1.C
Normal file
@ -0,0 +1,11 @@
|
||||
// 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
|
Loading…
Reference in New Issue
Block a user