From 1e11695e43d5bbf4ff8b996e2da8f2e25e203db3 Mon Sep 17 00:00:00 2001 From: apbianco Date: Wed, 29 Aug 2001 02:22:52 +0000 Subject: [PATCH] 2001-08-27 Alexandre Petit-Bianco * 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) git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45251 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/java/ChangeLog | 8 ++++++++ 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 + + * 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 * 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 * 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 * 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 -- 2.7.4