[multiple changes]

2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* lang-specs.h: Forbit the use if `-femit-class-file{s}' without
	`-fsyntax-only.' Fixes PR java/3248

2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* jcf-io.c (find_class): Clarified error message. Fixes PR java/2603

2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the
	current function is static. Fixes PR java/1970

2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (patch_method_invocation): Add enclosing context to ctor
	calls if necessary. Fixes PR java/2953

2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (resolve_package): Abort if qualified expression member
	isn't right.
	(qualify_ambiguous_name): Don't qualify as type if `this' in use.
	Fixes PR java/1391

(http://gcc.gnu.org/ml/gcc-patches/2001-07/msg00701.html )

From-SVN: r43927
This commit is contained in:
Alexandre Petit-Bianco 2001-07-11 00:33:43 -07:00 committed by Alexandre Petit-Bianco
parent 3a2a1b5264
commit 2df37a59e2
5 changed files with 49 additions and 18 deletions

View File

@ -1,3 +1,29 @@
2001-07-10 Alexandre Petit-Bianco <apbianco@redhat.com>
* lang-specs.h: Forbit the use if `-femit-class-file{s}' without
`-fsyntax-only.' Fixes PR java/3248
2001-07-10 Alexandre Petit-Bianco <apbianco@redhat.com>
* jcf-io.c (find_class): Clarified error message. Fixes PR java/2603
2001-07-10 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the
current function is static. Fixes PR java/1970
2001-07-09 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (patch_method_invocation): Add enclosing context to ctor
calls if necessary. Fixes PR java/2953
2001-07-09 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (resolve_package): Abort if qualified expression member
isn't right.
(qualify_ambiguous_name): Don't qualify as type if `this' in use.
Fixes PR java/1391
2001-07-07 Zack Weinberg <zackw@stanford.edu>
* verify.c: Don't use // comments.
@ -31,8 +57,7 @@
2001-07-03 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (resolve_expression_name): Improved error message for
inner class cases.
Fixes PR java/1958
inner class cases. Fixes PR java/1958
2001-06-28 Gabriel Dos Reis <gdr@codesourcery.com>

View File

@ -405,16 +405,8 @@ DEFUN(find_class, (classname, classname_length, jcf, source_ok),
up no matter what. FIXME. */
if (! java && ! class && java_buf.st_mtime > class_buf.st_mtime)
{
char *stripped_class_name = xstrdup (classname);
int i = strlen (stripped_class_name);
while (stripped_class_name [i] != '.')
i--;
stripped_class_name [i] = '\0';
if (flag_newer)
warning ("Source file for class `%s' is newer than its matching class file. Source file used instead", stripped_class_name);
free (stripped_class_name);
warning ("Source file for class `%s' is newer than its matching class file. Source file `%s' used instead", classname, java_buffer);
class = -1;
}

View File

@ -1,5 +1,5 @@
/* Definitions for specs for the GNU compiler for the Java(TM) language.
Copyright (C) 1996, 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -32,6 +32,8 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
{"@java",
"%{fjni:%{femit-class-files:%e-fjni and -femit-class-files are incompatible}}\
%{fjni:%{femit-class-file:%e-fjni and -femit-class-file are incompatible}}\
%{femit-class-file:%{!fsyntax-only:%e-femit-class-file should used along with -fsyntax-only}}\
%{femit-class-files:%{!fsyntax-only:%e-femit-class-file should used along with -fsyntax-only}}\
%{!E:jc1 %i %(jc1) %(cc1_options) %{+e*} %{I*}\
%{MD} %{MMD} %{M} %{MM} %{MA} %{MT*} %{MF*}\
%{!fsyntax-only:%(invoke_as)}}", 0},

View File

@ -844,8 +844,11 @@ struct parser_ctxt {
(TREE_TYPE (DECL_CONTEXT \
(TYPE_NAME (TREE_TYPE (TREE_TYPE (current_this))))),\
TREE_TYPE (DECL_CONTEXT (TYPE_NAME (T))))) \
/* We don't have a this. */ \
|| !current_this))
/* We don't have a this, which is OK if the current function is \
static. */ \
|| (!current_this \
&& current_function_decl \
&& ! METHOD_STATIC (current_function_decl))))
/* Push macro. First argument to PUSH_CPC is a DECL_TYPE, second
argument is the unqualified currently parsed class name. */

View File

@ -6818,6 +6818,10 @@ resolve_package (pkg, next)
for (acc = NULL_TREE, current = EXPR_WFL_QUALIFICATION (pkg);
current; current = TREE_CHAIN (current))
{
/* If we don't have what we're expecting, exit now. TYPE_NAME
will be null and the error caught later. */
if (TREE_CODE (QUAL_WFL (current)) != EXPR_WITH_FILE_LOCATION)
break;
acc = merge_qualified_name (acc, EXPR_WFL_NODE (QUAL_WFL (current)));
if ((type_name = resolve_no_layout (acc, NULL_TREE)))
{
@ -10120,7 +10124,9 @@ patch_method_invocation (patch, primary, where, from_super,
to have an enclosing context passed as a second parameter (the
constructor is one of an inner class. We extract it from the
current function. */
if (is_super_init && PURE_INNER_CLASS_TYPE_P (DECL_CONTEXT (list)))
if ((is_super_init ||
(TREE_CODE (patch) == CALL_EXPR && name == this_identifier_node))
&& PURE_INNER_CLASS_TYPE_P (DECL_CONTEXT (list)))
{
tree enclosing_decl = DECL_CONTEXT (TYPE_NAME (current_class));
tree extra_arg;
@ -10986,9 +10992,12 @@ qualify_ambiguous_name (id)
of the compilation unit containing NAME,
- 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 || TREE_CODE (name) == INTEGER_CST
|| (decl = resolve_and_layout (name, NULL_TREE)))
- NAME is actually a STRING_CST.
This can't happen if the expression was qualified by `this.' */
else if (! this_found &&
(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;