8253996: Javac error on jdk16 build 18: invalid flag: -Xdoclint:-missing
Reviewed-by: hannesw
This commit is contained in:
parent
d60a937e87
commit
2cb271e691
src
jdk.compiler/share/classes/com/sun/tools
jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html
test/langtools/tools/javac
@ -76,12 +76,16 @@ public abstract class DocLint implements Plugin {
|
||||
|
||||
@Override
|
||||
public void init(JavacTask task, String... args) {
|
||||
// ignore
|
||||
throw new IllegalStateException("doclint not available");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValidOption(String s) {
|
||||
return false;
|
||||
// passively accept all "plausible" options
|
||||
return s.equals(XMSGS_OPTION)
|
||||
|| s.startsWith(XMSGS_CUSTOM_PREFIX)
|
||||
|| s.startsWith(XHTML_VERSION_PREFIX)
|
||||
|| s.startsWith(XCHECK_PACKAGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -55,6 +55,7 @@ import com.sun.tools.javac.platform.PlatformDescription;
|
||||
import com.sun.tools.javac.platform.PlatformDescription.PluginInfo;
|
||||
import com.sun.tools.javac.processing.JavacProcessingEnvironment;
|
||||
import com.sun.tools.javac.resources.CompilerProperties.Errors;
|
||||
import com.sun.tools.javac.resources.CompilerProperties.Warnings;
|
||||
import com.sun.tools.javac.tree.JCTree;
|
||||
import com.sun.tools.javac.util.Context;
|
||||
import com.sun.tools.javac.util.DefinedBy;
|
||||
@ -257,8 +258,11 @@ public class BasicJavacTask extends JavacTask {
|
||||
public void initDocLint(List<String> docLintOpts) {
|
||||
if (docLintOpts.isEmpty())
|
||||
return;
|
||||
|
||||
DocLint.newDocLint().init(this, docLintOpts.toArray(new String[docLintOpts.size()]));
|
||||
JavaCompiler.instance(context).keepComments = true;
|
||||
try {
|
||||
DocLint.newDocLint().init(this, docLintOpts.toArray(new String[docLintOpts.size()]));
|
||||
JavaCompiler.instance(context).keepComments = true;
|
||||
} catch (IllegalStateException e) {
|
||||
Log.instance(context).warning(Warnings.DoclintNotAvailable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2049,6 +2049,9 @@ compiler.warn.deprecated.annotation.has.no.effect=\
|
||||
compiler.warn.invalid.path=\
|
||||
Invalid filename: {0}
|
||||
|
||||
compiler.warn.doclint.not.available=\
|
||||
No service provider for doclint is available
|
||||
|
||||
# 0: string
|
||||
compiler.err.invalid.path=\
|
||||
Invalid filename: {0}
|
||||
|
@ -32,12 +32,12 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import com.sun.tools.doclint.DocLint;
|
||||
import jdk.javadoc.internal.doclets.toolkit.BaseOptions;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Messages;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Resources;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocFile;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.Utils;
|
||||
import jdk.javadoc.internal.doclint.DocLint;
|
||||
|
||||
/**
|
||||
* Storage for all options supported by the
|
||||
@ -405,7 +405,7 @@ public class HtmlOptions extends BaseOptions {
|
||||
messages.error("doclet.Option_doclint_no_qualifiers");
|
||||
return false;
|
||||
}
|
||||
if (!DocLint.newDocLint().isValidOption(dopt)) {
|
||||
if (!(new DocLint()).isValidOption(dopt)) {
|
||||
messages.error("doclet.Option_doclint_invalid_arg");
|
||||
return false;
|
||||
}
|
||||
@ -418,7 +418,7 @@ public class HtmlOptions extends BaseOptions {
|
||||
@Override
|
||||
public boolean process(String opt, List<String> args) {
|
||||
String dopt = opt.replace("-Xdoclint/package:", DocLint.XCHECK_PACKAGE);
|
||||
if (!DocLint.newDocLint().isValidOption(dopt)) {
|
||||
if (!(new DocLint()).isValidOption(dopt)) {
|
||||
messages.error("doclet.Option_doclint_package_invalid_arg");
|
||||
return false;
|
||||
}
|
||||
|
@ -110,6 +110,7 @@ compiler.misc.wrong.version # ClassReader
|
||||
compiler.warn.annotation.method.not.found # ClassReader
|
||||
compiler.warn.annotation.method.not.found.reason # ClassReader
|
||||
compiler.warn.big.major.version # ClassReader
|
||||
compiler.warn.doclint.not.available # requires restricted image
|
||||
compiler.warn.future.attr # ClassReader
|
||||
compiler.warn.illegal.char.for.encoding
|
||||
compiler.warn.incubating.modules # requires adjusted classfile
|
||||
|
75
test/langtools/tools/javac/doclint/LimitedImage.java
Normal file
75
test/langtools/tools/javac/doclint/LimitedImage.java
Normal file
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright (c) 2020, 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 8253996
|
||||
* @summary Verify doclint behavior when doclint not available
|
||||
* @library /tools/lib
|
||||
* @modules jdk.compiler/com.sun.tools.javac.api
|
||||
* jdk.compiler/com.sun.tools.javac.main
|
||||
* @run main/othervm --limit-modules jdk.compiler,jdk.zipfs LimitedImage
|
||||
*/
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
|
||||
import toolbox.JavacTask;
|
||||
import toolbox.Task.Expect;
|
||||
import toolbox.Task.Mode;
|
||||
import toolbox.Task.OutputKind;
|
||||
import toolbox.ToolBox;
|
||||
|
||||
public class LimitedImage {
|
||||
public static void main(String... args) throws IOException {
|
||||
ToolBox tb = new ToolBox();
|
||||
|
||||
//showing help should be OK
|
||||
new JavacTask(tb, Mode.CMDLINE)
|
||||
.options("--help")
|
||||
.run().writeAll();
|
||||
|
||||
Path testSource = Path.of("Test.java");
|
||||
tb.writeFile(testSource, "class Test {}");
|
||||
|
||||
List<String> actualOutput;
|
||||
List<String> expectedOutput = List.of(
|
||||
"- compiler.warn.doclint.not.available",
|
||||
"1 warning"
|
||||
);
|
||||
|
||||
//check proper diagnostics when doclint provider not present:
|
||||
System.err.println("Test -Xdoclint when doclint not available");
|
||||
actualOutput = new JavacTask(tb, Mode.CMDLINE)
|
||||
.options("-XDrawDiagnostics", "-Xdoclint")
|
||||
.files(testSource)
|
||||
.outdir(".")
|
||||
.run(Expect.SUCCESS)
|
||||
.writeAll()
|
||||
.getOutputLines(OutputKind.DIRECT);
|
||||
|
||||
tb.checkEqual(expectedOutput, actualOutput);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user