From: Gabriel Dos Reis Date: Thu, 15 Aug 2002 11:42:51 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: releases/gcc-3.3.0~3267 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e8fe46d4d64b4e482d7688ee59c39770ab95a5bd;p=thirdparty%2Fgcc.git *** empty log message *** From-SVN: r56347 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 27e5bc72e8a8..7f3c144ae2a5 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2002-08-15 Gabriel Dos Reis + + Fix PR/7504 + * parse.y (parse_finish_call_expr): Handle incomplete + type used to name a scope. + 2002-08-15 Nathan Sidwell PR c++/7598 diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index 4fc870669bc7..02a69d8b4c40 100644 --- a/gcc/cp/parse.y +++ b/gcc/cp/parse.y @@ -4133,7 +4133,13 @@ parse_finish_call_expr (tree fn, tree args, int koenig) fn = lookup_namespace_name (scope, name); else { - if (TREE_CODE (name) == TEMPLATE_ID_EXPR) + if (!COMPLETE_TYPE_P (scope) && !TYPE_BEING_DEFINED (scope)) + { + error ("incomplete type '%T' cannot be used to name a scope", + scope); + return error_mark_node; + } + else if (TREE_CODE (name) == TEMPLATE_ID_EXPR) { template_id = name; template_args = TREE_OPERAND (name, 1); diff --git a/gcc/testsuite/g++.dg/expr/member-of-incomplete-type-1.C b/gcc/testsuite/g++.dg/expr/member-of-incomplete-type-1.C new file mode 100644 index 000000000000..9fe65bc976ad --- /dev/null +++ b/gcc/testsuite/g++.dg/expr/member-of-incomplete-type-1.C @@ -0,0 +1,12 @@ +// Copyright (C) 2002 Free Software Foundation +// Origin: jmr@fulcrummicro.com +// Contributed by Gabriel Dos Reis + + +struct A; + +int main() +{ + A::g(); // { dg-error "incomplete" "" } +} +