Mercurial > hg > release > icedtea7-forest-2.2 > langtools
changeset 216:000d1e518bc5
Merge
author | tbell |
---|---|
date | Fri, 06 Feb 2009 17:24:04 -0800 |
parents | 638d5fbf5e78 (current diff) 58fcba61a77d (diff) |
children | c53007f34195 6ada6122dd4f |
files | |
diffstat | 15 files changed, 218 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Fri Feb 06 09:44:58 2009 -0800 +++ b/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Fri Feb 06 17:24:04 2009 -0800 @@ -371,6 +371,7 @@ context.get(DiagnosticListener.class) != null; devVerbose = options.get("dev") != null; processPcks = options.get("process.packages") != null; + werror = options.get("-Werror") != null; verboseCompilePolicy = options.get("verboseCompilePolicy") != null; @@ -434,6 +435,10 @@ */ protected boolean processPcks; + /** Switch: treat warnings as errors + */ + protected boolean werror; + /** Switch: is annotation processing requested explitly via * CompilationTask.setProcessors? */ @@ -490,7 +495,11 @@ public int errorCount() { if (delegateCompiler != null && delegateCompiler != this) return delegateCompiler.errorCount(); - else + else { + if (werror && log.nerrors == 0 && log.nwarnings > 0) { + log.error("warnings.and.werror"); + } + } return log.nerrors; }
--- a/src/share/classes/com/sun/tools/javac/main/Main.java Fri Feb 06 09:44:58 2009 -0800 +++ b/src/share/classes/com/sun/tools/javac/main/Main.java Fri Feb 06 17:24:04 2009 -0800 @@ -406,8 +406,7 @@ } } - if (comp.errorCount() != 0 || - options.get("-Werror") != null && comp.warningCount() != 0) + if (comp.errorCount() != 0) return EXIT_ERROR; } catch (IOException ex) { ioMessage(ex);
--- a/src/share/classes/com/sun/tools/javac/main/RecognizedOptions.java Fri Feb 06 09:44:58 2009 -0800 +++ b/src/share/classes/com/sun/tools/javac/main/RecognizedOptions.java Fri Feb 06 17:24:04 2009 -0800 @@ -449,7 +449,7 @@ }, // treat warnings as errors - new HiddenOption(WERROR), + new Option(WERROR, "opt.Werror"), // use complex inference from context in the position of a method call argument new HiddenOption(COMPLEXINFERENCE),
--- a/src/share/classes/com/sun/tools/javac/resources/compiler.properties Fri Feb 06 09:44:58 2009 -0800 +++ b/src/share/classes/com/sun/tools/javac/resources/compiler.properties Fri Feb 06 17:24:04 2009 -0800 @@ -346,6 +346,9 @@ compiler.err.pkg.clashes.with.class.of.same.name=\ package {0} clashes with class of same name +compiler.err.warnings.and.werror=\ + warnings found and -Werror specified + # Errors related to annotation processing compiler.err.proc.cant.access=\
--- a/src/share/classes/com/sun/tools/javac/resources/javac.properties Fri Feb 06 09:44:58 2009 -0800 +++ b/src/share/classes/com/sun/tools/javac/resources/javac.properties Fri Feb 06 17:24:04 2009 -0800 @@ -69,6 +69,8 @@ Generate class files for specific VM version javac.opt.source=\ Provide source compatibility with specified release +javac.opt.Werror=\ + Terminate compilation if warnings occur javac.opt.A=\ Options to pass to annotation processors javac.opt.implicit=\
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/classes/javax/lang/model/UnknownEntityException.java Fri Feb 06 17:24:04 2009 -0800 @@ -0,0 +1,57 @@ +/* + * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package javax.lang.model; + +/** + * Superclass of exceptions which indicate that an unknown kind of + * entity was encountered. This situation can occur if the language + * evolves and new kinds of constructs are introduced. Subclasses of + * this exception may be thrown by visitors to indicate that the + * visitor was created for a prior version of the language. + * + * <p>A common superclass for those exceptions allows a single catch + * block to have code handling them uniformly. + * + * @author Joseph D. Darcy + * @see javax.lang.model.element.UnknownElementException + * @see javax.lang.model.element.UnknownAnnotationValueException + * @see javax.lang.model.type.UnknownTypeException + * @since 1.7 + */ +public class UnknownEntityException extends RuntimeException { + + private static final long serialVersionUID = 269L; + + /** + * Creates a new {@code UnknownEntityException} with the specified + * detail message. + * + * @param message the detail message + */ + protected UnknownEntityException(String message) { + super(message); + } +}
--- a/src/share/classes/javax/lang/model/element/UnknownAnnotationValueException.java Fri Feb 06 09:44:58 2009 -0800 +++ b/src/share/classes/javax/lang/model/element/UnknownAnnotationValueException.java Fri Feb 06 17:24:04 2009 -0800 @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ package javax.lang.model.element; +import javax.lang.model.UnknownEntityException; + /** * Indicates that an unknown kind of annotation value was encountered. * This can occur if the language evolves and new kinds of annotation @@ -39,7 +41,7 @@ * @see AnnotationValueVisitor#visitUnknown * @since 1.6 */ -public class UnknownAnnotationValueException extends RuntimeException { +public class UnknownAnnotationValueException extends UnknownEntityException { private static final long serialVersionUID = 269L;
--- a/src/share/classes/javax/lang/model/element/UnknownElementException.java Fri Feb 06 09:44:58 2009 -0800 +++ b/src/share/classes/javax/lang/model/element/UnknownElementException.java Fri Feb 06 17:24:04 2009 -0800 @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ package javax.lang.model.element; +import javax.lang.model.UnknownEntityException; + /** * Indicates that an unknown kind of element was encountered. This * can occur if the language evolves and new kinds of elements are @@ -38,7 +40,7 @@ * @see ElementVisitor#visitUnknown * @since 1.6 */ -public class UnknownElementException extends RuntimeException { +public class UnknownElementException extends UnknownEntityException { private static final long serialVersionUID = 269L;
--- a/src/share/classes/javax/lang/model/type/UnknownTypeException.java Fri Feb 06 09:44:58 2009 -0800 +++ b/src/share/classes/javax/lang/model/type/UnknownTypeException.java Fri Feb 06 17:24:04 2009 -0800 @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ package javax.lang.model.type; +import javax.lang.model.UnknownEntityException; + /** * Indicates that an unknown kind of type was encountered. This can * occur if the language evolves and new kinds of types are added to @@ -38,7 +40,7 @@ * @see TypeVisitor#visitUnknown * @since 1.6 */ -public class UnknownTypeException extends RuntimeException { +public class UnknownTypeException extends UnknownEntityException { private static final long serialVersionUID = 269L;
--- a/test/tools/javac/6304921/T6304921.out Fri Feb 06 09:44:58 2009 -0800 +++ b/test/tools/javac/6304921/T6304921.out Fri Feb 06 17:24:04 2009 -0800 @@ -7,12 +7,7 @@ required: java.util.List<java.lang.Integer> List<Integer> list = new ArrayList(); ^ -T6304921.java:445/445/453: warning: [fallthrough] possible fall-through into case - default: - ^ -T6304921.java:522/613/614: warning: [finally] finally clause cannot complete normally - } - ^ +error: warnings found and -Werror specified T6304921.java:727/733/737: cannot find symbol symbol : variable orr location: class java.lang.System @@ -21,5 +16,5 @@ T6304921.java:812/816/822: operator + cannot be applied to int,boolean return 123 + true; // bad binary expression ^ -2 errors -4 warnings +3 errors +2 warnings
--- a/test/tools/javac/6758789/T6758789b.out Fri Feb 06 09:44:58 2009 -0800 +++ b/test/tools/javac/6758789/T6758789b.out Fri Feb 06 17:24:04 2009 -0800 @@ -1,3 +1,5 @@ T6758789b.java:39:11: compiler.warn.prob.found.req: (- compiler.misc.unchecked.assign), T6758789a.Foo, T6758789a.Foo<X> T6758789b.java:39:10: compiler.warn.unchecked.meth.invocation.applied: kindname.method, m, T6758789a.Foo<X>, T6758789a.Foo, kindname.class, T6758789a +- compiler.err.warnings.and.werror +1 error 2 warnings
--- a/test/tools/javac/T6241723.out Fri Feb 06 09:44:58 2009 -0800 +++ b/test/tools/javac/T6241723.out Fri Feb 06 17:24:04 2009 -0800 @@ -2,4 +2,6 @@ T6241723.java:23:7: compiler.warn.has.been.deprecated: A2.A21, A2 T6241723.java:26:5: compiler.warn.has.been.deprecated: Z1, unnamed package T6241723.java:28:7: compiler.warn.has.been.deprecated: Z2.Z21, Z2 +- compiler.err.warnings.and.werror +1 error 4 warnings
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/T6595666.java Fri Feb 06 17:24:04 2009 -0800 @@ -0,0 +1,68 @@ +/* + * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6595666 + * @summary fix -Werror + */ + +import java.io.*; +import java.util.*; + +public class T6595666 { + void m() { + // the following line must create warnings with -Xlint, because of unchecked conversion + List<Integer> list = new ArrayList(); + } + + public static void main(String... args) throws Exception { + File testSrc = new File(System.getProperty("test.src", ".")); + + String basename = T6595666.class.getName(); + File srcFile = new File(testSrc, basename+".java"); + File classFile = new File(basename+".class"); + classFile.delete(); + if (classFile.exists()) + throw new Exception("setup error, can't delete " + classFile); + + compile(1, "-d", ".", "-Xlint", "-Werror", srcFile.getPath()); + if (classFile.exists()) + throw new Exception("failed: found " + classFile); + + compile(0, "-d", ".", "-Xlint", srcFile.getPath()); + if (!classFile.exists()) + throw new Exception("failed: " + classFile + " not found"); + } + + private static void compile(int rc, String... args) throws Exception { + System.err.println("compile: " + Arrays.asList(args)); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + int rc2 = com.sun.tools.javac.Main.compile(args, pw); + pw.close(); + System.err.println(sw); + if (rc != rc2) + throw new Exception("bad exit code; expected " + rc + ", found " + rc2); + } +}
--- a/test/tools/javac/depDocComment/DeprecatedDocComment.out Fri Feb 06 09:44:58 2009 -0800 +++ b/test/tools/javac/depDocComment/DeprecatedDocComment.out Fri Feb 06 17:24:04 2009 -0800 @@ -1,4 +1,6 @@ DeprecatedDocComment.java:27:28: compiler.warn.has.been.deprecated: deprecatedTest1(), DeprecatedDocComment2 DeprecatedDocComment.java:31:28: compiler.warn.has.been.deprecated: deprecatedTest5(), DeprecatedDocComment2 DeprecatedDocComment.java:32:28: compiler.warn.has.been.deprecated: deprecatedTest6(), DeprecatedDocComment2 +- compiler.err.warnings.and.werror +1 error 3 warnings
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/processing/model/TestExceptions.java Fri Feb 06 17:24:04 2009 -0800 @@ -0,0 +1,55 @@ +/* + * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6794071 + * @summary Test that exceptions have a proper parent class + * @author Joseph D. Darcy + */ + +import javax.lang.model.UnknownEntityException; +import javax.lang.model.element.*; +import javax.lang.model.type.*; + +/* + * Verify UnknownFooExceptions can be caught with a common parent + * exception. + */ +public class TestExceptions { + public static void main(String... args) { + RuntimeException[] exceptions = { + new UnknownElementException((Element)null, (Object)null), + new UnknownAnnotationValueException((AnnotationValue) null, (Object) null), + new UnknownTypeException((TypeMirror)null, (Object)null) + }; + + for(RuntimeException exception : exceptions) { + try { + throw exception; + } catch (UnknownEntityException uee) { + ; + } + } + } +}