diff options
author | Gabriel Dos Reis <gdr@nerim.net> | 2002-08-15 11:42:51 +0000 |
---|---|---|
committer | Gabriel Dos Reis <gdr@gcc.gnu.org> | 2002-08-15 11:42:51 +0000 |
commit | e8fe46d4d64b4e482d7688ee59c39770ab95a5bd (patch) | |
tree | 932fed35b8959e38e8df7c752740193d91a038d3 /gcc | |
parent | eac5ce6c93ebae62a03b741975086d5b09151334 (diff) | |
download | gcc-e8fe46d4d64b4e482d7688ee59c39770ab95a5bd.zip gcc-e8fe46d4d64b4e482d7688ee59c39770ab95a5bd.tar.gz gcc-e8fe46d4d64b4e482d7688ee59c39770ab95a5bd.tar.bz2 |
*** empty log message ***
From-SVN: r56347
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/parse.y | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/expr/member-of-incomplete-type-1.C | 12 |
3 files changed, 25 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 27e5bc7..7f3c144 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2002-08-15 Gabriel Dos Reis <gdr@nerim.net> + + Fix PR/7504 + * parse.y (parse_finish_call_expr): Handle incomplete + type used to name a scope. + 2002-08-15 Nathan Sidwell <nathan@codesourcery.com> PR c++/7598 diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index 4fc8706..02a69d8 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 0000000..9fe65bc --- /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 <gdr@integrable-solutions.net> + + +struct A; + +int main() +{ + A::g(); // { dg-error "incomplete" "" } +} + |