diff options
author | Giovanni Bajo <giovannibajo@gcc.gnu.org> | 2004-01-15 23:41:41 +0000 |
---|---|---|
committer | Giovanni Bajo <giovannibajo@gcc.gnu.org> | 2004-01-15 23:41:41 +0000 |
commit | 21b34b9c09fe1e62446820345b82ac0cabe284c3 (patch) | |
tree | df4bcaad3755d173ff73028d52742080a8f7f6ab /gcc | |
parent | c0f4b5e40e0e0e5ced7ad19213a96af9cda0ae83 (diff) | |
download | gcc-21b34b9c09fe1e62446820345b82ac0cabe284c3.zip gcc-21b34b9c09fe1e62446820345b82ac0cabe284c3.tar.gz gcc-21b34b9c09fe1e62446820345b82ac0cabe284c3.tar.bz2 |
re PR c++/9259 (Calling a non-qualified member function within a sizeof() expression leads to "invalid use of undefined type")
PR c++/9259
* typeck.c (build_class_member_access_expr): Allow to access members
of the currently open class.
(finish_class_member_access_expr): Likewise.
From-SVN: r75948
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 6 |
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9134567..43bd29d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org> + + PR c++/9259 + * typeck.c (build_class_member_access_expr): Allow to access members + of the currently open class. + (finish_class_member_access_expr): Likewise. + 2004-01-15 Alexandre Oliva <aoliva@redhat.com> PR c++/13659 diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index ff397c0..a238eb4 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -1570,7 +1570,8 @@ build_class_member_access_expr (tree object, tree member, The type of the first expression shall be "class object" (of a complete type). */ object_type = TREE_TYPE (object); - if (!complete_type_or_else (object_type, object)) + if (!currently_open_class (object_type) + && !complete_type_or_else (object_type, object)) return error_mark_node; if (!CLASS_TYPE_P (object_type)) { @@ -1856,7 +1857,8 @@ finish_class_member_access_expr (tree object, tree name) The type of the first expression shall be "class object" (of a complete type). */ - if (!complete_type_or_else (object_type, object)) + if (!currently_open_class (object_type) + && !complete_type_or_else (object_type, object)) return error_mark_node; if (!CLASS_TYPE_P (object_type)) { |