From 7e0f8eaa126148a7cb2fa26252dd7bef39477bc1 Mon Sep 17 00:00:00 2001 From: apbianco Date: Tue, 9 Oct 2001 22:55:35 +0000 Subject: [PATCH] 2001-10-09 Alexandre Petit-Bianco * parse.y (patch_cast): Call patch_string on the first operand of the incoming node, update it if necessary. Fixes java/4510. 2001-10-05 Alexandre Petit-Bianco * parse.y (register_incomplete_type): Set JDEP_SUPER to be given a NULL enclosing context if appropriate. Fixes java/4466. 2001-09-17 Alexandre Petit-Bianco * parse.y (patch_method_invocation): Inner class creation context check not enforced within constructors. Fixes PR java/1873. ( http://gcc.gnu.org/ml/gcc-patches/2001-10/msg00397.html ) git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46133 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/java/ChangeLog | 15 +++++++++++++++ gcc/java/parse.y | 16 ++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index d32998b3027..0c9c0779dd9 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2001-10-09 Alexandre Petit-Bianco + + * parse.y (patch_cast): Call patch_string on the first operand of + the incoming node, update it if necessary. Fixes java/4510. + 2001-10-09 Bryce McKinlay * parse.y (find_as_inner_class): Don't disregard the enclosing scope @@ -16,6 +21,11 @@ * lex.c (java_get_line_col): Likewise. * parse.y (build_incdec): Likewise. +2001-10-05 Alexandre Petit-Bianco + + * parse.y (register_incomplete_type): Set JDEP_SUPER to be given + a NULL enclosing context if appropriate. Fixes java/4466. + 2001-10-03 Alexandre Petit-Bianco * parse.y (patch_assignment): Use lvalue's original TYPE when @@ -72,6 +82,11 @@ * parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout. * jv-scan.c: Likewise. +2001-09-17 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Inner class creation context + check not enforced within constructors. Fixes PR java/1873. + 2001-09-16 Tom Tromey * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 180b99ddcef..d007b71d2e2 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -5200,10 +5200,12 @@ register_incomplete_type (kind, wfl, decl, ptr) JDEP_MISC (new) = NULL_TREE; /* For some dependencies, set the enclosing class of the current class to be the enclosing context */ - if ((kind == JDEP_SUPER || kind == JDEP_INTERFACE - || kind == JDEP_ANONYMOUS) + if ((kind == JDEP_INTERFACE || kind == JDEP_ANONYMOUS) && GET_ENCLOSING_CPC ()) JDEP_ENCLOSING (new) = TREE_VALUE (GET_ENCLOSING_CPC ()); + else if (kind == JDEP_SUPER) + JDEP_ENCLOSING (new) = (GET_ENCLOSING_CPC () ? + TREE_VALUE (GET_ENCLOSING_CPC ()) : NULL_TREE); else JDEP_ENCLOSING (new) = GET_CPC (); JDEP_GET_PATCH (new) = (tree *)NULL; @@ -10255,7 +10257,8 @@ patch_method_invocation (patch, primary, where, from_super, /* Check for inner classes creation from illegal contexts */ if (lc && (INNER_CLASS_TYPE_P (class_to_search) && !CLASS_STATIC (TYPE_NAME (class_to_search))) - && INNER_ENCLOSING_SCOPE_CHECK (class_to_search)) + && INNER_ENCLOSING_SCOPE_CHECK (class_to_search) + && !DECL_INIT_P (current_function_decl)) { parse_error_context (wfl, "No enclosing instance for inner class `%s' is in scope%s", @@ -14437,10 +14440,15 @@ patch_cast (node, wfl_op) tree wfl_op; { tree op = TREE_OPERAND (node, 0); - tree op_type = TREE_TYPE (op); tree cast_type = TREE_TYPE (node); + tree patched, op_type; char *t1; + /* Some string patching might be necessary at this stage */ + if ((patched = patch_string (op))) + TREE_OPERAND (node, 0) = op = patched; + op_type = TREE_TYPE (op); + /* First resolve OP_TYPE if unresolved */ if (!(cast_type = resolve_type_during_patch (cast_type))) return error_mark_node; -- 2.11.4.GIT