aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/parse.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/java/parse.h')
-rw-r--r--gcc/java/parse.h51
1 files changed, 41 insertions, 10 deletions
diff --git a/gcc/java/parse.h b/gcc/java/parse.h
index b0d90a1..bb9477a 100644
--- a/gcc/java/parse.h
+++ b/gcc/java/parse.h
@@ -99,10 +99,14 @@ extern tree stabilize_reference PROTO ((tree));
count++; \
}
-#define ABSTRACT_CHECK(flag, v, cl, s) \
- if ((flag) & (v)) \
- parse_error_context (cl, s " method can't be abstract");
-
+#define ABSTRACT_CHECK(FLAG, V, CL, S) \
+ if ((FLAG) & (V)) \
+ parse_error_context ((CL), S " method can't be abstract");
+
+#define JCONSTRUCTOR_CHECK(FLAG, V, CL, S) \
+ if ((FLAG) & (V)) \
+ parse_error_context ((CL), "Constructor can't be %s", (S)); \
+
/* Misc. */
#define exit_java_complete_class() \
{ \
@@ -159,6 +163,10 @@ extern tree stabilize_reference PROTO ((tree));
&& (JNUMERIC_TYPE_P ((TYPE)) \
|| TREE_CODE ((TYPE)) == BOOLEAN_TYPE))
+#define JBSC_TYPE_P(TYPE) ((TYPE) && (((TYPE) == byte_type_node) \
+ || ((TYPE) == short_type_node) \
+ || ((TYPE) == char_type_node)))
+
/* Not defined in the LRM */
#define JSTRING_TYPE_P(TYPE) ((TYPE) \
&& ((TYPE) == string_type_node || \
@@ -269,17 +277,16 @@ extern tree stabilize_reference PROTO ((tree));
#define POP_EXCEPTIONS() \
currently_caught_type_list = TREE_CHAIN (currently_caught_type_list)
-/* Check that we're inside a try block */
+/* Check that we're inside a try block. */
#define IN_TRY_BLOCK_P() \
(currently_caught_type_list \
&& ((TREE_VALUE (currently_caught_type_list) != \
DECL_FUNCTION_THROWS (current_function_decl)) \
|| TREE_CHAIN (currently_caught_type_list)))
-/* Check that we have exceptions in E */
+/* Check that we have exceptions in E. */
#define EXCEPTIONS_P(E) ((E) ? TREE_VALUE (E) : NULL_TREE)
-
/* Invocation modes, as returned by invocation_mode (). */
enum {
INVOKE_STATIC,
@@ -462,6 +469,7 @@ static jdeplist *reverse_jdep_list ();
}
#define COMPLETE_CHECK_OP_0(NODE) COMPLETE_CHECK_OP(NODE, 0)
#define COMPLETE_CHECK_OP_1(NODE) COMPLETE_CHECK_OP(NODE, 1)
+#define COMPLETE_CHECK_OP_2(NODE) COMPLETE_CHECK_OP(NODE, 2)
/* Building invocations: append(ARG) and StringBuffer(ARG) */
#define BUILD_APPEND(ARG) \
@@ -567,6 +575,12 @@ struct parser_ctxt {
labeled blocks. */
int pending_block; /* Pending block to close */
+
+ int explicit_constructor_p; /* True when processing an
+ explicit constructor. This flag is
+ used to trap illegal argument usage
+ during an explicit constructor
+ invocation. */
#endif /* JC1_LITE */
};
@@ -611,8 +625,10 @@ static void check_abstract_method_header PROTO ((tree));
static tree lookup_java_interface_method2 PROTO ((tree, tree));
static tree resolve_expression_name PROTO ((tree));
static tree maybe_create_class_interface_decl PROTO ((tree, tree, tree));
-static int check_class_interface_creation PROTO ((int, int, tree, tree, tree, tree));
-static tree patch_method_invocation_stmt PROTO ((tree, tree, tree, int *, tree *));
+static int check_class_interface_creation PROTO ((int, int, tree,
+ tree, tree, tree));
+static tree patch_method_invocation_stmt PROTO ((tree, tree, tree,
+ int *, tree *, int));
static int breakdown_qualified PROTO ((tree *, tree *, tree));
static tree resolve_and_layout PROTO ((tree, tree));
static tree resolve_no_layout PROTO ((tree, tree));
@@ -620,7 +636,7 @@ static int invocation_mode PROTO ((tree, int));
static tree find_applicable_accessible_methods_list PROTO ((tree, tree, tree));
static tree find_most_specific_methods_list PROTO ((tree));
static int argument_types_convertible PROTO ((tree, tree));
-static tree patch_invoke PROTO ((tree, tree, tree));
+static tree patch_invoke PROTO ((tree, tree, tree, int));
static tree lookup_method_invoke PROTO ((int, tree, tree, tree, tree));
static tree register_incomplete_type PROTO ((int, tree, tree, tree));
static tree obtain_incomplete_type PROTO ((tree));
@@ -704,6 +720,21 @@ static void check_thrown_exceptions PROTO ((int, tree));
static int check_thrown_exceptions_do PROTO ((tree));
static void purge_unchecked_exceptions PROTO ((tree));
static void check_throws_clauses PROTO ((tree, tree, tree));
+static void complete_method_declaration PROTO ((tree));
+static tree build_super_invocation PROTO (());
+static int verify_constructor_circularity PROTO ((tree, tree));
+static char *constructor_circularity_msg PROTO ((tree, tree));
+static tree build_this_super_qualified_invocation PROTO ((int, tree, tree,
+ int, int));
+static char *get_printable_method_name PROTO ((tree));
+static tree patch_conditional_expr PROTO ((tree, tree, tree));
+static void maybe_generate_finit PROTO (());
+static void fix_constructors PROTO ((tree));
+static int verify_constructor_super PROTO (());
+static tree create_artificial_method PROTO ((tree, int, tree, tree, tree));
+static void start_artificial_method_body PROTO ((tree));
+static void end_artificial_method_body PROTO ((tree));
+static tree generate_field_initialization_code PROTO ((tree));
void safe_layout_class PROTO ((tree));
void java_complete_class PROTO ((void));