diff options
author | apbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-03-23 07:01:24 +0000 |
---|---|---|
committer | apbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-03-23 07:01:24 +0000 |
commit | bc251a21035740c60d0eda6ca1c4deb6c17088c1 (patch) | |
tree | adf1ca92ac2684768b4f5b55b6b09d452804b8b9 /gcc/java/parse.h | |
parent | 1ad82bb0ffeb70f0ac6c586e51d87c4161b95b10 (diff) | |
download | gcc-bc251a21035740c60d0eda6ca1c4deb6c17088c1.tar.gz |
2000-03-22 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (check_abstract_method_definitions): New local
`end_type_reached'. Make sure we also consider `end_type'.
(java_check_abstract_method_definitions): Make sure we also
eventually consider `java.lang.Object'.
(maybe_use_access_method): Don't use access method if not a pure
inner class or if the method's context is right.
(find_applicable_accessible_methods_list): New static
`object_done'. Don't search abstract classes as interfaces. Fixed
indentation. Fixed the `java.lang.Object' only search. Search class'
interface(s) first, fully search enclosing contexts.
(find_most_specific_methods_list): Pick closest candidates when
they're all abstract.
2000-03-17 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (check_method_types_complete): New function.
(create_class): Reset anonymous class counter only when seeing an
non inner classe.
(java_complete_class): JDEP_METHOD: Don't recompute signature
if incomplete.
2000-03-17 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c (build_static_ref): Fixed indentation in comment.
* java-tree.def (TRY_EXPR): Fixed typo in name.
(CLASS_LITERAL): Likewise.
* java-tree.h: (TYPE_DOT_CLASS): New macro.
(struct lang_type): New field `dot_class'.
* jcf-write.c (generate_bytecode_insns): Fixed error message.
(generate_classfile): Method `class$' is synthetic.
* parse.y (build_do_class_method): New function.
(build_dot_class_method_invocation): Likewise.
(java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary.
(resolve_qualified_expression_name): Handle CLASS_LITERAL.
(qualify_ambiguous_name): Likewise.
(patch_incomplete_class_ref): Invoke synthetic method if necessary.
(build_try_statement): Fixed leading comment.
2000-03-15 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous
classes.
* parse.y (patch_method_invocation): Handle anonymous classes
creation in static context.
2000-03-15 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro.
* parse.y (resolve_qualified_expression_name): Use it.
(patch_method_invocation): Likewise.
2000-03-15 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (register_incomplete_type): JDEP_ENCLOSING set
depending on the type of dependency which dictates what the
current class is.
(unresolved_type_p): Resolved types limited to the current class.
(For details, see: http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00790.html)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32701 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java/parse.h')
-rw-r--r-- | gcc/java/parse.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/java/parse.h b/gcc/java/parse.h index b80f879f21c..bea4b70a089 100644 --- a/gcc/java/parse.h +++ b/gcc/java/parse.h @@ -823,6 +823,17 @@ struct parser_ctxt { TREE_VALUE (GET_ENCLOSING_CPC ()) : \ NULL_TREE) +/* Make sure that innerclass T sits in an appropriate enclosing + context. */ +#define INNER_ENCLOSING_SCOPE_CHECK(T) \ + (INNER_CLASS_TYPE_P ((T)) && !ANONYMOUS_CLASS_P ((T)) \ + /* We have a this and it's not the right one */ \ + && ((current_this \ + && (DECL_CONTEXT (TYPE_NAME ((T))) \ + != TYPE_NAME (TREE_TYPE (TREE_TYPE (current_this))))) \ + /* We don't have a this. */ \ + || !current_this)) + /* Push macro. First argument to PUSH_CPC is a DECL_TYPE, second argument is the unqualified currently parsed class name. */ #define PUSH_CPC(C,R) { \ |