diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/java/ChangeLog | 9 | ||||
| -rw-r--r-- | gcc/java/expr.c | 25 | ||||
| -rw-r--r-- | gcc/java/parse.y | 15 | 
3 files changed, 24 insertions, 25 deletions
| diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index abfc4823609..e9f24dfb876 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,12 @@ +2001-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu> + +	* expr.c (pop_type_0): Call `concat' rather than building the +	string manually. +	(pop_type): Add format specifier in call to `error'. + +	* parse.y (patch_method_invocation): Avoid casting away +	const-ness. +  2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>  	* parse.y (qualify_ambiguous_name): Broaden `length' diff --git a/gcc/java/expr.c b/gcc/java/expr.c index 072be6dea94..2ea6a813526 100644 --- a/gcc/java/expr.c +++ b/gcc/java/expr.c @@ -355,24 +355,11 @@ pop_type_0 (type, messagep)        else if (CLASS_INTERFACE (TYPE_NAME (TREE_TYPE (type))))  	return object_ptr_type_node;      } -  { -    const char *str1 = "expected type '"; -    const char *str3 = "' but stack contains '"; -    const char *str5 = "'"; -    int len1 = strlen (str1); -    int len2 = strlen (lang_printable_name (type, 0)); -    int len3 = strlen (str3); -    int len4 = strlen (lang_printable_name (t, 0)); -    int len5 = strlen (str5); -    char *msg = xmalloc (len1 + len2 + len3 + len4 + len5 + 1); -    *messagep = msg; -    strcpy (msg, str1);  msg += len1; -    strcpy (msg, lang_printable_name (type, 0));  msg += len2; -    strcpy (msg, str3);  msg += len3; -    strcpy (msg, lang_printable_name (t, 0));  msg += len4; -    strcpy (msg, str5); -    return type; -  } + +  *messagep = concat ("expected type '", lang_printable_name (type, 0), +		      "' but stack contains '", lang_printable_name (t, 0), +		      "'", NULL); +  return type;  }  /* Pop a type from the type stack. @@ -387,7 +374,7 @@ pop_type (type)    type = pop_type_0 (type, &message);    if (message != NULL)      { -      error (message); +      error ("%s", message);        free (message);      }    return type; diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 04c9e90de72..6df483e278d 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -9963,12 +9963,15 @@ patch_method_invocation (patch, primary, where, from_super,        /* Calls to clone() on array types are permitted as a special-case. */        && !is_array_clone_call)      { -      char *fct_name = (char *) IDENTIFIER_POINTER (DECL_NAME (list)); -      char *access = java_accstring_lookup (get_access_flags_from_decl (list)); -      char *klass = (char *) IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (DECL_CONTEXT (list)))); -      char *refklass = (char *) IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (current_class))); -      char *what = (char *) (DECL_CONSTRUCTOR_P (list) -			     ? "constructor" : "method"); +      const char *fct_name = IDENTIFIER_POINTER (DECL_NAME (list)); +      const char *access = +	java_accstring_lookup (get_access_flags_from_decl (list)); +      const char *klass = +	IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (DECL_CONTEXT (list)))); +      const char *refklass = +	IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (current_class))); +      const char *what = (DECL_CONSTRUCTOR_P (list) +			  ? "constructor" : "method");        /* FIXME: WFL yields the wrong message here but I don't know  	 what else to use.  */        parse_error_context (wfl, | 

