diff options
author | Alexandre Petit-Bianco <apbianco@gcc.gnu.org> | 2001-08-28 19:22:52 -0700 |
---|---|---|
committer | Alexandre Petit-Bianco <apbianco@gcc.gnu.org> | 2001-08-28 19:22:52 -0700 |
commit | 1ca09b48783dfa5f4e4037b2c95681ea7c33626f (patch) | |
tree | be3df2886b88b26f2cbf870c1b1bebef06195643 /gcc/java | |
parent | 51a25585ff13a61c901698e314cbfc2150028f74 (diff) | |
download | gcc-1ca09b48783dfa5f4e4037b2c95681ea7c33626f.zip gcc-1ca09b48783dfa5f4e4037b2c95681ea7c33626f.tar.gz gcc-1ca09b48783dfa5f4e4037b2c95681ea7c33626f.tar.bz2 |
re PR java/4141 (GCJ compiles illegal code without complaining.)
2001-08-27 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (resolve_qualified_expression_name): Handle unresolved
qualified expressions, prevent numerical qualifiers, fixed typo.
Fixes PR java/4141
(http://gcc.gnu.org/ml/gcc-patches/2001-08/msg01644.html)
From-SVN: r45251
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/java/parse.y | 17 |
2 files changed, 21 insertions, 4 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 45f05d8..d535776 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -8,6 +8,12 @@ * jcf-write.c (generate_bytecode_insns): Generate an integer to real conversion for increments and decrements of reals. +2001-08-27 Alexandre Petit-Bianco <apbianco@redhat.com> + + * parse.y (resolve_qualified_expression_name): Handle unresolved + qualified expressions, prevent numerical qualifiers, fixed typo. + Fixes PR java/4141 + 2001-08-24 Alexandre Petit-Bianco <apbianco@redhat.com> * parse.y (check_deprecation): Handle TYPE_DECL in a special case, @@ -37,6 +43,7 @@ descriptor. * class.c (make_method_value): Compute `throws' field for method. +>>>>>>> 1.790 2001-08-22 Alexandre Petit-Bianco <apbianco@redhat.com> * parse.y (resolve_inner_class): Keep local_enclosing to NULL if @@ -62,6 +69,7 @@ superclass if necessary. Fixes PR java/4007 +>>>>>>> 1.785 2001-08-16 Tom Tromey <tromey@redhat.com> * jcf-dump.c (main): Updated for change to jcf_path_seal. diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 8a51483..7567c3d 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -9617,10 +9617,9 @@ resolve_qualified_expression_name (wfl, found_decl, where_found, type_found) /* We have a type name. It's been already resolved when the expression was qualified. */ - else if (RESOLVE_TYPE_NAME_P (qual_wfl)) + else if (RESOLVE_TYPE_NAME_P (qual_wfl) && QUAL_RESOLUTION (q)) { - if (!(decl = QUAL_RESOLUTION (q))) - return 1; /* Error reported already */ + decl = QUAL_RESOLUTION (q); /* Sneak preview. If next we see a `new', we're facing a qualification with resulted in a type being selected @@ -9648,7 +9647,7 @@ resolve_qualified_expression_name (wfl, found_decl, where_found, type_found) type = TREE_TYPE (decl); from_type = 1; } - /* We resolve and expression name */ + /* We resolve an expression name */ else { tree field_decl = NULL_TREE; @@ -9684,6 +9683,16 @@ resolve_qualified_expression_name (wfl, found_decl, where_found, type_found) } } + /* Report and error if we're using a numerical litteral as a + qualifier. It can only be an INTEGER_CST. */ + else if (TREE_CODE (qual_wfl) == INTEGER_CST) + { + parse_error_context + (wfl, "Can't use type `%s' as a qualifier", + lang_printable_name (TREE_TYPE (qual_wfl), 0)); + return 1; + } + /* We have to search for a field, knowing the type of its container. The flag FROM_TYPE indicates that we resolved the last member of the expression as a type name, which |