aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/parse.y
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2003-11-12 15:24:42 +0000
committerAndrew Haley <aph@gcc.gnu.org>2003-11-12 15:24:42 +0000
commit7304c6cfe91d479beeb49167441faa26226cf8cf (patch)
treef18ec01257339870bfe0454f85747078700d4dc4 /gcc/java/parse.y
parent88f08cca2804fb07fda114bf414ce0e4c18be6d3 (diff)
downloadgcc-7304c6cfe91d479beeb49167441faa26226cf8cf.zip
gcc-7304c6cfe91d479beeb49167441faa26226cf8cf.tar.gz
gcc-7304c6cfe91d479beeb49167441faa26226cf8cf.tar.bz2
re PR java/11533 (Inlining drops static initialization of inner class)
2003-11-12 Andrew Haley <aph@redhat.com> PR java/11533 * lang.c (merge_init_test_initialization): Clear DECL_INITIAL for init_test_decls being inlined. PR java/12890: * parse.y (do_resolve_class): Check return value from breakdown_qualified(). From-SVN: r73494
Diffstat (limited to 'gcc/java/parse.y')
-rw-r--r--gcc/java/parse.y20
1 files changed, 11 insertions, 9 deletions
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index fc4963d..c1b70dd 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -5718,14 +5718,16 @@ do_resolve_class (tree enclosing, tree class_type, tree decl, tree cl)
class and then treat Id as a member type. If we can't find Q
as a class then we fall through. */
tree q, left, left_type, right;
- breakdown_qualified (&left, &right, TYPE_NAME (class_type));
- BUILD_PTR_FROM_NAME (left_type, left);
- q = do_resolve_class (enclosing, left_type, decl, cl);
- if (q)
+ if (breakdown_qualified (&left, &right, TYPE_NAME (class_type)) == 0)
{
- enclosing = q;
- saved_enclosing_type = TREE_TYPE (q);
- BUILD_PTR_FROM_NAME (class_type, right);
+ BUILD_PTR_FROM_NAME (left_type, left);
+ q = do_resolve_class (enclosing, left_type, decl, cl);
+ if (q)
+ {
+ enclosing = q;
+ saved_enclosing_type = TREE_TYPE (q);
+ BUILD_PTR_FROM_NAME (class_type, right);
+ }
}
}
@@ -16218,8 +16220,8 @@ attach_init_test_initialization_flags (void **entry, void *ptr)
return true;
}
-/* This function is called for each classes that is known definitely
- assigned when a given static method was called. This function
+/* This function is called for each class that is known definitely
+ initialized when a given static method was called. This function
augments a compound expression (INFO) storing all assignment to
initialized static class flags if a flag already existed, otherwise
a new one is created. */