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
This commit is contained in:
Alexandre Petit-Bianco 2001-08-28 19:22:52 -07:00
parent 51a25585ff
commit 1ca09b4878
2 changed files with 21 additions and 4 deletions

View File

@ -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.

View File

@ -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