From 518efd59c164601808b8e62fa48fc3645ab2b4eb Mon Sep 17 00:00:00 2001 From: Maurizio Cimadamore Date: Tue, 16 Jun 2009 10:45:11 +0100 Subject: [PATCH] 6845686: basic and raw formatters do not display captured var id properly when javac runs in -XDoldDiags mode Basic and raw formatters do not override Printer methods properly Reviewed-by: jjg --- .../tools/javac/util/AbstractDiagnosticFormatter.java | 10 +++++++--- .../test/tools/javac/Diagnostics/6799605/T6799605.java | 1 + .../test/tools/javac/Diagnostics/6799605/T6799605.out | 6 +++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/langtools/src/share/classes/com/sun/tools/javac/util/AbstractDiagnosticFormatter.java b/langtools/src/share/classes/com/sun/tools/javac/util/AbstractDiagnosticFormatter.java index 4d896fd7797..94bd7e82459 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/util/AbstractDiagnosticFormatter.java +++ b/langtools/src/share/classes/com/sun/tools/javac/util/AbstractDiagnosticFormatter.java @@ -172,9 +172,6 @@ public abstract class AbstractDiagnosticFormatter implements DiagnosticFormatter return formatIterable(d, (Iterable)arg, l); } else if (arg instanceof Type) { - if (!allCaptured.contains(arg)) { - allCaptured = allCaptured.append((Type)arg); - } return printer.visit((Type)arg, l); } else if (arg instanceof Symbol) { @@ -482,5 +479,12 @@ public abstract class AbstractDiagnosticFormatter implements DiagnosticFormatter protected String capturedVarId(CapturedType t, Locale locale) { return "" + (allCaptured.indexOf(t) + 1); } + @Override + public String visitCapturedType(CapturedType t, Locale locale) { + if (!allCaptured.contains(t)) { + allCaptured = allCaptured.append(t); + } + return super.visitCapturedType(t, locale); + } }; } diff --git a/langtools/test/tools/javac/Diagnostics/6799605/T6799605.java b/langtools/test/tools/javac/Diagnostics/6799605/T6799605.java index bcd7e842865..a1eaa65b7f4 100644 --- a/langtools/test/tools/javac/Diagnostics/6799605/T6799605.java +++ b/langtools/test/tools/javac/Diagnostics/6799605/T6799605.java @@ -27,6 +27,7 @@ * @summary Basic/Raw formatters should use type/symbol printer instead of toString() * @author mcimadamore * @compile/fail/ref=T6799605.out -XDrawDiagnostics T6799605.java + * @compile/fail/ref=T6799605.out -XDoldDiags -XDrawDiagnostics T6799605.java */ class T6799605 { diff --git a/langtools/test/tools/javac/Diagnostics/6799605/T6799605.out b/langtools/test/tools/javac/Diagnostics/6799605/T6799605.out index 9179e6a8d97..ae287cc113e 100644 --- a/langtools/test/tools/javac/Diagnostics/6799605/T6799605.out +++ b/langtools/test/tools/javac/Diagnostics/6799605/T6799605.out @@ -1,4 +1,4 @@ -T6799605.java:39:9: compiler.err.cant.resolve.location.args: kindname.method, m, , T6799605, kindname.class, T6799605 -T6799605.java:40:9: compiler.err.cant.resolve.location.args: kindname.method, m, , T6799605,T6799605, kindname.class, T6799605 -T6799605.java:41:9: compiler.err.cant.resolve.location.args: kindname.method, m, , T6799605,T6799605,T6799605, kindname.class, T6799605 +T6799605.java:40:9: compiler.err.cant.resolve.location.args: kindname.method, m, , T6799605, kindname.class, T6799605 +T6799605.java:41:9: compiler.err.cant.resolve.location.args: kindname.method, m, , T6799605,T6799605, kindname.class, T6799605 +T6799605.java:42:9: compiler.err.cant.resolve.location.args: kindname.method, m, , T6799605,T6799605,T6799605, kindname.class, T6799605 3 errors