mirror of git://gcc.gnu.org/git/gcc.git
re PR c++/22172 (Internal compiler error, seg fault.)
2005-10-08 James A. Morrison <phython@gcc.gnu.org> PR c++/22172 * parser.c (cp_parser_postfix_expression) <RID_TYPENAME>: Treat nontype scopes as nondependent. From-SVN: r105120
This commit is contained in:
parent
5fa534e39e
commit
31e832d1f4
|
@ -1,3 +1,9 @@
|
||||||
|
2005-10-08 James A. Morrison <phython@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR c++/22172
|
||||||
|
* parser.c (cp_parser_postfix_expression) <RID_TYPENAME>: Treat nontype
|
||||||
|
scopes as nondependent.
|
||||||
|
|
||||||
2005-10-06 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
2005-10-06 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||||
|
|
||||||
* call.c (resolve_args): Remove redundant test.
|
* call.c (resolve_args): Remove redundant test.
|
||||||
|
|
|
@ -3986,8 +3986,9 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p)
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
/* If we look up a template-id in a non-dependent qualifying
|
/* If we look up a template-id in a non-dependent qualifying
|
||||||
scope, there's no need to create a dependent type. */
|
scope, there's no need to create a dependent type. */
|
||||||
else if (TREE_CODE (id) == TYPE_DECL
|
if (TREE_CODE (id) == TYPE_DECL
|
||||||
&& !dependent_type_p (parser->scope))
|
&& (!TYPE_P (scope)
|
||||||
|
|| !dependent_type_p (parser->scope)))
|
||||||
type = TREE_TYPE (id);
|
type = TREE_TYPE (id);
|
||||||
/* Create a TYPENAME_TYPE to represent the type to which the
|
/* Create a TYPENAME_TYPE to represent the type to which the
|
||||||
functional cast is being performed. */
|
functional cast is being performed. */
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2005-10-08 James A. Morrison <phython@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR c++/22172
|
||||||
|
* g++.dg/parse/crash30.C: New test.
|
||||||
|
|
||||||
2005-10-07 Richard Guenther <rguenther@suse.de>
|
2005-10-07 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
PR middle-end/24227
|
PR middle-end/24227
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
// { dg-do compile }
|
||||||
|
namespace N { template<int> struct A { operator int() const; }; }
|
||||||
|
namespace M { template<int> struct A {}; }
|
||||||
|
namespace P { typedef int I; }
|
||||||
|
|
||||||
|
template<typename> void foo()
|
||||||
|
{
|
||||||
|
+typename N::A<0>(); // { dg-bogus "expected" }
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename> void bar()
|
||||||
|
{
|
||||||
|
+typename M::A<0>; // { dg-error "expected" }
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T> void baz() {
|
||||||
|
typename P::I i; // { dg-bogus "expected" }
|
||||||
|
}
|
Loading…
Reference in New Issue