mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-15 18:31:04 +08:00
re GNATS gcj/102 (crashes when compiling try block from java source)
2000-03-07 Alexandre Petit-Bianco <apbianco@cygnus.com> * parse.y (qualify_ambiguous_name): Properly handle expressions using `null'. (This fixes the Java PR #102: http://sourceware.cygnus.com/ml/java-prs/1999-q4/msg00152.html) From-SVN: r32397
This commit is contained in:
parent
6632dcdd41
commit
cd7c584005
@ -1,3 +1,8 @@
|
||||
2000-03-07 Alexandre Petit-Bianco <apbianco@cygnus.com>
|
||||
|
||||
* parse.y (qualify_ambiguous_name): Properly handle expressions
|
||||
using `null'.
|
||||
|
||||
2000-03-07 Alexandre Petit-Bianco <apbianco@cygnus.com>
|
||||
|
||||
* parse.y (check_final_assignment): Extended to process
|
||||
|
@ -10632,6 +10632,9 @@ qualify_ambiguous_name (id)
|
||||
&& TREE_CODE (TREE_TYPE (qual_wfl)) == EXPR_WITH_FILE_LOCATION)
|
||||
name = EXPR_WFL_NODE (TREE_TYPE (qual_wfl));
|
||||
|
||||
else if (code == INTEGER_CST)
|
||||
name = qual_wfl;
|
||||
|
||||
else if ((code == ARRAY_REF || code == CALL_EXPR || code == MODIFY_EXPR) &&
|
||||
TREE_CODE (TREE_OPERAND (qual_wfl, 0)) == EXPR_WITH_FILE_LOCATION)
|
||||
name = EXPR_WFL_NODE (TREE_OPERAND (qual_wfl, 0));
|
||||
@ -10686,8 +10689,9 @@ qualify_ambiguous_name (id)
|
||||
declaration or parameter declaration, then it is an expression
|
||||
name. We don't carry this test out if we're in the context of the
|
||||
use of SUPER or THIS */
|
||||
if (!this_found && !super_found &&
|
||||
TREE_CODE (name) != STRING_CST && (decl = IDENTIFIER_LOCAL_VALUE (name)))
|
||||
if (!this_found && !super_found
|
||||
&& TREE_CODE (name) != STRING_CST && TREE_CODE (name) != INTEGER_CST
|
||||
&& (decl = IDENTIFIER_LOCAL_VALUE (name)))
|
||||
{
|
||||
RESOLVE_EXPRESSION_NAME_P (qual_wfl) = 1;
|
||||
QUAL_RESOLUTION (qual) = decl;
|
||||
@ -10713,8 +10717,8 @@ qualify_ambiguous_name (id)
|
||||
- NAME is declared by exactly on type-import-on-demand declaration
|
||||
of the compilation unit containing NAME.
|
||||
- NAME is actually a STRING_CST. */
|
||||
else if (TREE_CODE (name) == STRING_CST ||
|
||||
(decl = resolve_and_layout (name, NULL_TREE)))
|
||||
else if (TREE_CODE (name) == STRING_CST || TREE_CODE (name) == INTEGER_CST
|
||||
|| (decl = resolve_and_layout (name, NULL_TREE)))
|
||||
{
|
||||
RESOLVE_TYPE_NAME_P (qual_wfl) = 1;
|
||||
QUAL_RESOLUTION (qual) = decl;
|
||||
|
@ -7942,6 +7942,9 @@ qualify_ambiguous_name (id)
|
||||
&& TREE_CODE (TREE_TYPE (qual_wfl)) == EXPR_WITH_FILE_LOCATION)
|
||||
name = EXPR_WFL_NODE (TREE_TYPE (qual_wfl));
|
||||
|
||||
else if (code == INTEGER_CST)
|
||||
name = qual_wfl;
|
||||
|
||||
else if ((code == ARRAY_REF || code == CALL_EXPR || code == MODIFY_EXPR) &&
|
||||
TREE_CODE (TREE_OPERAND (qual_wfl, 0)) == EXPR_WITH_FILE_LOCATION)
|
||||
name = EXPR_WFL_NODE (TREE_OPERAND (qual_wfl, 0));
|
||||
@ -7996,8 +7999,9 @@ qualify_ambiguous_name (id)
|
||||
declaration or parameter declaration, then it is an expression
|
||||
name. We don't carry this test out if we're in the context of the
|
||||
use of SUPER or THIS */
|
||||
if (!this_found && !super_found &&
|
||||
TREE_CODE (name) != STRING_CST && (decl = IDENTIFIER_LOCAL_VALUE (name)))
|
||||
if (!this_found && !super_found
|
||||
&& TREE_CODE (name) != STRING_CST && TREE_CODE (name) != INTEGER_CST
|
||||
&& (decl = IDENTIFIER_LOCAL_VALUE (name)))
|
||||
{
|
||||
RESOLVE_EXPRESSION_NAME_P (qual_wfl) = 1;
|
||||
QUAL_RESOLUTION (qual) = decl;
|
||||
@ -8023,8 +8027,8 @@ qualify_ambiguous_name (id)
|
||||
- NAME is declared by exactly on type-import-on-demand declaration
|
||||
of the compilation unit containing NAME.
|
||||
- NAME is actually a STRING_CST. */
|
||||
else if (TREE_CODE (name) == STRING_CST ||
|
||||
(decl = resolve_and_layout (name, NULL_TREE)))
|
||||
else if (TREE_CODE (name) == STRING_CST || TREE_CODE (name) == INTEGER_CST
|
||||
|| (decl = resolve_and_layout (name, NULL_TREE)))
|
||||
{
|
||||
RESOLVE_TYPE_NAME_P (qual_wfl) = 1;
|
||||
QUAL_RESOLUTION (qual) = decl;
|
||||
|
Loading…
x
Reference in New Issue
Block a user