* decl.c (make_typename_type): Use currently_open_class.
authorJason Merrill <jason@yorick.cygnus.com>
Mon, 18 May 1998 03:16:09 +0000 (03:16 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 18 May 1998 03:16:09 +0000 (23:16 -0400)
From-SVN: r19832

gcc/cp/ChangeLog
gcc/cp/decl.c

index eec4cd8f9e436a9e5bef177139f8831d2756e879..6bbfcbf0ceca128e17c791cbaaf667e3c247e13c 100644 (file)
@@ -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>
index 1ab0922a28d57007384d05afdb73bcc697efbae8..4b728a05a8d7b09627470729ce12b03095db1090 100644 (file)
@@ -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));