diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index aad92c7f08d633f6d69f08d563fd100b25840492..d8712467451706d2dd001c2bdf794650aa6b9b11 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,11 @@
+2005-02-02  Ranjit Mathew  <rmathew@hotmail.com>
+
+	PR java/15543
+	* parse-scan.y (formal_parameter): Use $2 (type) instead of $$
+	(modifiers) when square brackets are present in a declaration for
+	a final paramter.
+	* jv-scan.c (main): Set input_filename and input_line.
+
 2005-02-01  Tom Tromey  <tromey@redhat.com>
 
 	PR java/19742:
@@ -8,7 +16,7 @@
 	* jcf-write.c (generate_bytecode_insns): Implement RSHIFT_EXPR
 	of unsigned types using iushr and lushr JVM bytecodes.
 
-2005-02-02  Ranjit Mathew  <rmathew@hotmail.com>
+2005-02-01  Ranjit Mathew  <rmathew@hotmail.com>
 
 	PR java/19738
 	* gjavah.c (jni_print_float): Do not emit floating-point
diff --git a/gcc/java/jv-scan.c b/gcc/java/jv-scan.c
index 3c55d5961563b2f81ccca353631a94bee3c11b82..5f90ee93392d00c531de5ca8cc51a598f7ca14b2 100644
--- a/gcc/java/jv-scan.c
+++ b/gcc/java/jv-scan.c
@@ -237,6 +237,8 @@ main (int argc, char **argv)
 	    if (encoding == NULL || *encoding == '\0')
 	      encoding = DEFAULT_ENCODING;
 
+            input_filename = filename;
+            input_line = 0;
 	    java_init_lex (finput, encoding);
 	    ctxp->filename = filename;
 	    yyparse ();
diff --git a/gcc/java/parse-scan.y b/gcc/java/parse-scan.y
index f3f5faae4572025a05a2a4e60840d63520a64275..189ee728e124fdf176e67eba66b820ade010f854 100644
--- a/gcc/java/parse-scan.y
+++ b/gcc/java/parse-scan.y
@@ -515,10 +515,10 @@ formal_parameter:
 		  if (bracket_count)
 		    {
 		      int i;
-		      char *n = xmalloc (bracket_count + 1 + strlen ($$));
+		      char *n = xmalloc (bracket_count + 1 + strlen ($2));
 		      for (i = 0; i < bracket_count; ++i)
 			n[i] = '[';
-		      strcpy (n + bracket_count, $$);
+		      strcpy (n + bracket_count, $2);
 		      $$ = n;
 		    }
 		  else