]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR java/9695 (Inner class bug prevent GNU Classpath from compiling)
authorTom Tromey <tromey@redhat.com>
Fri, 28 Feb 2003 20:53:47 +0000 (20:53 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Fri, 28 Feb 2003 20:53:47 +0000 (20:53 +0000)
PR java/9695:
* class.c (maybe_layout_super_class): Always pass a WFL to
do_resolve_class.
* parse.y (do_resolve_class): Updated comment to explain
parameters.

From-SVN: r63584

gcc/java/ChangeLog
gcc/java/class.c
gcc/java/parse.y

index fd4a37be83ae865db921d11adc737025630795bd..17ab8447943fd7cf5a12f633d9091fd521e3c0c8 100644 (file)
@@ -1,3 +1,11 @@
+2003-02-28  Tom Tromey  <tromey@redhat.com>
+
+       PR java/9695:
+       * class.c (maybe_layout_super_class): Always pass a WFL to
+       do_resolve_class.
+       * parse.y (do_resolve_class): Updated comment to explain
+       parameters.
+
 2003-02-26  Tom Tromey  <tromey@redhat.com>
 
        * jcf-write.c (generate_classfile): Check whether class is
index a58f604da35bc614721f5f160bbfb19cd58ca88b..f121f0e95c521ef6cd5dc671093529981fddcc0b 100644 (file)
@@ -1726,8 +1726,19 @@ maybe_layout_super_class (tree super_class, tree this_class)
        super_class = TREE_TYPE (super_class);
       else
        {
+         /* do_resolve_class expects an EXPR_WITH_FILE_LOCATION, so
+            we give it one.  */
+         tree this_wrap = NULL_TREE;
+
+         if (this_class)
+           {
+             tree this_decl = TYPE_NAME (this_class);
+             this_wrap = build_expr_wfl (this_class,
+                                         DECL_SOURCE_FILE (this_decl),
+                                         DECL_SOURCE_LINE (this_decl), 0);
+           }
          super_class = do_resolve_class (NULL_TREE, /* FIXME? */
-                                         super_class, NULL_TREE, this_class);
+                                         super_class, NULL_TREE, this_wrap);
          if (!super_class)
            return NULL_TREE;   /* FIXME, NULL_TREE not checked by caller. */
          super_class = TREE_TYPE (super_class);
index 6745cec95ba732815af3db7a742074921306700c..dd05c1a98c1f49f7437e19ddb140b1316efa8dd2 100644 (file)
@@ -5678,11 +5678,11 @@ resolve_class (tree enclosing, tree class_type, tree decl, tree cl)
   return resolved_type_decl;
 }
 
-/* Effectively perform the resolution of class CLASS_TYPE. DECL or CL
-   are used to report error messages. Do not try to replace TYPE_NAME
-   (class_type) by a variable, since it is changed by
-   find_in_imports{_on_demand} and (but it doesn't really matter)
-   qualify_and_find.  */
+/* Effectively perform the resolution of class CLASS_TYPE.  DECL or CL
+   are used to report error messages; CL must either be NULL_TREE or a
+   WFL wrapping a class.  Do not try to replace TYPE_NAME (class_type)
+   by a variable, since it is changed by find_in_imports{_on_demand}
+   and (but it doesn't really matter) qualify_and_find.  */
 
 tree
 do_resolve_class (tree enclosing, tree class_type, tree decl, tree cl)