aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1998-05-18 03:16:09 +0000
committerJason Merrill <jason@gcc.gnu.org>1998-05-17 23:16:09 -0400
commitb77ead33d324dd197b1d244be715044ed234d390 (patch)
tree4bbfd12ef842be2f5f567f7436715b41252ae7c2 /gcc
parente596622890e8bfbbf407b27bd79d5ba7918d6961 (diff)
downloadgcc-b77ead33d324dd197b1d244be715044ed234d390.zip
gcc-b77ead33d324dd197b1d244be715044ed234d390.tar.gz
gcc-b77ead33d324dd197b1d244be715044ed234d390.tar.bz2
* decl.c (make_typename_type): Use currently_open_class.
From-SVN: r19832
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog2
-rw-r--r--gcc/cp/decl.c9
2 files changed, 8 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index eec4cd8..6bbfcbf 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,7 @@
Mon May 18 03:00:57 1998 Jason Merrill <jason@yorick.cygnus.com>
+ * decl.c (make_typename_type): Use currently_open_class.
+
* class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
Mon May 18 01:43:01 1998 Martin v. Loewis <loewis@informatik.hu-berlin.de>
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 1ab0922..4b728a0 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -4619,7 +4619,7 @@ make_typename_type (context, name)
my_friendly_abort (2000);
if (! uses_template_parms (context)
- || context == current_class_type)
+ || currently_open_class (context))
{
if (TREE_CODE (fullname) == TEMPLATE_ID_EXPR)
{
@@ -4797,7 +4797,10 @@ lookup_name_real (name, prefer_type, nonclass)
locval = classval = NULL_TREE;
if (!current_binding_level->namespace_p
- && IDENTIFIER_LOCAL_VALUE (name))
+ && IDENTIFIER_LOCAL_VALUE (name)
+ /* Kludge to avoid infinite recursion with identifier_type_value. */
+ && (prefer_type <= 0
+ || TREE_CODE (IDENTIFIER_LOCAL_VALUE (name)) == TYPE_DECL))
locval = IDENTIFIER_LOCAL_VALUE (name);
/* In C++ class fields are between local and global scope,
@@ -4908,7 +4911,7 @@ lookup_name_real (name, prefer_type, nonclass)
|| TREE_CODE (val) == TYPE_DECL || prefer_type <= 0)
;
/* Caller wants a class-or-namespace-name. */
- else if(prefer_type == 1 && TREE_CODE (val) == NAMESPACE_DECL)
+ else if (prefer_type == 1 && TREE_CODE (val) == NAMESPACE_DECL)
;
else if (IDENTIFIER_HAS_TYPE_VALUE (name))
val = TYPE_MAIN_DECL (IDENTIFIER_TYPE_VALUE (name));