parse.y (resolve_expression_name): Permit instance variables from enclosing context...
authorBryce McKinlay <bryce@albatross.co.nz>
Thu, 11 Jan 2001 03:00:56 +0000 (03:00 +0000)
committerBryce McKinlay <bryce@gcc.gnu.org>
Thu, 11 Jan 2001 03:00:56 +0000 (03:00 +0000)
* parse.y (resolve_expression_name): Permit instance variables from
enclosing context in super constructor call.
(resolve_qualified_expression_name): Permit enclosing class's
qualified "this" in super constructor call.

From-SVN: r38892

gcc/java/ChangeLog
gcc/java/parse.y

index bf0b323c2888194233645661d63bdbdbdb3e1a7a..9b9dd586035030303b018b58e92272509f3cd986 100644 (file)
@@ -1,3 +1,10 @@
+2001-01-11  Bryce McKinlay  <bryce@albatross.co.nz>
+
+       * parse.y (resolve_expression_name): Permit instance variables from
+       enclosing context in super constructor call.
+       (resolve_qualified_expression_name): Permit enclosing class's qualified
+       "this" in super constructor call.
+
 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
 
        * class.c (build_utf8_ref): Remove last argument in call to
index a59e1987aabf5ca72457f42e9005738a23b9b9ab..873de308287add7e49c98e2c4e3c074ea0363142 100644 (file)
@@ -8954,7 +8954,8 @@ resolve_expression_name (id, orig)
                }
              /* Instance variables can't appear as an argument of
                 an explicit constructor invocation */
-             if (!fs && ctxp->explicit_constructor_p)
+             if (!fs && ctxp->explicit_constructor_p
+                 && !enclosing_context_p (DECL_CONTEXT (decl), current_class))
                {
                  parse_error_context
                    (id, "Can't reference `%s' before the superclass constructor has been called", IDENTIFIER_POINTER (name));
@@ -9320,7 +9321,8 @@ resolve_qualified_expression_name (wfl, found_decl, where_found, type_found)
                (wfl, "Keyword `this' used outside allowed context");
              return 1;
            }
-         if (ctxp->explicit_constructor_p)
+         if (ctxp->explicit_constructor_p
+             && type == current_class)
            {
              parse_error_context (wfl, "Can't reference `this' before the superclass constructor has been called");
              return 1;