diff options
Diffstat (limited to 'gcc/java/parse.h')
-rw-r--r-- | gcc/java/parse.h | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/java/parse.h b/gcc/java/parse.h index 4cebd5b..13604eed 100644 --- a/gcc/java/parse.h +++ b/gcc/java/parse.h @@ -498,9 +498,16 @@ static jdeplist *reverse_jdep_list (); #define COMPLETE_CHECK_OP_2(NODE) COMPLETE_CHECK_OP(NODE, 2) /* Building invocations: append(ARG) and StringBuffer(ARG) */ -#define BUILD_APPEND(ARG) \ - build_method_invocation (wfl_append, \ - (ARG ? build_tree_list (NULL, (ARG)): NULL_TREE)) +#define BUILD_APPEND(ARG) \ + ((JSTRING_TYPE_P (TREE_TYPE (ARG)) || JPRIMITIVE_TYPE_P (TREE_TYPE (ARG))) \ + ? build_method_invocation (wfl_append, \ + ARG ? build_tree_list (NULL, (ARG)) : NULL_TREE)\ + : build_method_invocation (wfl_append, \ + ARG ? build_tree_list (NULL, \ + build1 (CONVERT_EXPR, \ + object_type_node,\ + (ARG))) \ + : NULL_TREE)) #define BUILD_STRING_BUFFER(ARG) \ build_new_invocation (wfl_string_buffer, \ (ARG ? build_tree_list (NULL, (ARG)) : NULL_TREE)) |