aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authorAlexandre Petit-Bianco <apbianco@gcc.gnu.org>2001-08-28 19:22:52 -0700
committerAlexandre Petit-Bianco <apbianco@gcc.gnu.org>2001-08-28 19:22:52 -0700
commit1ca09b48783dfa5f4e4037b2c95681ea7c33626f (patch)
treebe3df2886b88b26f2cbf870c1b1bebef06195643 /gcc/java
parent51a25585ff13a61c901698e314cbfc2150028f74 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/java/parse.y17
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