# HG changeset patch # User lana # Date 1291696549 28800 # Node ID 1bf969e9792f977a8593496681539840a54fe644 # Parent d53cf2e9ad6ce38fd079c53e153fc5d4fec40716# Parent bcbc86cc5b3183fad0b0bd1e7e2aa299298d6bd9 Merge diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/code/Lint.java --- a/src/share/classes/com/sun/tools/javac/code/Lint.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/code/Lint.java Mon Dec 06 20:35:49 2010 -0800 @@ -165,6 +165,11 @@ FINALLY("finally"), /** + * Warn about issues relating to use of command line options + */ + OPTIONS("options"), + + /** * Warn about issues regarding method overrides. */ OVERRIDES("overrides"), @@ -182,39 +187,39 @@ PROCESSING("processing"), /** + * Warn about unchecked operations on raw types. + */ + RAW("rawtypes"), + + /** * Warn about Serializable classes that do not provide a serial version ID. */ SERIAL("serial"), /** + * Warn about issues relating to use of statics + */ + STATIC("static"), + + /** + * Warn about proprietary API that may be removed in a future release. + */ + SUNAPI("sunapi", true), + + /** + * Warn about issues relating to use of try blocks (i.e. try-with-resources) + */ + TRY("try"), + + /** * Warn about unchecked operations on raw types. */ UNCHECKED("unchecked"), /** - * Warn about unchecked operations on raw types. - */ - RAW("rawtypes"), - - /** - * Warn about proprietary API that may be removed in a future release. - */ - SUNAPI("sunapi", true), - - /** - * Warn about issues relating to use of statics - */ - STATIC("static"), - - /** * Warn about potentially unsafe vararg methods */ - VARARGS("varargs"), - - /** - * Warn about issues relating to use of try blocks (i.e. try-with-resources) - */ - TRY("try"); + VARARGS("varargs"); LintCategory(String option) { this(option, false); diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/code/Scope.java --- a/src/share/classes/com/sun/tools/javac/code/Scope.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/code/Scope.java Mon Dec 06 20:35:49 2010 -0800 @@ -528,7 +528,7 @@ } public Entry next() { Entry e = super.shadowed; - while (isBogus()) + while (e.isBogus()) e = e.shadowed; return e; } diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/code/Source.java --- a/src/share/classes/com/sun/tools/javac/code/Source.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/code/Source.java Mon Dec 06 20:35:49 2010 -0800 @@ -174,9 +174,6 @@ public boolean allowUnderscoresInLiterals() { return compareTo(JDK1_7) >= 0; } - public boolean allowExoticIdentifiers() { - return compareTo(JDK1_7) >= 0; - } public boolean allowStringsInSwitch() { return compareTo(JDK1_7) >= 0; } diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/code/Types.java --- a/src/share/classes/com/sun/tools/javac/code/Types.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/code/Types.java Mon Dec 06 20:35:49 2010 -0800 @@ -2772,6 +2772,8 @@ public Type glb(Type t, Type s) { if (s == null) return t; + else if (t.isPrimitive() || s.isPrimitive()) + return syms.errType; else if (isSubtypeNoCapture(t, s)) return t; else if (isSubtypeNoCapture(s, t)) @@ -2928,6 +2930,15 @@ } /** + * Return the boxed type if 't' is primitive, otherwise return 't' itself. + */ + public Type boxedTypeOrType(Type t) { + return t.isPrimitive() ? + boxedClass(t).type : + t; + } + + /** * Return the primitive type corresponding to a boxed type. */ public Type unboxedType(Type t) { diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/comp/Infer.java --- a/src/share/classes/com/sun/tools/javac/comp/Infer.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/comp/Infer.java Mon Dec 06 20:35:49 2010 -0800 @@ -305,7 +305,8 @@ uv.hibounds = hibounds.toList(); } Type qtype1 = types.subst(that.qtype, that.tvars, undetvars); - if (!types.isSubtype(qtype1, to)) { + if (!types.isSubtype(qtype1, + qtype1.tag == UNDETVAR ? types.boxedTypeOrType(to) : to)) { throw unambiguousNoInstanceException .setMessage("infer.no.conforming.instance.exists", that.tvars, that.qtype, to); diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/file/JavacFileManager.java --- a/src/share/classes/com/sun/tools/javac/file/JavacFileManager.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/file/JavacFileManager.java Mon Dec 06 20:35:49 2010 -0800 @@ -25,6 +25,7 @@ package com.sun.tools.javac.file; +import java.util.Comparator; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; @@ -110,6 +111,20 @@ protected boolean mmappedIO; protected boolean ignoreSymbolFile; + protected enum SortFiles implements Comparator { + FORWARD { + public int compare(File f1, File f2) { + return f1.getName().compareTo(f2.getName()); + } + }, + REVERSE { + public int compare(File f1, File f2) { + return -f1.getName().compareTo(f2.getName()); + } + }; + }; + protected SortFiles sortFiles; + /** * Register a Context.Factory to create a JavacFileManager. */ @@ -152,6 +167,16 @@ mmappedIO = options.isSet("mmappedIO"); ignoreSymbolFile = options.isSet("ignore.symbol.file"); + + String sf = options.get("sortFiles"); + if (sf != null) { + sortFiles = (sf.equals("reverse") ? SortFiles.REVERSE : SortFiles.FORWARD); + } + } + + @Override + public boolean isDefaultBootClassPath() { + return paths.isDefaultBootClassPath(); } public JavaFileObject getFileForInput(String name) { @@ -293,6 +318,9 @@ if (files == null) return; + if (sortFiles != null) + Arrays.sort(files, sortFiles); + for (File f: files) { String fname = f.getName(); if (f.isDirectory()) { diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/file/Paths.java --- a/src/share/classes/com/sun/tools/javac/file/Paths.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/file/Paths.java Mon Dec 06 20:35:49 2010 -0800 @@ -114,6 +114,11 @@ */ private File bootClassPathRtJar = null; + /** + * Is bootclasspath the default? + */ + private boolean isDefaultBootClassPath; + Path getPathForLocation(Location location) { Path path = pathsForLocation.get(location); if (path == null) @@ -129,7 +134,7 @@ if (location == CLASS_PATH) p = computeUserClassPath(); else if (location == PLATFORM_CLASS_PATH) - p = computeBootClassPath(); + p = computeBootClassPath(); // sets isDefaultBootClassPath else if (location == ANNOTATION_PROCESSOR_PATH) p = computeAnnotationProcessorPath(); else if (location == SOURCE_PATH) @@ -138,6 +143,8 @@ // no defaults for other paths p = null; } else { + if (location == PLATFORM_CLASS_PATH) + isDefaultBootClassPath = false; p = new Path(); for (File f: path) p.addFile(f, warn); // TODO: is use of warn appropriate? @@ -145,6 +152,11 @@ pathsForLocation.put(location, p); } + public boolean isDefaultBootClassPath() { + lazy(); + return isDefaultBootClassPath; + } + protected void lazy() { if (!inited) { warn = lint.isEnabled(Lint.LintCategory.PATH); @@ -262,9 +274,10 @@ } public Path addFiles(String files, boolean warn) { - if (files != null) + if (files != null) { for (File file : getPathEntries(files, emptyPathDefault)) addFile(file, warn); + } return this; } @@ -334,18 +347,23 @@ private Path computeBootClassPath() { bootClassPathRtJar = null; - String optionValue; Path path = new Path(); - path.addFiles(options.get(XBOOTCLASSPATH_PREPEND)); + String bootclasspathOpt = options.get(BOOTCLASSPATH); + String endorseddirsOpt = options.get(ENDORSEDDIRS); + String extdirsOpt = options.get(EXTDIRS); + String xbootclasspathPrependOpt = options.get(XBOOTCLASSPATH_PREPEND); + String xbootclasspathAppendOpt = options.get(XBOOTCLASSPATH_APPEND); - if ((optionValue = options.get(ENDORSEDDIRS)) != null) - path.addDirectories(optionValue); + path.addFiles(xbootclasspathPrependOpt); + + if (endorseddirsOpt != null) + path.addDirectories(endorseddirsOpt); else path.addDirectories(System.getProperty("java.endorsed.dirs"), false); - if ((optionValue = options.get(BOOTCLASSPATH)) != null) { - path.addFiles(optionValue); + if (bootclasspathOpt != null) { + path.addFiles(bootclasspathOpt); } else { // Standard system classes for this compiler's release. String files = System.getProperty("sun.boot.class.path"); @@ -357,16 +375,21 @@ } } - path.addFiles(options.get(XBOOTCLASSPATH_APPEND)); + path.addFiles(xbootclasspathAppendOpt); // Strictly speaking, standard extensions are not bootstrap // classes, but we treat them identically, so we'll pretend // that they are. - if ((optionValue = options.get(EXTDIRS)) != null) - path.addDirectories(optionValue); + if (extdirsOpt != null) + path.addDirectories(extdirsOpt); else path.addDirectories(System.getProperty("java.ext.dirs"), false); + isDefaultBootClassPath = + (xbootclasspathPrependOpt == null) && + (bootclasspathOpt == null) && + (xbootclasspathAppendOpt == null); + return path; } diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/jvm/ClassReader.java --- a/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Mon Dec 06 20:35:49 2010 -0800 @@ -2615,7 +2615,6 @@ String binaryName = fileManager.inferBinaryName(currentLoc, fo); String simpleName = binaryName.substring(binaryName.lastIndexOf(".") + 1); if (SourceVersion.isIdentifier(simpleName) || - fo.getKind() == JavaFileObject.Kind.CLASS || simpleName.equals("package-info")) includeClassFile(p, fo); break; diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/main/JavaCompiler.java --- a/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Mon Dec 06 20:35:49 2010 -0800 @@ -51,6 +51,7 @@ import com.sun.tools.javac.file.JavacFileManager; import com.sun.tools.javac.util.*; import com.sun.tools.javac.code.*; +import com.sun.tools.javac.code.Lint.LintCategory; import com.sun.tools.javac.code.Symbol.*; import com.sun.tools.javac.tree.*; import com.sun.tools.javac.tree.JCTree.*; @@ -370,6 +371,15 @@ processPcks = options.isSet("process.packages"); werror = options.isSet(WERROR); + if (source.compareTo(Source.DEFAULT) < 0) { + if (options.isUnset(XLINT_CUSTOM, "-" + LintCategory.OPTIONS.option)) { + if (fileManager instanceof BaseFileManager) { + if (((BaseFileManager) fileManager).isDefaultBootClassPath()) + log.warning(LintCategory.OPTIONS, "source.no.bootclasspath", source.name); + } + } + } + verboseCompilePolicy = options.isSet("verboseCompilePolicy"); if (attrParseOnly) @@ -783,6 +793,7 @@ hasBeenUsed = true; start_msec = now(); + try { initProcessAnnotations(processors); @@ -797,7 +808,7 @@ elapsed_msec = delegateCompiler.elapsed_msec; } catch (Abort ex) { if (devVerbose) - ex.printStackTrace(); + ex.printStackTrace(System.err); } finally { if (procEnvImpl != null) procEnvImpl.close(); @@ -841,7 +852,7 @@ } } catch (Abort ex) { if (devVerbose) - ex.printStackTrace(); + ex.printStackTrace(System.err); } if (verbose) { diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/main/Main.java --- a/src/share/classes/com/sun/tools/javac/main/Main.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/main/Main.java Mon Dec 06 20:35:49 2010 -0800 @@ -420,7 +420,7 @@ processors); if (log.expectDiagKeys != null) { - if (log.expectDiagKeys.size() == 0) { + if (log.expectDiagKeys.isEmpty()) { Log.printLines(log.noticeWriter, "all expected diagnostics found"); return EXIT_OK; } else { @@ -506,7 +506,7 @@ void apMessage(AnnotationProcessingError ex) { Log.printLines(out, getLocalizedString("msg.proc.annotation.uncaught.exception")); - ex.getCause().printStackTrace(); + ex.getCause().printStackTrace(out); } /** Display the location and checksum of a class. */ @@ -563,6 +563,7 @@ public static void useRawMessages(boolean enable) { if (enable) { messages = new JavacMessages(javacBundleName) { + @Override public String getLocalizedString(String key, Object... args) { return key; } diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/nio/JavacPathFileManager.java --- a/src/share/classes/com/sun/tools/javac/nio/JavacPathFileManager.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/nio/JavacPathFileManager.java Mon Dec 06 20:35:49 2010 -0800 @@ -172,6 +172,11 @@ return getClassLoader(lb.toArray(new URL[lb.size()])); } + @Override + public boolean isDefaultBootClassPath() { + return searchPaths.isDefaultBootClassPath(); + } + // public boolean hasLocation(Location location) { diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/parser/Scanner.java --- a/src/share/classes/com/sun/tools/javac/parser/Scanner.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/parser/Scanner.java Mon Dec 06 20:35:49 2010 -0800 @@ -66,10 +66,6 @@ */ private boolean allowUnderscoresInLiterals; - /** Allow exotic identifiers. - */ - private boolean allowExoticIdentifiers; - /** The source language setting. */ private Source source; @@ -143,7 +139,6 @@ allowBinaryLiterals = source.allowBinaryLiterals(); allowHexFloats = source.allowHexFloats(); allowUnderscoresInLiterals = source.allowBinaryLiterals(); - allowExoticIdentifiers = source.allowExoticIdentifiers(); // for invokedynamic } private static final boolean hexFloatsWork = hexFloatsWork(); @@ -295,7 +290,7 @@ /** Read next character in character or string literal and copy into sbuf. */ - private void scanLitChar(boolean forBytecodeName) { + private void scanLitChar() { if (ch == '\\') { if (buf[bp+1] == '\\' && unicodeConversionBp != bp) { bp++; @@ -335,18 +330,6 @@ putChar('\"'); scanChar(); break; case '\\': putChar('\\'); scanChar(); break; - case '|': case ',': case '?': case '%': - case '^': case '_': case '{': case '}': - case '!': case '-': case '=': - if (forBytecodeName) { - // Accept escape sequences for dangerous bytecode chars. - // This is illegal in normal Java string or character literals. - // Note that the escape sequence itself is passed through. - putChar('\\'); putChar(ch); scanChar(); - } else { - lexError(bp, "illegal.esc.char"); - } - break; default: lexError(bp, "illegal.esc.char"); } @@ -355,24 +338,6 @@ putChar(ch); scanChar(); } } - private void scanLitChar() { - scanLitChar(false); - } - - /** Read next character in an exotic name #"foo" - */ - private void scanBytecodeNameChar() { - switch (ch) { - // reject any "dangerous" char which is illegal somewhere in the JVM spec - // cf. http://blogs.sun.com/jrose/entry/symbolic_freedom_in_the_vm - case '/': case '.': case ';': // illegal everywhere - case '<': case '>': // illegal in methods, dangerous in classes - case '[': // illegal in classes - lexError(bp, "illegal.bytecode.ident.char", String.valueOf((int)ch)); - break; - } - scanLitChar(true); - } private void scanDigits(int digitRadix) { char saveCh; @@ -970,30 +935,6 @@ lexError(pos, "unclosed.str.lit"); } return; - case '#': - scanChar(); - if (ch == '\"') { - if (!allowExoticIdentifiers) { - lexError("unsupported.exotic.id", source.name); - allowExoticIdentifiers = true; - } - scanChar(); - if (ch == '\"') - lexError(pos, "empty.bytecode.ident"); - while (ch != '\"' && ch != CR && ch != LF && bp < buflen) { - scanBytecodeNameChar(); - } - if (ch == '\"') { - name = names.fromChars(sbuf, 0, sp); - token = IDENTIFIER; // even if #"int" or #"do" - scanChar(); - } else { - lexError(pos, "unclosed.bytecode.ident"); - } - } else { - lexError("illegal.char", String.valueOf((int)'#')); - } - return; default: if (isSpecial(ch)) { scanOperator(); diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/resources/compiler.properties --- a/src/share/classes/com/sun/tools/javac/resources/compiler.properties Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/resources/compiler.properties Mon Dec 06 20:35:49 2010 -0800 @@ -153,8 +153,6 @@ compiler.err.else.without.if=\ ''else'' without ''if'' -compiler.err.empty.bytecode.ident=\ - empty bytecode identifier compiler.err.empty.char.lit=\ empty character literal compiler.err.encl.class.required=\ @@ -201,8 +199,6 @@ compiler.err.icls.cant.have.static.decl=\ inner classes cannot have static declarations -compiler.err.illegal.bytecode.ident.char=\ - illegal bytecode identifier character: \\{0} compiler.err.illegal.char=\ illegal character: \\{0} compiler.err.illegal.char.for.encoding=\ @@ -472,8 +468,6 @@ compiler.err.types.incompatible.diff.ret=\ types {0} and {1} are incompatible; both define {2}, but with unrelated return types -compiler.err.unclosed.bytecode.ident=\ - unclosed bytecode identifier compiler.err.unclosed.char.lit=\ unclosed character literal compiler.err.unclosed.comment=\ @@ -770,6 +764,9 @@ compiler.warn.static.not.qualified.by.type=\ static {0} should be qualified by type name, {1}, instead of by an expression +compiler.warn.source.no.bootclasspath=\ + bootstrap class path not set in conjunction with -source {0} + # Warnings related to annotation processing compiler.warn.proc.package.does.not.exist=\ package {0} does not exist @@ -1269,10 +1266,6 @@ underscores in literals are not supported in -source {0}\n\ (use -source 7 or higher to enable underscores in literals) -compiler.err.unsupported.exotic.id=\ - exotic identifiers #"___" are not supported in -source {0}\n\ -(use -source 7 or higher to enable exotic identifiers) - compiler.err.try.with.resources.not.supported.in.source=\ try-with-resources is not supported in -source {0}\n\ (use -source 7 or higher to enable try-with-resources) diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javac/util/BaseFileManager.java --- a/src/share/classes/com/sun/tools/javac/util/BaseFileManager.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javac/util/BaseFileManager.java Mon Dec 06 20:35:49 2010 -0800 @@ -59,7 +59,7 @@ * There are no references here to file-system specific objects such as * java.io.File or java.nio.file.Path. */ -public class BaseFileManager { +public abstract class BaseFileManager { protected BaseFileManager(Charset charset) { this.charset = charset; byteBufferCache = new ByteBufferCache(); @@ -163,6 +163,9 @@ } return -1; } + + public abstract boolean isDefaultBootClassPath(); + // // diff -r d53cf2e9ad6c -r 1bf969e9792f src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java --- a/src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java Fri Dec 03 19:45:34 2010 -0800 +++ b/src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java Mon Dec 06 20:35:49 2010 -0800 @@ -62,6 +62,7 @@ private JavadocClassReader(Context context) { super(context, true); docenv = DocEnv.instance(context); + preferSource = true; } /** diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/6341866/T6341866.java --- a/test/tools/javac/6341866/T6341866.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/6341866/T6341866.java Mon Dec 06 20:35:49 2010 -0800 @@ -97,7 +97,7 @@ processorServices.delete(); List opts = new ArrayList(); - opts.addAll(Arrays.asList("-d", ".", "-sourcepath", testSrc, "-classpath", testClasses, "-source", "1.6")); + opts.addAll(Arrays.asList("-d", ".", "-sourcepath", testSrc, "-classpath", testClasses, "-source", "1.6", "-Xlint:-options")); if (implicitType.opt != null) opts.add(implicitType.opt); diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/ClassFileModifiers/MemberModifiers.java --- a/test/tools/javac/ClassFileModifiers/MemberModifiers.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/ClassFileModifiers/MemberModifiers.java Mon Dec 06 20:35:49 2010 -0800 @@ -26,7 +26,7 @@ * @bug 4249112 4785453 * @summary Verify that implicit member modifiers are set correctly. * - * @compile/ref=MemberModifiers.out -source 1.4 -target 1.4.2 -XDdumpmodifiers=cfm MemberModifiers.java + * @compile/ref=MemberModifiers.out -source 1.4 -target 1.4.2 -Xlint:-options -XDdumpmodifiers=cfm MemberModifiers.java */ // Currently, we check only that members of final classes are not final. diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/T6900037.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/T6900037.java Mon Dec 06 20:35:49 2010 -0800 @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6900037 + * @summary javac should warn if earlier -source is used and bootclasspath not set + * @compile T6900037.java + * @compile -source 1.6 T6900037.java + * @compile/fail/ref=T6900037.out -XDrawDiagnostics -Werror -source 1.6 T6900037.java + * @compile -Werror -source 1.6 -Xlint:-options T6900037.java + */ + +class T6900037 { } diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/T6900037.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/T6900037.out Mon Dec 06 20:35:49 2010 -0800 @@ -0,0 +1,4 @@ +- compiler.warn.source.no.bootclasspath: 1.6 +- compiler.err.warnings.and.werror +1 error +1 warning diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/TryWithResources/PlainTry.java --- a/test/tools/javac/TryWithResources/PlainTry.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/TryWithResources/PlainTry.java Mon Dec 06 20:35:49 2010 -0800 @@ -3,8 +3,8 @@ * @bug 6911256 6964740 * @author Joseph D. Darcy * @summary Test error messages for an unadorned try - * @compile/fail/ref=PlainTry6.out -XDrawDiagnostics -source 6 PlainTry.java - * @compile/fail/ref=PlainTry.out -XDrawDiagnostics PlainTry.java + * @compile/fail/ref=PlainTry6.out -XDrawDiagnostics -source 6 -Xlint:-options PlainTry.java + * @compile/fail/ref=PlainTry.out -XDrawDiagnostics PlainTry.java */ public class PlainTry { public static void main(String... args) { diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/annotations/neg/Dep.java --- a/test/tools/javac/annotations/neg/Dep.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/annotations/neg/Dep.java Mon Dec 06 20:35:49 2010 -0800 @@ -27,9 +27,9 @@ * @summary Please add annotation Deprecated to supplant the javadoc tag * @author gafter * - * @compile -source 1.4 -Xlint:dep-ann -Werror Dep.java - * @compile/fail -Xlint:dep-ann -Werror Dep.java - * @compile -Xlint:dep-ann Dep.java + * @compile -source 1.4 -Xlint:-options -Xlint:dep-ann -Werror Dep.java + * @compile/fail -Xlint:dep-ann -Werror Dep.java + * @compile -Xlint:dep-ann Dep.java */ /** @deprecated */ diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/AnnotationsNotSupported.java --- a/test/tools/javac/diags/examples/AnnotationsNotSupported.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/AnnotationsNotSupported.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.annotations.not.supported.in.source -// options: -source 1.4 +// options: -source 1.4 -Xlint:-options @Deprecated class AnnotationsNotSupported { } diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/AssertAsIdentifier.java --- a/test/tools/javac/diags/examples/AssertAsIdentifier.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/AssertAsIdentifier.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.warn.assert.as.identifier -// options: -source 1.3 +// options: -source 1.3 -Xlint:-options class AssertAsIdentifier { int assert; diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/DiamondNotSupported.java --- a/test/tools/javac/diags/examples/DiamondNotSupported.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/DiamondNotSupported.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.diamond.not.supported.in.source -// options: -source 6 +// options: -source 6 -Xlint:-options import java.util.*; diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/EmptyBytecodeIdent.java --- a/test/tools/javac/diags/examples/EmptyBytecodeIdent.java Fri Dec 03 19:45:34 2010 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2010, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -// key: compiler.err.empty.bytecode.ident - -class EmptyBytecodeIdent { - int #"" = 3; -} diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/EnumAsIdentifier.java --- a/test/tools/javac/diags/examples/EnumAsIdentifier.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/EnumAsIdentifier.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.warn.enum.as.identifier -// options: -source 1.3 +// options: -source 1.3 -Xlint:-options class EnumAsIdentifier { int enum; diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/EnumsNotSupported.java --- a/test/tools/javac/diags/examples/EnumsNotSupported.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/EnumsNotSupported.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,6 +22,6 @@ */ // key: compiler.err.enums.not.supported.in.source -// options: -source 1.4 +// options: -source 1.4 -Xlint:-options enum EnumsNotSupported { A, B, C } diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/Expected2.java --- a/test/tools/javac/diags/examples/Expected2.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/Expected2.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,6 +22,6 @@ */ // key: compiler.err.expected2 -// options: -source 1.4 +// options: -source 1.4 -Xlint:-options int Expected2; diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/ForeachNotSupported.java --- a/test/tools/javac/diags/examples/ForeachNotSupported.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/ForeachNotSupported.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.foreach.not.supported.in.source -// options: -source 1.4 +// options: -source 1.4 -Xlint:-options class ForeachNotSupported { void m(String[] args) { diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/GenericsNotSupported.java --- a/test/tools/javac/diags/examples/GenericsNotSupported.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/GenericsNotSupported.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,6 +22,6 @@ */ // key: compiler.err.generics.not.supported.in.source -// options: -source 1.4 +// options: -source 1.4 -Xlint:-options class GenericsNotSupported { } diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/IllegalBytecodeIdentChar.java --- a/test/tools/javac/diags/examples/IllegalBytecodeIdentChar.java Fri Dec 03 19:45:34 2010 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2010, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -// key: compiler.err.illegal.bytecode.ident.char - -class IllegalBytecodeIdentChar { - int #"abc/def" = 3; -} diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/MulticatchNotSupported.java --- a/test/tools/javac/diags/examples/MulticatchNotSupported.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/MulticatchNotSupported.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.multicatch.not.supported.in.source -// options: -source 1.6 +// options: -source 1.6 -Xlint:-options class MulticatchNotSupported { class E1 extends Exception { } diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/NeitherConditionalSubtype.java --- a/test/tools/javac/diags/examples/NeitherConditionalSubtype.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/NeitherConditionalSubtype.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.neither.conditional.subtype -// options: -source 1.4 +// options: -source 1.4 -Xlint:-options class X { Object m(boolean b) { diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/SourceNoBootclasspath.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/diags/examples/SourceNoBootclasspath.java Mon Dec 06 20:35:49 2010 -0800 @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +// key: compiler.warn.source.no.bootclasspath +// options: -source 6 + +class SourceNoBootclasspath { } diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/StaticImportNotSupported.java --- a/test/tools/javac/diags/examples/StaticImportNotSupported.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/StaticImportNotSupported.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.static.import.not.supported.in.source -// options: -source 1.4 +// options: -source 1.4 -Xlint:-options import static java.util.regex.Pattern.*; diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/StringSwitchNotSupported.java --- a/test/tools/javac/diags/examples/StringSwitchNotSupported.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/StringSwitchNotSupported.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.string.switch.not.supported.in.source -// options: -source 6 +// options: -source 6 -Xlint:-options class StringSwitchNotSupported { int m(String s) { diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/TryResourceNotSupported.java --- a/test/tools/javac/diags/examples/TryResourceNotSupported.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/TryResourceNotSupported.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.try.with.resources.not.supported.in.source -// options: -source 1.6 +// options: -source 1.6 -Xlint:-options import java.io.*; diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/TryWithoutCatchOrFinally.java --- a/test/tools/javac/diags/examples/TryWithoutCatchOrFinally.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/TryWithoutCatchOrFinally.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.try.without.catch.or.finally -// options: -source 1.6 +// options: -source 1.6 -Xlint:-options class TryWithoutCatchOrFinally { void m() { diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/UnclosedBytecodeIdent.java --- a/test/tools/javac/diags/examples/UnclosedBytecodeIdent.java Fri Dec 03 19:45:34 2010 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2010, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -// key: compiler.err.unclosed.bytecode.ident - -class UnclosedBytecodeIdent { - int #"abc -} diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/UnsupportedBinaryLiteral.java --- a/test/tools/javac/diags/examples/UnsupportedBinaryLiteral.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/UnsupportedBinaryLiteral.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.unsupported.binary.lit -// options: -source 6 +// options: -source 6 -Xlint:-options class UnsupportedBinaryLiteral { int i = 0b01000010; diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/UnsupportedExoticID.java --- a/test/tools/javac/diags/examples/UnsupportedExoticID.java Fri Dec 03 19:45:34 2010 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2010, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -// key: compiler.err.unsupported.exotic.id -// options: -source 6 - -class UnsupportedExoticID { - void m() { - Object #"Hello!" = null; - } -} diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/UnsupportedFpLit.java --- a/test/tools/javac/diags/examples/UnsupportedFpLit.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/UnsupportedFpLit.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.unsupported.fp.lit -// options: -source 1.4 +// options: -source 1.4 -Xlint:-options class UnsupportedFpLit { float f = 0xCafe.BabeP1; diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/UnsupportedUnderscoreLiteral.java --- a/test/tools/javac/diags/examples/UnsupportedUnderscoreLiteral.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/UnsupportedUnderscoreLiteral.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.unsupported.underscore.lit -// options: -source 6 +// options: -source 6 -Xlint:-options class UnsupportedUnderscoreLiteral { int i = 123_456_789; diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/diags/examples/VarargsNotSupported.java --- a/test/tools/javac/diags/examples/VarargsNotSupported.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/diags/examples/VarargsNotSupported.java Mon Dec 06 20:35:49 2010 -0800 @@ -22,7 +22,7 @@ */ // key: compiler.err.varargs.not.supported.in.source -// options: -source 1.4 +// options: -source 1.4 -Xlint:-options class VarargsNotSupported { void m(String... args) { } diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/enum/6384542/T6384542.java --- a/test/tools/javac/enum/6384542/T6384542.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/enum/6384542/T6384542.java Mon Dec 06 20:35:49 2010 -0800 @@ -3,8 +3,8 @@ * @bug 6384542 * @summary crash: test/tools/javac/versions/check.sh * @author Peter von der Ah\u00e9 - * @compile/fail -source 1.4 T6384542.java - * @compile/fail/ref=T6384542.out -source 1.4 -XDrawDiagnostics T6384542.java + * @compile/fail -source 1.4 -Xlint:-options T6384542.java + * @compile/fail/ref=T6384542.out -source 1.4 -Xlint:-options -XDrawDiagnostics T6384542.java */ import static java.lang.Math.sin; diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/enum/6384542/T6384542a.java --- a/test/tools/javac/enum/6384542/T6384542a.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/enum/6384542/T6384542a.java Mon Dec 06 20:35:49 2010 -0800 @@ -5,8 +5,8 @@ * @author Peter von der Ah\u00e9 * @compile/fail -source 5 T6384542a.java * @compile -source 1.4 T6384542a.java - * @compile/fail/ref=T6384542a_5.out -source 5 -XDrawDiagnostics T6384542a.java - * @compile/ref=T6384542a_1_4.out -source 1.4 -XDrawDiagnostics T6384542a.java + * @compile/fail/ref=T6384542a_5.out -source 5 -Xlint:-options -XDrawDiagnostics T6384542a.java + * @compile/ref=T6384542a_1_4.out -source 1.4 -Xlint:-options -XDrawDiagnostics T6384542a.java */ public class T6384542a { diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/generics/inference/6638712/T6638712a.java --- a/test/tools/javac/generics/inference/6638712/T6638712a.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/generics/inference/6638712/T6638712a.java Mon Dec 06 20:35:49 2010 -0800 @@ -10,7 +10,7 @@ class T6638712a { - Comparator compound(Iterable> it) {} + Comparator compound(Iterable> it) { return null; } public void test(List> x) { Comparator c3 = compound(x); diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/generics/inference/6995200/T6995200.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/generics/inference/6995200/T6995200.java Mon Dec 06 20:35:49 2010 -0800 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6995200 + * + * @summary JDK 7 compiler crashes when type-variable is inferred from expected primitive type + * @author mcimadamore + * @compile T6995200.java + * + */ + +import java.util.List; + +class T6995200 { + static T getValue() { + return null; + } + + void test() { + byte v1 = getValue(); + short v2 = getValue(); + int v3 = getValue(); + long v4 = getValue(); + float v5 = getValue(); + double v6 = getValue(); + String v7 = getValue(); + String[] v8 = getValue(); + List v9 = getValue(); + List[] v10 = getValue(); + List v11 = getValue(); + List[] v12 = getValue(); + List v13 = getValue(); + List[] v14 = getValue(); + List v15 = getValue(); + List[] v16 = getValue(); + X v17 = getValue(); + X[] v18 = getValue(); + List v19 = getValue(); + List[] v20 = getValue(); + List v21 = getValue(); + List[] v22 = getValue(); + List v23 = getValue(); + List[] v24 = getValue(); + } +} diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/literals/BadBinaryLiterals.java --- a/test/tools/javac/literals/BadBinaryLiterals.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/literals/BadBinaryLiterals.java Mon Dec 06 20:35:49 2010 -0800 @@ -2,7 +2,7 @@ * @test /nodynamiccopyright/ * @bug 6860965 * @summary Project Coin: binary literals - * @compile/fail/ref=BadBinaryLiterals.6.out -XDrawDiagnostics -source 6 BadBinaryLiterals.java + * @compile/fail/ref=BadBinaryLiterals.6.out -XDrawDiagnostics -source 6 -Xlint:-options BadBinaryLiterals.java * @compile/fail/ref=BadBinaryLiterals.7.out -XDrawDiagnostics BadBinaryLiterals.java */ diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/literals/BadUnderscoreLiterals.java --- a/test/tools/javac/literals/BadUnderscoreLiterals.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/literals/BadUnderscoreLiterals.java Mon Dec 06 20:35:49 2010 -0800 @@ -7,7 +7,7 @@ * @compile/fail/ref=BadUnderscoreLiterals.7.out -XDrawDiagnostics BadUnderscoreLiterals.java * * @compile/fail -source 6 BadUnderscoreLiterals.java - * @compile/fail/ref=BadUnderscoreLiterals.6.out -XDrawDiagnostics -source 6 BadUnderscoreLiterals.java + * @compile/fail/ref=BadUnderscoreLiterals.6.out -XDrawDiagnostics -source 6 -Xlint:-options BadUnderscoreLiterals.java */ public class BadUnderscoreLiterals { diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/meth/InvokeDyn.java --- a/test/tools/javac/meth/InvokeDyn.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/meth/InvokeDyn.java Mon Dec 06 20:35:49 2010 -0800 @@ -58,7 +58,7 @@ ojunk = InvokeDynamic.greet(x, "mundus", 456); ojunk = InvokeDynamic.greet(x, "kosmos", 789); ojunk = (String) InvokeDynamic.cogitate(10.11121, 3.14); - InvokeDynamic.#"yow: what I mean to say is, please treat this one specially"(null); + //InvokeDynamic.#"yow: what I mean to say is, please treat this one specially"(null); ijunk = (int) InvokeDynamic.invoke("goodbye"); } } diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/meth/InvokeDynTrans.java --- a/test/tools/javac/meth/InvokeDynTrans.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/meth/InvokeDynTrans.java Mon Dec 06 20:35:49 2010 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008-2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. 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 @@ -53,7 +53,7 @@ InvokeDynamic.greet(x, "mundus", 456); InvokeDynamic.greet(x, "kosmos", 789); InvokeDynamic.cogitate(10.11121, 3.14); - InvokeDynamic.#"yow: what I mean to say is, please treat this one specially"(null); + //InvokeDynamic.#"yow: what I mean to say is, please treat this one specially"(null); InvokeDynamic.invoke("goodbye"); } } diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/meth/InvokeDynTrans.out --- a/test/tools/javac/meth/InvokeDynTrans.out Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/meth/InvokeDynTrans.out Mon Dec 06 20:35:49 2010 -0800 @@ -1,6 +1,5 @@ InvokeDynTrans.java:55:39: compiler.warn.type.parameter.on.polymorphic.signature -InvokeDynTrans.java:56:91: compiler.warn.type.parameter.on.polymorphic.signature InvokeDynTrans.java:57:34: compiler.warn.type.parameter.on.polymorphic.signature - compiler.err.warnings.and.werror 1 error -3 warnings +2 warnings diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/processing/warnings/TestSourceVersionWarnings.java --- a/test/tools/javac/processing/warnings/TestSourceVersionWarnings.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/processing/warnings/TestSourceVersionWarnings.java Mon Dec 06 20:35:49 2010 -0800 @@ -27,15 +27,15 @@ * @summary Test that warnings about source versions are output as expected. * @author Joseph D. Darcy * @compile TestSourceVersionWarnings.java - * @compile/ref=gold_0.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -source 1.5 HelloWorld.java - * @compile/ref=gold_sv_warn_0_2.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_0 -source 1.2 HelloWorld.java - * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_2 -source 1.2 HelloWorld.java - * @compile/ref=gold_sv_warn_2_3.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_2 -source 1.3 HelloWorld.java - * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_5 -source 1.5 HelloWorld.java - * @compile/ref=gold_sv_warn_5_6.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_5 -source 1.6 HelloWorld.java - * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_6 -source 1.6 HelloWorld.java - * @compile/ref=gold_unsp_warn.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_6 -source 1.6 -Aunsupported HelloWorld.java - * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_7 -source 1.7 HelloWorld.java + * @compile/ref=gold_0.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -source 1.5 -Xlint:-options HelloWorld.java + * @compile/ref=gold_sv_warn_0_2.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_0 -source 1.2 -Xlint:-options HelloWorld.java + * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_2 -source 1.2 -Xlint:-options HelloWorld.java + * @compile/ref=gold_sv_warn_2_3.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_2 -source 1.3 -Xlint:-options HelloWorld.java + * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_5 -source 1.5 -Xlint:-options HelloWorld.java + * @compile/ref=gold_sv_warn_5_6.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_5 -source 1.6 -Xlint:-options HelloWorld.java + * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_6 -source 1.6 -Xlint:-options HelloWorld.java + * @compile/ref=gold_unsp_warn.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_6 -source 1.6 -Xlint:-options -Aunsupported HelloWorld.java + * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_7 -source 1.7 HelloWorld.java */ import java.util.Set; diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/quid/QuotedIdent.java --- a/test/tools/javac/quid/QuotedIdent.java Fri Dec 03 19:45:34 2010 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,136 +0,0 @@ -/* - * Copyright (c) 2008, 2010, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test - * @bug 6746458 - * @summary Verify correct lexing of quoted identifiers. - * @author jrose - * @ignore 6877225 test fails on Windows: - * QuotedIdent.java:81: error while writing QuotedIdent.*86: PATH\QuotedIdent$*86.class - * (The filename, directory name, or volume label syntax is incorrect) - * - * @library .. - * @compile -source 7 -target 7 -XDinvokedynamic QuotedIdent.java - * @run main quid.QuotedIdent - */ - -/* - * Standalone testing: - * - * $ cd $MY_REPO_DIR/langtools - * $ (cd make; make) - * $ ./dist/bootstrap/bin/javac -d dist test/tools/javac/quid/QuotedIdent.java - * $ java -version # should print 1.6 or later - * $ java -cp dist quid.QuotedIdent - * - */ - -package quid; - -public class QuotedIdent { - static void check(int testid, String have, String expect) - throws RuntimeException { - if ((have == null && have != expect) || - (have != null && !have.equals(expect))) { - String msg = - "TEST " + testid + ": HAVE \"" + - have + "\" EXPECT \"" + expect + "\""; - System.out.println("StringConversion: " + msg); - throw new RuntimeException(msg); - } - } - - // negative tests: - //static class #"" { } //BAD empty ident name - //static class #"" { } //BAD bad char in ident name - /*static class /*(//BAD ident name interrupted by newline) #"jump: - " { } /* uncomment previous line to attempt class w/ bad name */ - - static class #"int" extends Number { - final int #"int"; - #"int"(int #"int") { - this.#"int" = #"int"; - } - static #"int" valueOf(int #"int") { - return new #"int"(#"int"); - } - public int intValue() { return #"int"; } - public long longValue() { return #"int"; } - public float floatValue() { return #"int"; } - public double doubleValue() { return #"int"; } - public String toString() { return String.valueOf(#"int"); } - } - - class #"*86" { - String #"555-1212"() { return "[*86.555-1212]"; } - } - static#"*86"#"MAKE-*86"() { // note close spacing - return new QuotedIdent().new#"*86"(); - } - - static String bar() { return "[bar]"; } - - public static void main(String[] args) throws Exception { - String s; - - String #"sticky \' wicket" = "wicked ' stick"; - s = #"sticky ' wicket"; - check(11, s, "wicked \' stick"); - check(12, #"s", s); - check(13, #"\163", s); - - s = #"QuotedIdent".bar(); - check(21, s, "[bar]"); - - s = #"int".valueOf(123).toString(); - check(22, s, "123"); - - s = #"MAKE-*86"().#"555-1212"(); - check(23, s, "[*86.555-1212]"); - - class#"{{{inmost}}}" { } - s = new#"{{{inmost}}}"().getClass().getName(); - if (!s.endsWith("{{{inmost}}}")) - check(24, s, "should end with \"{{{inmost}}}\""); - - s = #"Yog-Shoggoth".#"(nameless ululation)"; - check(25, s, "Tekeli-li!"); - - s = #"int".class.getName(); - check(31, s, QuotedIdent.class.getName()+"$int"); - - Class x86 = Class.forName(QuotedIdent.class.getName()+"$*86"); - if (x86 != #"*86".class) - check(32, "reflected "+x86, "static "+#"*86".class); - - s = (String) x86.getDeclaredMethod("555-1212").invoke(#"MAKE-*86"()); - check(31, s, "[*86.555-1212]"); - - System.out.println("OK"); - } -} - -interface #"Yog-Shoggoth" { - final String #"(nameless ululation)" = "Tekeli-li!"; -} diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/quid/QuotedIdent2.java --- a/test/tools/javac/quid/QuotedIdent2.java Fri Dec 03 19:45:34 2010 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2008, 2010, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test - * @bug 6746458 - * @summary Verify correct separate compilation of classes with extended identifiers. - * @author jrose - * @ignore 6877225 test fails on Windows: - * QuotedIdent.java:81: error while writing QuotedIdent.*86: PATH\QuotedIdent$*86.class - * (The filename, directory name, or volume label syntax is incorrect) - * - * @library .. - * @compile -source 7 -target 7 -XDinvokedynamic QuotedIdent.java - * @run main quid.QuotedIdent2 - */ -/* - * Standalone testing: - * - * $ cd $MY_REPO_DIR/langtools - * $ (cd make; make) - * $ ./dist/bootstrap/bin/javac -d dist test/tools/javac/quid/QuotedIdent.java - * $ ./dist/bootstrap/bin/javac -d dist -cp dist test/tools/javac/quid/QuotedIdent2.java - * $ java -version # should print 1.6 or later - * $ java -cp dist QuotedIdent2 - * - */ - -package quid; - -import quid.QuotedIdent.*; -import quid.QuotedIdent.#"*86"; -import static quid.QuotedIdent.#"MAKE-*86"; - -public class QuotedIdent2 { - static void check(int testid, String have, String expect) - throws RuntimeException { - QuotedIdent.check(testid, have, expect); - } - - public static void main(String[] args) throws Exception { - String s; - - s = #"int".valueOf(123).toString(); - check(22, s, "123"); - - s = #"MAKE-*86"().#"555-1212"(); - check(23, s, "[*86.555-1212]"); - - s = #"Yog-Shoggoth".#"(nameless ululation)"; - check(25, s, "Tekeli-li!"); - - s = QuotedIdent.#"int".class.getName(); - check(31, s, QuotedIdent.class.getName()+"$int"); - - Class x86 = Class.forName(QuotedIdent.class.getName()+"$*86"); - if (x86 != #"*86".class) - check(32, "reflected "+x86, "static "+#"*86".class); - - s = (String) x86.getDeclaredMethod("555-1212").invoke(QuotedIdent.#"MAKE-*86"()); - check(31, s, "[*86.555-1212]"); - - System.out.println("OK"); - } -} diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/quid/T6999438.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/quid/T6999438.java Mon Dec 06 20:35:49 2010 -0800 @@ -0,0 +1,9 @@ +/* @test /nodynamiccopyright/ + * @bug 6999438 + * @summary remove support for exotic identifiers from JDK 7 + * @compile/fail/ref=T6999438.out -XDrawDiagnostics -source 7 T6999438.java + */ + +class Test { + int #"not supported"; +} diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/quid/T6999438.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/quid/T6999438.out Mon Dec 06 20:35:49 2010 -0800 @@ -0,0 +1,6 @@ +T6999438.java:8:9: compiler.err.illegal.char: 35 +T6999438.java:8:10: compiler.err.illegal.start.of.type +T6999438.java:8:25: compiler.err.expected: token.identifier +T6999438.java:8:26: compiler.err.expected: ';' +T6999438.java:9:2: compiler.err.premature.eof +5 errors diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javac/varargs/warning/Warn1.java --- a/test/tools/javac/varargs/warning/Warn1.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javac/varargs/warning/Warn1.java Mon Dec 06 20:35:49 2010 -0800 @@ -27,7 +27,7 @@ * @summary fixed-arity warning given too often * @author gafter * - * @compile -Werror -source 1.4 Warn1.java + * @compile -Werror -source 1.4 -Xlint:-options Warn1.java */ package varargs.warning.warn1; diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javadoc/6942366/T6942366.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javadoc/6942366/T6942366.java Mon Dec 06 20:35:49 2010 -0800 @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6942366 + * @summary javadoc no longer inherits doc from sourcepath + * @build p.Base Test + * @run main T6942366 + */ + +import java.io.*; +import java.util.*; + +public class T6942366 { + public static void main(String... args) throws Exception { + new T6942366().run(); + } + + File testSrc; + File testClasses; + int count; + int errors; + + void run() throws Exception { + testSrc = new File(System.getProperty("test.src")); + testClasses = new File(System.getProperty("test.classes")); + + test(true, false); + test(false, true); + test(true, true); + + if (errors > 0) + throw new Exception(errors + " errors found"); + } + + void test(boolean useSourcePath, boolean useClassPath) throws Exception { + System.out.println("test " + (++count) + " sp:" + useSourcePath + " cp:" + useClassPath); + File testDir = new File("test" + count); + testDir.mkdirs(); + + List args = new ArrayList(); + //args.add("-verbose"); + args.add("-d"); + args.add(testDir.getPath()); + if (useSourcePath) { + args.add("-sourcepath"); + args.add(testSrc.getPath()); + } + if (useClassPath) { + args.add("-classpath"); + args.add(testClasses.getPath()); + } else { + // override classpath to avoid stuff jtreg might have put on papth + args.add("-classpath"); + args.add("."); + } + + // use a very simple bootclasspath to avoid stuff jtreg might have put on path + File javaHome = new File(System.getProperty("java.home")); + File rt_jar = new File(javaHome, "lib/rt.jar"); + if (!rt_jar.exists()) + throw new Exception("rt.jar not found"); + args.add("-bootclasspath"); + args.add(rt_jar.getPath()); + + args.add(new File(testSrc, "Test.java").getPath()); + System.out.println("javadoc: " + args); + + int rc = com.sun.tools.javadoc.Main.execute(args.toArray(new String[args.size()])); + if (rc != 0) + throw new Exception("unexpected exit from javadoc, rc=" + rc); + + if (useSourcePath && useClassPath) { + long srcLastMod = new File(testSrc, "Test.java").lastModified(); + long classLastMod = new File(testClasses, "Test.class").lastModified(); + System.out.println("Test.java last modified: " + new Date(srcLastMod)); + System.out.println("Test.class last modified: " + new Date(classLastMod)); + System.out.println((srcLastMod > classLastMod ? "source" : "class") + " is newer"); + } + + String s = "javadoc-for-Base.m"; + boolean expect = useSourcePath; + boolean found = contains(new File(testDir, "Test.html"), s); + if (found) { + if (expect) + System.out.println("javadoc content \"" + s + "\" found, as expected"); + else + error("javadoc content \"" + s + "\" found unexpectedly"); + } else { + if (expect) + error("javadoc content \"" + s + "\" not found"); + else + System.out.println("javadoc content \"" + s + "\" not found, as expected"); + } + + System.out.println(); + } + + boolean contains(File f, String s) throws Exception { + byte[] buf = new byte[(int) f.length()]; + try (DataInputStream in = new DataInputStream(new FileInputStream(f))) { + in.readFully(buf); + } + return new String(buf).contains(s); + } + + void error(String msg) { + System.out.println("Error: " + msg); + errors++; + } + +} + diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javadoc/6942366/Test.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javadoc/6942366/Test.java Mon Dec 06 20:35:49 2010 -0800 @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +public class Test extends p.Base { + // overrides Base.m + public void m() { } +} + diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javadoc/6942366/p/Base.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javadoc/6942366/p/Base.java Mon Dec 06 20:35:49 2010 -0800 @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package p; + +public class Base { + /** javadoc-for-Base.m. */ + public void m() { } +} + diff -r d53cf2e9ad6c -r 1bf969e9792f test/tools/javap/T6729471.java --- a/test/tools/javap/T6729471.java Fri Dec 03 19:45:34 2010 -0800 +++ b/test/tools/javap/T6729471.java Mon Dec 06 20:35:49 2010 -0800 @@ -39,6 +39,8 @@ } void run() { + File testClasses = new File(System.getProperty("test.classes")); + // simple class verify("java.util.Map", "public abstract boolean containsKey(java.lang.Object)"); @@ -48,11 +50,11 @@ "public abstract K getKey()"); // file name - verify("../classes/tools/javap/T6729471.class", + verify(new File(testClasses, "T6729471.class").getPath(), "public static void main(java.lang.String...)"); // file url - verify("file:../classes/tools/javap/T6729471.class", + verify(new File(testClasses, "T6729471.class").toURI().toString(), "public static void main(java.lang.String...)"); // jar url: rt.jar