6968063: provide examples of code that generate diagnostics
Reviewed-by: mcimadamore
This commit is contained in:
parent
985efdc475
commit
7eb8c115ec
@ -322,6 +322,35 @@
|
||||
datafile="${build.coverage.dir}/cobertura.ser"/>
|
||||
</target>
|
||||
|
||||
<target name="diags-examples" depends="build-javac">
|
||||
<!-- can override the following on the command line if desired. -->
|
||||
<property name="diags.examples.out" location="${build.dir}/diag-examples/diags-examples.html"/>
|
||||
<mkdir dir="${build.dir}/diag-examples/classes"/>
|
||||
<javac fork="true"
|
||||
executable="${dist.bin.dir}/javac"
|
||||
srcdir="test/tools/javac/diags"
|
||||
destdir="${build.dir}/diag-examples/classes"
|
||||
includes="Example.java,FileManager.java,HTMLWriter.java,RunExamples.java"
|
||||
sourcepath=""
|
||||
classpath="${dist.lib.dir}/javac.jar"
|
||||
includeAntRuntime="no"
|
||||
debug="${javac.debug}"
|
||||
debuglevel="${javac.debuglevel}"/>
|
||||
<java fork="true"
|
||||
jvm="${target.java.home}/bin/java"
|
||||
dir="test/tools/javac/diags"
|
||||
classpath="${build.dir}/diag-examples/classes;${dist.lib.dir}/javac.jar"
|
||||
classname="RunExamples">
|
||||
<arg value="-examples"/>
|
||||
<arg value="examples"/>
|
||||
<arg value="-o"/>
|
||||
<arg file="${diags.examples.out}"/>
|
||||
<arg value="-showFiles"/>
|
||||
<arg value="-title"/>
|
||||
<arg value="Examples of javac diagnostics"/>
|
||||
</java>
|
||||
</target>
|
||||
|
||||
|
||||
<!--
|
||||
**** Debugging/diagnostic targets.
|
||||
|
218
langtools/test/tools/javac/diags/CheckExamples.java
Normal file
218
langtools/test/tools/javac/diags/CheckExamples.java
Normal file
@ -0,0 +1,218 @@
|
||||
/*
|
||||
* 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 6968063
|
||||
* @summary provide examples of code that generate diagnostics
|
||||
* @build Example CheckExamples
|
||||
* @run main CheckExamples
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Check invariants for a set of examples.
|
||||
* -- each example should exactly declare the keys that will be generated when
|
||||
* it is run.
|
||||
* -- together, the examples should cover the set of resource keys in the
|
||||
* compiler.properties bundle. A list of exceptions may be given in the
|
||||
* not-yet.txt file. Entries on the not-yet.txt list should not be
|
||||
* covered by examples.
|
||||
* When new keys are added to the resource buncle, it is strongly recommended
|
||||
* that corresponding new examples be added here, if at all practical, instead
|
||||
* of simply and lazily being added to the not-yet.txt list.
|
||||
*/
|
||||
public class CheckExamples {
|
||||
/**
|
||||
* Standard entry point.
|
||||
*/
|
||||
public static void main(String... args) throws Exception {
|
||||
new CheckExamples().run();
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the test.
|
||||
*/
|
||||
void run() throws Exception {
|
||||
Set<Example> examples = getExamples();
|
||||
|
||||
Set<String> notYetList = getNotYetList();
|
||||
Set<String> declaredKeys = new TreeSet<String>();
|
||||
for (Example e: examples) {
|
||||
Set<String> e_decl = e.getDeclaredKeys();
|
||||
Set<String> e_actual = e.getActualKeys();
|
||||
for (String k: e_decl) {
|
||||
if (!e_actual.contains(k))
|
||||
error("Example " + e + " declares key " + k + " but does not generate it");
|
||||
}
|
||||
for (String k: e_actual) {
|
||||
if (!e_decl.contains(k))
|
||||
error("Example " + e + " generates key " + k + " but does not declare it");
|
||||
}
|
||||
for (String k: e.getDeclaredKeys()) {
|
||||
if (notYetList.contains(k))
|
||||
error("Example " + e + " declares key " + k + " which is also on the \"not yet\" list");
|
||||
declaredKeys.add(k);
|
||||
}
|
||||
}
|
||||
|
||||
ResourceBundle b =
|
||||
ResourceBundle.getBundle("com.sun.tools.javac.resources.compiler");
|
||||
Set<String> resourceKeys = new TreeSet<String>(b.keySet());
|
||||
|
||||
for (String dk: declaredKeys) {
|
||||
if (!resourceKeys.contains(dk))
|
||||
error("Key " + dk + " is declared in tests but is not a valid key in resource bundle");
|
||||
}
|
||||
|
||||
for (String nk: notYetList) {
|
||||
if (!resourceKeys.contains(nk))
|
||||
error("Key " + nk + " is declared in not-yet list but is not a valid key in resource bundle");
|
||||
}
|
||||
|
||||
for (String rk: resourceKeys) {
|
||||
if (!declaredKeys.contains(rk) && !notYetList.contains(rk))
|
||||
error("Key " + rk + " is declared in resource bundle but is not in tests or not-yet list");
|
||||
}
|
||||
|
||||
System.err.println(examples.size() + " examples checked");
|
||||
System.err.println(notYetList.size() + " keys on not-yet list");
|
||||
|
||||
Counts declaredCounts = new Counts(declaredKeys);
|
||||
Counts resourceCounts = new Counts(resourceKeys);
|
||||
List<String> rows = new ArrayList<String>(Arrays.asList(Counts.prefixes));
|
||||
rows.add("other");
|
||||
rows.add("total");
|
||||
System.err.println();
|
||||
System.err.println(String.format("%-14s %15s %15s %4s",
|
||||
"prefix", "#keys in tests", "#keys in javac", "%"));
|
||||
for (String p: rows) {
|
||||
int d = declaredCounts.get(p);
|
||||
int r = resourceCounts.get(p);
|
||||
System.err.print(String.format("%-14s %15d %15d", p, d, r));
|
||||
if (r != 0)
|
||||
System.err.print(String.format(" %3d%%", (d * 100) / r));
|
||||
System.err.println();
|
||||
}
|
||||
|
||||
if (errors > 0)
|
||||
throw new Exception(errors + " errors occurred.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the complete set of examples to be checked.
|
||||
*/
|
||||
Set<Example> getExamples() {
|
||||
Set<Example> results = new TreeSet<Example>();
|
||||
File testSrc = new File(System.getProperty("test.src"));
|
||||
File examples = new File(testSrc, "examples");
|
||||
for (File f: examples.listFiles()) {
|
||||
if (f.isDirectory() || f.isFile() && f.getName().endsWith(".java"))
|
||||
results.add(new Example(f));
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the contents of the "not-yet" list.
|
||||
*/
|
||||
Set<String> getNotYetList() {
|
||||
Set<String> results = new TreeSet<String>();
|
||||
File testSrc = new File(System.getProperty("test.src"));
|
||||
File notYetList = new File(testSrc, "examples.not-yet.txt");
|
||||
try {
|
||||
String[] lines = read(notYetList).split("[\r\n]");
|
||||
for (String line: lines) {
|
||||
int hash = line.indexOf("#");
|
||||
if (hash != -1)
|
||||
line = line.substring(0, hash).trim();
|
||||
if (line.matches("[A-Za-z0-9-_.]+"))
|
||||
results.add(line);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new Error(e);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the contents of a file.
|
||||
*/
|
||||
String read(File f) throws IOException {
|
||||
byte[] bytes = new byte[(int) f.length()];
|
||||
DataInputStream in = new DataInputStream(new FileInputStream(f));
|
||||
try {
|
||||
in.readFully(bytes);
|
||||
} finally {
|
||||
in.close();
|
||||
}
|
||||
return new String(bytes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Report an error.
|
||||
*/
|
||||
void error(String msg) {
|
||||
System.err.println("Error: " + msg);
|
||||
errors++;
|
||||
}
|
||||
|
||||
int errors;
|
||||
|
||||
static class Counts {
|
||||
static String[] prefixes = {
|
||||
"compiler.err.",
|
||||
"compiler.warn.",
|
||||
"compiler.note.",
|
||||
"compiler.misc."
|
||||
};
|
||||
|
||||
Counts(Set<String> keys) {
|
||||
nextKey:
|
||||
for (String k: keys) {
|
||||
for (String p: prefixes) {
|
||||
if (k.startsWith(p)) {
|
||||
inc(p);
|
||||
continue nextKey;
|
||||
}
|
||||
}
|
||||
inc("other");
|
||||
}
|
||||
table.put("total", keys.size());
|
||||
}
|
||||
|
||||
int get(String p) {
|
||||
Integer i = table.get(p);
|
||||
return (i == null ? 0 : i);
|
||||
}
|
||||
|
||||
void inc(String p) {
|
||||
Integer i = table.get(p);
|
||||
table.put(p, (i == null ? 1 : i + 1));
|
||||
}
|
||||
|
||||
Map<String,Integer> table = new HashMap<String,Integer>();
|
||||
};
|
||||
}
|
523
langtools/test/tools/javac/diags/Example.java
Normal file
523
langtools/test/tools/javac/diags/Example.java
Normal file
@ -0,0 +1,523 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import com.sun.tools.javac.file.JavacFileManager;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.util.regex.*;
|
||||
import javax.tools.Diagnostic;
|
||||
import javax.tools.DiagnosticCollector;
|
||||
import javax.tools.JavaCompiler;
|
||||
import javax.tools.JavaCompiler.CompilationTask;
|
||||
import javax.tools.JavaFileObject;
|
||||
import javax.tools.StandardJavaFileManager;
|
||||
import javax.tools.ToolProvider;
|
||||
|
||||
// The following two classes are both used, but cannot be imported directly
|
||||
// import com.sun.tools.javac.Main
|
||||
// import com.sun.tools.javac.main.Main
|
||||
|
||||
import com.sun.tools.javac.util.Context;
|
||||
import com.sun.tools.javac.util.JavacMessages;
|
||||
import com.sun.tools.javac.util.JCDiagnostic;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import javax.annotation.processing.Processor;
|
||||
|
||||
/**
|
||||
* Class to handle example code designed to illustrate javac diagnostic messages.
|
||||
*/
|
||||
class Example implements Comparable<Example> {
|
||||
/* Create an Example from the files found at path.
|
||||
* The head of the file, up to the first Java code, is scanned
|
||||
* for information about the test, such as what resource keys it
|
||||
* generates when run, what options are required to run it, and so on.
|
||||
*/
|
||||
Example(File file) {
|
||||
this.file = file;
|
||||
declaredKeys = new TreeSet<String>();
|
||||
srcFiles = new ArrayList<File>();
|
||||
procFiles = new ArrayList<File>();
|
||||
supportFiles = new ArrayList<File>();
|
||||
srcPathFiles = new ArrayList<File>();
|
||||
|
||||
findFiles(file, srcFiles);
|
||||
for (File f: srcFiles) {
|
||||
parse(f);
|
||||
}
|
||||
|
||||
if (infoFile == null)
|
||||
throw new Error("Example " + file + " has no info file");
|
||||
}
|
||||
|
||||
private void findFiles(File f, List<File> files) {
|
||||
if (f.isDirectory()) {
|
||||
for (File c: f.listFiles()) {
|
||||
if (files == srcFiles && c.getName().equals("processors"))
|
||||
findFiles(c, procFiles);
|
||||
else if (files == srcFiles && c.getName().equals("sourcepath")) {
|
||||
srcPathDir = c;
|
||||
findFiles(c, srcPathFiles);
|
||||
} else if (files == srcFiles && c.getName().equals("support"))
|
||||
findFiles(c, supportFiles);
|
||||
else
|
||||
findFiles(c, files);
|
||||
}
|
||||
} else if (f.isFile() && f.getName().endsWith(".java")) {
|
||||
files.add(f);
|
||||
}
|
||||
}
|
||||
|
||||
private void parse(File f) {
|
||||
Pattern keyPat = Pattern.compile(" *// *key: *([^ ]+) *");
|
||||
Pattern optPat = Pattern.compile(" *// *options: *(.*)");
|
||||
Pattern runPat = Pattern.compile(" *// *run: *(.*)");
|
||||
Pattern javaPat = Pattern.compile(" *@?[A-Za-z].*");
|
||||
try {
|
||||
String[] lines = read(f).split("[\r\n]+");
|
||||
for (String line: lines) {
|
||||
Matcher keyMatch = keyPat.matcher(line);
|
||||
if (keyMatch.matches()) {
|
||||
foundInfo(f);
|
||||
declaredKeys.add(keyMatch.group(1));
|
||||
continue;
|
||||
}
|
||||
Matcher optMatch = optPat.matcher(line);
|
||||
if (optMatch.matches()) {
|
||||
foundInfo(f);
|
||||
options = Arrays.asList(optMatch.group(1).trim().split(" +"));
|
||||
continue;
|
||||
}
|
||||
Matcher runMatch = runPat.matcher(line);
|
||||
if (runMatch.matches()) {
|
||||
foundInfo(f);
|
||||
runOpts = Arrays.asList(runMatch.group(1).trim().split(" +"));
|
||||
}
|
||||
if (javaPat.matcher(line).matches())
|
||||
break;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new Error(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void foundInfo(File file) {
|
||||
if (infoFile != null && !infoFile.equals(file))
|
||||
throw new Error("multiple info files found: " + infoFile + ", " + file);
|
||||
infoFile = file;
|
||||
}
|
||||
|
||||
String getName() {
|
||||
return file.getName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the set of resource keys that this test declares it will generate
|
||||
* when it is run.
|
||||
*/
|
||||
Set<String> getDeclaredKeys() {
|
||||
return declaredKeys;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the set of resource keys that this test generates when it is run.
|
||||
* The test will be run if it has not already been run.
|
||||
*/
|
||||
Set<String> getActualKeys() {
|
||||
if (actualKeys == null)
|
||||
actualKeys = run(false);
|
||||
return actualKeys;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the test. Information in the test header is used to determine
|
||||
* how to run the test.
|
||||
*/
|
||||
void run(PrintWriter out, boolean raw, boolean verbose) {
|
||||
if (out == null)
|
||||
throw new NullPointerException();
|
||||
try {
|
||||
run(out, null, raw, verbose);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace(out);
|
||||
}
|
||||
}
|
||||
|
||||
Set<String> run(boolean verbose) {
|
||||
Set<String> keys = new TreeSet<String>();
|
||||
try {
|
||||
run(null, keys, true, verbose);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return keys;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the test. Information in the test header is used to determine
|
||||
* how to run the test.
|
||||
*/
|
||||
private void run(PrintWriter out, Set<String> keys, boolean raw, boolean verbose)
|
||||
throws IOException {
|
||||
ClassLoader loader = getClass().getClassLoader();
|
||||
if (supportFiles.size() > 0) {
|
||||
File supportDir = new File(tempDir, "support");
|
||||
supportDir.mkdirs();
|
||||
clean(supportDir);
|
||||
List<String> sOpts = Arrays.asList("-d", supportDir.getPath());
|
||||
new Jsr199Compiler(verbose).run(null, null, false, sOpts, procFiles);
|
||||
URLClassLoader ucl =
|
||||
new URLClassLoader(new URL[] { supportDir.toURI().toURL() }, loader);
|
||||
loader = ucl;
|
||||
}
|
||||
|
||||
File classesDir = new File(tempDir, "classes");
|
||||
classesDir.mkdirs();
|
||||
clean(classesDir);
|
||||
|
||||
List<String> opts = new ArrayList<String>();
|
||||
opts.add("-d");
|
||||
opts.add(classesDir.getPath());
|
||||
if (options != null)
|
||||
opts.addAll(options);
|
||||
|
||||
if (procFiles.size() > 0) {
|
||||
List<String> pOpts = Arrays.asList("-d", classesDir.getPath());
|
||||
new Jsr199Compiler(verbose).run(null, null, false, pOpts, procFiles);
|
||||
opts.add("-classpath"); // avoid using -processorpath for now
|
||||
opts.add(classesDir.getPath());
|
||||
createAnnotationServicesFile(classesDir, procFiles);
|
||||
}
|
||||
|
||||
if (srcPathDir != null) {
|
||||
opts.add("-sourcepath");
|
||||
opts.add(srcPathDir.getPath());
|
||||
}
|
||||
|
||||
try {
|
||||
Compiler c = Compiler.getCompiler(runOpts, verbose);
|
||||
c.run(out, keys, raw, opts, srcFiles);
|
||||
} catch (IllegalArgumentException e) {
|
||||
if (out != null) {
|
||||
out.println("Invalid value for run tag: " + runOpts);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void createAnnotationServicesFile(File dir, List<File> procFiles) throws IOException {
|
||||
File servicesDir = new File(new File(dir, "META-INF"), "services");
|
||||
servicesDir.mkdirs();
|
||||
File annoServices = new File(servicesDir, Processor.class.getName());
|
||||
Writer out = new FileWriter(annoServices);
|
||||
try {
|
||||
for (File f: procFiles) {
|
||||
out.write(f.getName().toString().replace(".java", ""));
|
||||
}
|
||||
} finally {
|
||||
out.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Example e) {
|
||||
return file.compareTo(e.file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return file.getPath();
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the contents of a file.
|
||||
*/
|
||||
private String read(File f) throws IOException {
|
||||
byte[] bytes = new byte[(int) f.length()];
|
||||
DataInputStream in = new DataInputStream(new FileInputStream(f));
|
||||
try {
|
||||
in.readFully(bytes);
|
||||
} finally {
|
||||
in.close();
|
||||
}
|
||||
return new String(bytes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean the contents of a directory.
|
||||
*/
|
||||
boolean clean(File dir) {
|
||||
boolean ok = true;
|
||||
for (File f: dir.listFiles()) {
|
||||
if (f.isDirectory())
|
||||
ok &= clean(f);
|
||||
ok &= f.delete();
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
File file;
|
||||
List<File> srcFiles;
|
||||
List<File> procFiles;
|
||||
File srcPathDir;
|
||||
List<File> srcPathFiles;
|
||||
List<File> supportFiles;
|
||||
File infoFile;
|
||||
private List<String> runOpts;
|
||||
private List<String> options;
|
||||
private Set<String> actualKeys;
|
||||
private Set<String> declaredKeys;
|
||||
|
||||
static File tempDir = new File(System.getProperty("java.io.tmpdir"));
|
||||
static void setTempDir(File tempDir) {
|
||||
Example.tempDir = tempDir;
|
||||
}
|
||||
|
||||
abstract static class Compiler {
|
||||
static Compiler getCompiler(List<String> opts, boolean verbose) {
|
||||
String first;
|
||||
String[] rest;
|
||||
if (opts == null || opts.size() == 0) {
|
||||
first = null;
|
||||
rest = new String[0];
|
||||
} else {
|
||||
first = opts.get(0);
|
||||
rest = opts.subList(1, opts.size()).toArray(new String[opts.size() - 1]);
|
||||
}
|
||||
if (first == null || first.equals("jsr199"))
|
||||
return new Jsr199Compiler(verbose, rest);
|
||||
else if (first.equals("simple"))
|
||||
return new SimpleCompiler(verbose);
|
||||
else if (first.equals("backdoor"))
|
||||
return new BackdoorCompiler(verbose);
|
||||
else
|
||||
throw new IllegalArgumentException(first);
|
||||
}
|
||||
|
||||
protected Compiler(boolean verbose) {
|
||||
this.verbose = verbose;
|
||||
}
|
||||
|
||||
abstract boolean run(PrintWriter out, Set<String> keys, boolean raw,
|
||||
List<String> opts, List<File> files);
|
||||
|
||||
void setSupportClassLoader(ClassLoader cl) {
|
||||
loader = cl;
|
||||
}
|
||||
|
||||
protected ClassLoader loader;
|
||||
protected boolean verbose;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compile using the JSR 199 API. The diagnostics generated are
|
||||
* scanned for resource keys. Not all diagnostic keys are generated
|
||||
* via the JSR 199 API -- for example, rich diagnostics are not directly
|
||||
* accessible, and some diagnostics generated by the file manager may
|
||||
* not be generated (for example, the JSR 199 file manager does not see
|
||||
* -Xlint:path).
|
||||
*/
|
||||
static class Jsr199Compiler extends Compiler {
|
||||
List<String> fmOpts;
|
||||
|
||||
Jsr199Compiler(boolean verbose, String... args) {
|
||||
super(verbose);
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
String arg = args[i];
|
||||
if (arg.equals("-filemanager") && (i + 1 < args.length)) {
|
||||
fmOpts = Arrays.asList(args[++i].split(","));
|
||||
} else
|
||||
throw new IllegalArgumentException(arg);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean run(PrintWriter out, Set<String> keys, boolean raw, List<String> opts, List<File> files) {
|
||||
if (out != null && keys != null)
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
if (verbose)
|
||||
System.err.println("run_jsr199: " + opts + " " + files);
|
||||
|
||||
DiagnosticCollector<JavaFileObject> dc = null;
|
||||
if (keys != null)
|
||||
dc = new DiagnosticCollector<JavaFileObject>();
|
||||
|
||||
if (raw) {
|
||||
List<String> newOpts = new ArrayList<String>();
|
||||
newOpts.add("-XDrawDiagnostics");
|
||||
newOpts.addAll(opts);
|
||||
opts = newOpts;
|
||||
}
|
||||
|
||||
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
|
||||
|
||||
StandardJavaFileManager fm = c.getStandardFileManager(dc, null, null);
|
||||
if (fmOpts != null)
|
||||
fm = new FileManager(fm, fmOpts);
|
||||
|
||||
Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjectsFromFiles(files);
|
||||
|
||||
CompilationTask t = c.getTask(out, fm, dc, opts, null, fos);
|
||||
Boolean ok = t.call();
|
||||
|
||||
if (keys != null) {
|
||||
for (Diagnostic<? extends JavaFileObject> d: dc.getDiagnostics()) {
|
||||
scanForKeys((JCDiagnostic) d, keys);
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scan a diagnostic for resource keys. This will not detect additional
|
||||
* sub diagnostics that might be generated by a rich diagnostic formatter.
|
||||
*/
|
||||
private static void scanForKeys(JCDiagnostic d, Set<String> keys) {
|
||||
keys.add(d.getCode());
|
||||
for (Object o: d.getArgs()) {
|
||||
if (o instanceof JCDiagnostic) {
|
||||
scanForKeys((JCDiagnostic) o, keys);
|
||||
}
|
||||
}
|
||||
for (JCDiagnostic sd: d.getSubdiagnostics())
|
||||
scanForKeys(d, keys);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the test using the standard simple entry point.
|
||||
*/
|
||||
static class SimpleCompiler extends Compiler {
|
||||
SimpleCompiler(boolean verbose) {
|
||||
super(verbose);
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean run(PrintWriter out, Set<String> keys, boolean raw, List<String> opts, List<File> files) {
|
||||
if (out != null && keys != null)
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
if (verbose)
|
||||
System.err.println("run_simple: " + opts + " " + files);
|
||||
|
||||
List<String> args = new ArrayList<String>(opts);
|
||||
|
||||
if (keys != null || raw)
|
||||
args.add("-XDrawDiagnostics");
|
||||
|
||||
args.addAll(opts);
|
||||
for (File f: files)
|
||||
args.add(f.getPath());
|
||||
|
||||
StringWriter sw = null;
|
||||
PrintWriter pw;
|
||||
if (keys != null) {
|
||||
sw = new StringWriter();
|
||||
pw = new PrintWriter(sw);
|
||||
} else
|
||||
pw = out;
|
||||
|
||||
int rc = com.sun.tools.javac.Main.compile(args.toArray(new String[args.size()]), pw);
|
||||
|
||||
if (keys != null) {
|
||||
pw.close();
|
||||
scanForKeys(sw.toString(), keys);
|
||||
}
|
||||
|
||||
return (rc == 0);
|
||||
}
|
||||
|
||||
private static void scanForKeys(String text, Set<String> keys) {
|
||||
StringTokenizer st = new StringTokenizer(text, " ,\r\n():");
|
||||
while (st.hasMoreElements()) {
|
||||
String t = st.nextToken();
|
||||
if (t.startsWith("compiler."))
|
||||
keys.add(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static class BackdoorCompiler extends Compiler {
|
||||
BackdoorCompiler(boolean verbose) {
|
||||
super(verbose);
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean run(PrintWriter out, Set<String> keys, boolean raw, List<String> opts, List<File> files) {
|
||||
if (out != null && keys != null)
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
if (verbose)
|
||||
System.err.println("run_simple: " + opts + " " + files);
|
||||
|
||||
List<String> args = new ArrayList<String>(opts);
|
||||
|
||||
if (out != null && raw)
|
||||
args.add("-XDrawDiagnostics");
|
||||
|
||||
args.addAll(opts);
|
||||
for (File f: files)
|
||||
args.add(f.getPath());
|
||||
|
||||
StringWriter sw = null;
|
||||
PrintWriter pw;
|
||||
if (keys != null) {
|
||||
sw = new StringWriter();
|
||||
pw = new PrintWriter(sw);
|
||||
} else
|
||||
pw = out;
|
||||
|
||||
Context c = new Context();
|
||||
JavacFileManager.preRegister(c); // can't create it until Log has been set up
|
||||
MessageTracker.preRegister(c, keys);
|
||||
com.sun.tools.javac.main.Main m = new com.sun.tools.javac.main.Main("javac", pw);
|
||||
int rc = m.compile(args.toArray(new String[args.size()]), c);
|
||||
|
||||
if (keys != null) {
|
||||
pw.close();
|
||||
}
|
||||
|
||||
return (rc == 0);
|
||||
}
|
||||
|
||||
static class MessageTracker extends JavacMessages {
|
||||
static void preRegister(Context c, final Set<String> keys) {
|
||||
if (keys != null) {
|
||||
c.put(JavacMessages.messagesKey, new Context.Factory<JavacMessages>() {
|
||||
public JavacMessages make() {
|
||||
return new MessageTracker() {
|
||||
@Override
|
||||
public String getLocalizedString(Locale l, String key, Object... args) {
|
||||
keys.add(key);
|
||||
return super.getLocalizedString(l, key, args);
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
191
langtools/test/tools/javac/diags/FileManager.java
Normal file
191
langtools/test/tools/javac/diags/FileManager.java
Normal file
@ -0,0 +1,191 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.Reader;
|
||||
import java.io.Writer;
|
||||
import java.net.URI;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
import javax.lang.model.element.Modifier;
|
||||
import javax.lang.model.element.NestingKind;
|
||||
import javax.tools.JavaFileManager.Location;
|
||||
import javax.tools.JavaFileObject;
|
||||
import javax.tools.StandardJavaFileManager;
|
||||
|
||||
import com.sun.tools.javac.api.WrappingJavaFileManager;
|
||||
|
||||
/**
|
||||
* A JavaFileManager that can throw IOException on attempting to read or write
|
||||
* selected files that match a regular expression.
|
||||
*/
|
||||
public class FileManager
|
||||
extends WrappingJavaFileManager<StandardJavaFileManager>
|
||||
implements StandardJavaFileManager {
|
||||
private static final String CANT_READ = "cantRead:";
|
||||
private static final String CANT_WRITE = "cantWrite:";
|
||||
|
||||
private Pattern cantRead;
|
||||
private Pattern cantWrite;
|
||||
|
||||
public FileManager(StandardJavaFileManager fm, List<String> opts) {
|
||||
super(fm);
|
||||
for (String opt: opts) {
|
||||
if (opt.startsWith(CANT_READ))
|
||||
cantRead = Pattern.compile(opt.substring(CANT_READ.length()));
|
||||
else if (opt.startsWith(CANT_WRITE))
|
||||
cantWrite = Pattern.compile(opt.substring(CANT_WRITE.length()));
|
||||
else
|
||||
throw new IllegalArgumentException(opt);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JavaFileObject wrap(JavaFileObject fo) {
|
||||
return new WrappedFileObject(fo);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JavaFileObject unwrap(JavaFileObject fo) {
|
||||
if (fo instanceof WrappedFileObject)
|
||||
return ((WrappedFileObject) fo).delegate;
|
||||
else
|
||||
return fo;
|
||||
}
|
||||
|
||||
public Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(Iterable<? extends File> files) {
|
||||
return wrap2(fileManager.getJavaFileObjectsFromFiles(files));
|
||||
}
|
||||
|
||||
public Iterable<? extends JavaFileObject> getJavaFileObjects(File... files) {
|
||||
return wrap2(fileManager.getJavaFileObjects(files));
|
||||
}
|
||||
|
||||
public Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names) {
|
||||
return wrap2(fileManager.getJavaFileObjectsFromStrings(names));
|
||||
}
|
||||
|
||||
public Iterable<? extends JavaFileObject> getJavaFileObjects(String... names) {
|
||||
return wrap2(fileManager.getJavaFileObjects(names));
|
||||
}
|
||||
|
||||
/* This method is regrettably necessary because WrappingJavaFileManager.wrap takes
|
||||
* Iterable<JavaFileObject> fileObjects
|
||||
* instead of
|
||||
* Iterable<? extends JavaFileObject> fileObjects
|
||||
*/
|
||||
protected Iterable<JavaFileObject> wrap2(Iterable<? extends JavaFileObject> fileObjects) {
|
||||
List<JavaFileObject> mapped = new ArrayList<JavaFileObject>();
|
||||
for (JavaFileObject fileObject : fileObjects)
|
||||
mapped.add(wrap(fileObject));
|
||||
return Collections.unmodifiableList(mapped);
|
||||
}
|
||||
|
||||
public void setLocation(Location location, Iterable<? extends File> path) throws IOException {
|
||||
fileManager.setLocation(location, path);
|
||||
}
|
||||
|
||||
public Iterable<? extends File> getLocation(Location location) {
|
||||
return fileManager.getLocation(location);
|
||||
}
|
||||
|
||||
class WrappedFileObject implements JavaFileObject {
|
||||
WrappedFileObject(JavaFileObject fileObject) {
|
||||
delegate = fileObject;
|
||||
}
|
||||
|
||||
public Kind getKind() {
|
||||
return delegate.getKind();
|
||||
}
|
||||
|
||||
public boolean isNameCompatible(String simpleName, Kind kind) {
|
||||
return delegate.isNameCompatible(simpleName, kind);
|
||||
}
|
||||
|
||||
public NestingKind getNestingKind() {
|
||||
return delegate.getNestingKind();
|
||||
}
|
||||
|
||||
public Modifier getAccessLevel() {
|
||||
return delegate.getAccessLevel();
|
||||
}
|
||||
|
||||
public URI toUri() {
|
||||
return delegate.toUri();
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return delegate.getName();
|
||||
}
|
||||
|
||||
public InputStream openInputStream() throws IOException {
|
||||
checkRead();
|
||||
return delegate.openInputStream();
|
||||
}
|
||||
|
||||
public OutputStream openOutputStream() throws IOException {
|
||||
checkWrite();
|
||||
return delegate.openOutputStream();
|
||||
}
|
||||
|
||||
public Reader openReader(boolean ignoreEncodingErrors) throws IOException {
|
||||
checkRead();
|
||||
return delegate.openReader(ignoreEncodingErrors);
|
||||
}
|
||||
|
||||
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
|
||||
checkRead();
|
||||
return delegate.getCharContent(ignoreEncodingErrors);
|
||||
}
|
||||
|
||||
public Writer openWriter() throws IOException {
|
||||
checkWrite();
|
||||
return delegate.openWriter();
|
||||
}
|
||||
|
||||
public long getLastModified() {
|
||||
return delegate.getLastModified();
|
||||
}
|
||||
|
||||
public boolean delete() {
|
||||
return delegate.delete();
|
||||
}
|
||||
|
||||
void checkRead() throws IOException {
|
||||
if (cantRead != null && cantRead.matcher(getName()).matches())
|
||||
throw new IOException("FileManager: Can't read");
|
||||
}
|
||||
|
||||
void checkWrite() throws IOException {
|
||||
if (cantWrite != null && cantWrite.matcher(getName()).matches())
|
||||
throw new IOException("FileManager: Can't write");
|
||||
}
|
||||
|
||||
JavaFileObject delegate;
|
||||
}
|
||||
}
|
582
langtools/test/tools/javac/diags/HTMLWriter.java
Normal file
582
langtools/test/tools/javac/diags/HTMLWriter.java
Normal file
@ -0,0 +1,582 @@
|
||||
/*
|
||||
* Copyright (c) 1996,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.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
import java.net.URL;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
/**
|
||||
* A class to facilitate writing HTML via a stream.
|
||||
*/
|
||||
public class HTMLWriter
|
||||
{
|
||||
/**
|
||||
* Create an HTMLWriter object, using a default doctype for HTML 3.2.
|
||||
* @param out a Writer to which to write the generated HTML
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
*/
|
||||
public HTMLWriter(Writer out) throws IOException {
|
||||
this(out, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">");
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an HTMLWriter object, using a specifed doctype header.
|
||||
* @param out a Writer to which to write the generated HTML
|
||||
* @param docType a string containing a doctype header for the HTML to be generetaed
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
*/
|
||||
public HTMLWriter(Writer out, String docType) throws IOException {
|
||||
if (out instanceof BufferedWriter)
|
||||
this.out = (BufferedWriter) out;
|
||||
else
|
||||
this.out = new BufferedWriter(out);
|
||||
this.out.write(docType);
|
||||
this.out.newLine();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an HTMLWriter object, using a specified bundle for localizing messages.
|
||||
* @param out a Writer to which to write the generated HTML
|
||||
* @param i18n a resource bundle to use to localize messages
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
*/
|
||||
public HTMLWriter(Writer out, ResourceBundle i18n) throws IOException {
|
||||
this(out);
|
||||
this.i18n = i18n;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create an HTMLWriter object, using a specifed doctype header and
|
||||
* using a specified bundle for l0calizing messages.
|
||||
* @param out a Writer to which to write the generated HTML
|
||||
* @param docType a string containing a doctype header for the HTML to be generetaed
|
||||
* @param i18n a resource bundle to use to localize messages
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
*/
|
||||
public HTMLWriter(Writer out, String docType, ResourceBundle i18n) throws IOException {
|
||||
this(out, docType);
|
||||
this.i18n = i18n;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the reource bundle to be used for localizing messages.
|
||||
* @param i18n the resource bundle to be used for localizing messages
|
||||
*/
|
||||
public void setResourceBundle(ResourceBundle i18n) {
|
||||
this.i18n = i18n;
|
||||
}
|
||||
|
||||
/**
|
||||
* Flush the stream, and the underlying output stream.
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
*/
|
||||
public void flush() throws IOException {
|
||||
out.flush();
|
||||
}
|
||||
|
||||
/**
|
||||
* Close the stream, and the underlying output stream.
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void close() throws IOException {
|
||||
out.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a newline to the underlying output stream.
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
*/
|
||||
public void newLine() throws IOException {
|
||||
out.newLine();
|
||||
}
|
||||
|
||||
/**
|
||||
* Start an HTML tag. If a prior tag has been started, it will
|
||||
* be closed first. Once a tag has been opened, attributes for the
|
||||
* tag may be written out, followed by body content before finally
|
||||
* ending the tag.
|
||||
* @param tag the tag to be started
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
* @see #writeAttr
|
||||
* @see #write
|
||||
* @see #endTag
|
||||
*/
|
||||
public void startTag(String tag) throws IOException {
|
||||
if (state == IN_TAG) {
|
||||
out.write(">");
|
||||
state = IN_BODY;
|
||||
}
|
||||
//newLine();
|
||||
out.write("<");
|
||||
out.write(tag);
|
||||
state = IN_TAG;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finish an HTML tag. It is expected that a call to endTag will match
|
||||
* a corresponding earlier call to startTag, but there is no formal check
|
||||
* for this.
|
||||
* @param tag the tag to be closed.
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
*/
|
||||
public void endTag(String tag) throws IOException {
|
||||
if (state == IN_TAG) {
|
||||
out.write(">");
|
||||
state = IN_BODY;
|
||||
out.newLine();
|
||||
}
|
||||
out.write("</");
|
||||
out.write(tag);
|
||||
out.write(">");
|
||||
//out.newLine(); // PATCHED, jjg
|
||||
state = IN_BODY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finish an empty element tag, such as a META, BASE or LINK tag.
|
||||
* This is expected to correspond with a startTag.
|
||||
* @param tag the tag which is being closed. this is only useful for
|
||||
* validation, it is not written out
|
||||
* @throws IllegalStateException if this call does not follow startTag
|
||||
* (stream is not currently inside a tag)
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
*/
|
||||
public void endEmptyTag(String tag) throws IOException {
|
||||
if (state != IN_TAG)
|
||||
throw new IllegalStateException();
|
||||
|
||||
out.write(">");
|
||||
state = IN_BODY;
|
||||
out.newLine();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an attribute for a tag. A tag must previously have been started.
|
||||
* All tag attributes must be written before any body text is written.
|
||||
* The value will be quoted if necessary when writing it to the underlying
|
||||
* stream. No check is made that the attribute is valid for the current tag.
|
||||
* @param name the name of the attribute to be written
|
||||
* @param value the value of the attribute to be written
|
||||
* @throws IllegalStateException if the stream is not in a state to
|
||||
* write attributes -- e.g. if this call does not follow startTag or other
|
||||
* calls of writteAttr
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
*/
|
||||
public void writeAttr(String name, String value) throws IOException {
|
||||
if (state != IN_TAG)
|
||||
throw new IllegalStateException();
|
||||
|
||||
out.write(" ");
|
||||
out.write(name);
|
||||
out.write("=");
|
||||
boolean alpha = true;
|
||||
for (int i = 0; i < value.length() && alpha; i++)
|
||||
alpha = Character.isLetter(value.charAt(i));
|
||||
if (!alpha)
|
||||
out.write("\"");
|
||||
out.write(value);
|
||||
if (!alpha)
|
||||
out.write("\"");
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an attribute for a tag. A tag must previously have been started.
|
||||
* All tag attributes must be written before any body text is written.
|
||||
* The value will be quoted if necessary when writing it to the underlying
|
||||
* stream. No check is made that the attribute is valid for the current tag.
|
||||
* @param name the name of the attribute to be written
|
||||
* @param value the value of the attribute to be written
|
||||
* @throws IllegalStateException if the stream is not in a state to
|
||||
* write attributes -- e.g. if this call does not follow startTag or other
|
||||
* calls of writteAttr
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
*/
|
||||
public void writeAttr(String name, int value) throws IOException {
|
||||
writeAttr(name, Integer.toString(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a line of text, followed by a newline.
|
||||
* The text will be escaped as necessary.
|
||||
* @param text the text to be written.
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeLine(String text) throws IOException {
|
||||
write(text);
|
||||
out.newLine();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write body text, escaping it as necessary.
|
||||
* If this call follows a call of startTag, the open tag will be
|
||||
* closed -- meaning that no more attributes can be written until another
|
||||
* tag is started. If the text value is null, the current tag will still
|
||||
* be closed, but no other text will be written.
|
||||
* @param text the text to be written, may be null or zero length.
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
*/
|
||||
public void write(String text) throws IOException {
|
||||
if (state == IN_TAG) {
|
||||
out.write(">");
|
||||
state = IN_BODY;
|
||||
}
|
||||
|
||||
if (text == null)
|
||||
return;
|
||||
|
||||
// check to see if there are any special characters
|
||||
boolean specialChars = false;
|
||||
for (int i = 0; i < text.length() && !specialChars; i++) {
|
||||
switch (text.charAt(i)) {
|
||||
case '<': case '>': case '&':
|
||||
specialChars = true;
|
||||
}
|
||||
}
|
||||
|
||||
// if there are special characters write the string character at a time;
|
||||
// otherwise, write it out as is
|
||||
if (specialChars) {
|
||||
for (int i = 0; i < text.length(); i++) {
|
||||
char c = text.charAt(i);
|
||||
switch (c) {
|
||||
case '<': out.write("<"); break;
|
||||
case '>': out.write(">"); break;
|
||||
case '&': out.write("&"); break;
|
||||
default: out.write(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
out.write(text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a basic HTML entity, such as or { .
|
||||
* @param entity the entity to write
|
||||
* @throws IOException if there is a problem writing to the underlying stream
|
||||
*/
|
||||
public void writeEntity(String entity) throws IOException {
|
||||
if (state == IN_TAG) {
|
||||
out.write(">");
|
||||
state = IN_BODY;
|
||||
}
|
||||
out.write(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an image tag, using a specified path for the image source attribute.
|
||||
* @param imagePath the path for the image source
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeImage(String imagePath) throws IOException {
|
||||
startTag(IMAGE);
|
||||
writeAttr(SRC, imagePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an image tag, using a specified path for the image source attribute.
|
||||
* @param imageURL the url for the image source
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeImage(URL imageURL) throws IOException {
|
||||
writeImage(imageURL.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a hypertext link.
|
||||
* @param anchor the target for the link
|
||||
* @param body the body text for the link
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeLink(String anchor, String body) throws IOException {
|
||||
startTag(A);
|
||||
writeAttr(HREF, anchor);
|
||||
write(body);
|
||||
endTag(A);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a hypertext link.
|
||||
* @param file the target for the link
|
||||
* @param body the body text for the link
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeLink(File file, String body) throws IOException {
|
||||
startTag(A);
|
||||
StringBuffer sb = new StringBuffer();
|
||||
String path = file.getPath().replace(File.separatorChar, '/');
|
||||
if (file.isAbsolute() && !path.startsWith("/"))
|
||||
sb.append('/');
|
||||
sb.append(path);
|
||||
writeAttr(HREF, sb.toString());
|
||||
write(body);
|
||||
endTag(A);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a hypertext link.
|
||||
* @param file the target and body for the link
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeLink(File file) throws IOException {
|
||||
writeLink(file, file.getPath());
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a hypertext link.
|
||||
* @param url the target for the link
|
||||
* @param body the body text for the link
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeLink(URL url, String body) throws IOException {
|
||||
startTag(A);
|
||||
writeAttr(HREF, url.toString());
|
||||
write(body);
|
||||
endTag(A);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the destination marker for a hypertext link.
|
||||
* @param anchor the destination marker for hypertext links
|
||||
* @param body the body text for the marker
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeLinkDestination(String anchor, String body) throws IOException {
|
||||
startTag(A);
|
||||
writeAttr(NAME, anchor);
|
||||
write(body);
|
||||
endTag(A);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a parameter tag.
|
||||
* @param name the name of the parameter
|
||||
* @param value the value of the parameter
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeParam(String name, String value) throws IOException {
|
||||
startTag(PARAM);
|
||||
writeAttr(NAME, name);
|
||||
writeAttr(VALUE, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a style attribute.
|
||||
* @param value the value for the style atrtribute
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeStyleAttr(String value) throws IOException {
|
||||
writeAttr(STYLE, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a localized message, using a specified resource bundle.
|
||||
* @param i18n the resource bundle used to localize the message
|
||||
* @param key the key for the message to be localized
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void write(ResourceBundle i18n, String key) throws IOException {
|
||||
write(getString(i18n, key));
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a localized message, using a specified resource bundle.
|
||||
* @param i18n the resource bundle used to localize the message
|
||||
* @param key the key for the message to be localized
|
||||
* @param arg an argument to be formatted into the localized message
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void write(ResourceBundle i18n, String key, Object arg) throws IOException {
|
||||
write(getString(i18n, key, arg));
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a localized message, using a specified resource bundle.
|
||||
* @param i18n the resource bundle used to localize the message
|
||||
* @param key the key for the message to be localized
|
||||
* @param args arguments to be formatted into the localized message
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void write(ResourceBundle i18n, String key, Object[] args) throws IOException {
|
||||
write(getString(i18n, key, args));
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a localized message, using the default resource bundle.
|
||||
* @param key the key for the message to be localized
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeI18N(String key) throws IOException {
|
||||
write(getString(i18n, key));
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a localized message, using the default resource bundle.
|
||||
* @param key the key for the message to be localized
|
||||
* @param arg an argument to be formatted into the localized message
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeI18N(String key, Object arg) throws IOException {
|
||||
write(getString(i18n, key, arg));
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a localized message, using the default resource bundle.
|
||||
* @param key the key for the message to be localized
|
||||
* @param args arguments to be formatted into the localized message
|
||||
* @throws IOException if there is a problem closing the underlying stream
|
||||
*/
|
||||
public void writeI18N(String key, Object[] args) throws IOException {
|
||||
write(getString(i18n, key, args));
|
||||
}
|
||||
|
||||
private String getString(ResourceBundle rb, String key, Object... args) {
|
||||
String s = rb.getString(key);
|
||||
return MessageFormat.format(s, args);
|
||||
}
|
||||
|
||||
/** The HTML "a" tag. */
|
||||
public static final String A = "a";
|
||||
/** The HTML "align" attribute. */
|
||||
public static final String ALIGN = "align";
|
||||
/** The HTML "b" tag. */
|
||||
public static final String B = "b";
|
||||
/** The HTML "body" tag. */
|
||||
public static final String BODY = "body";
|
||||
/** The HTML "border" attribute. */
|
||||
public static final String BORDER = "border";
|
||||
/** The HTML "br" tag. */
|
||||
public static final String BR = "br";
|
||||
/** The HTML "class" attribute. */
|
||||
public static final String CLASS = "class";
|
||||
/** The HTML "classid" attribute. */
|
||||
public static final String CLASSID = "classid";
|
||||
/** The HTML "code" tag. */
|
||||
public static final String CODE = "code";
|
||||
/** The HTML "color" attribte. */
|
||||
public static final String COLOR = "color";
|
||||
/** The HTML "col" attribute value. */
|
||||
public static final String COL = "col";
|
||||
/** The HTML "dd" tag. */
|
||||
public static final String DD = "dd";
|
||||
/** The HTML "div" tag. */
|
||||
public static final String DIV = "div";
|
||||
/** The HTML "dl" tag. */
|
||||
public static final String DL = "dl";
|
||||
/** The HTML "dt" tag. */
|
||||
public static final String DT = "dt";
|
||||
/** The HTML "font" tag. */
|
||||
public static final String FONT = "font";
|
||||
/** The HTML "h1" tag. */
|
||||
public static final String H1 = "h1";
|
||||
/** The HTML "h2" tag. */
|
||||
public static final String H2 = "h2";
|
||||
/** The HTML "h3" tag. */
|
||||
public static final String H3 = "h3";
|
||||
/** The HTML "h4" tag. */
|
||||
public static final String H4 = "h4";
|
||||
/** The HTML "h5" tag. */
|
||||
public static final String H5 = "h5";
|
||||
/** The HTML "head" tag. */
|
||||
public static final String HEAD = "head";
|
||||
/** The HTML "href" attribute. */
|
||||
public static final String HREF = "href";
|
||||
/** The HTML "html" tag. */
|
||||
public static final String HTML = "html";
|
||||
/** The HTML "hr" tag. */
|
||||
public static final String HR = "hr";
|
||||
/** The HTML "i" tag. */
|
||||
public static final String I = "i";
|
||||
/** The HTML "id" tag. */
|
||||
public static final String ID = "id";
|
||||
/** The HTML "image" tag. */
|
||||
public static final String IMAGE = "image";
|
||||
/** The HTML "left" attribute value. */
|
||||
public static final String LEFT = "left";
|
||||
/** The HTML "li" tag. */
|
||||
public static final String LI = "li";
|
||||
/** The HTML "link" tag. */
|
||||
public static final String LINK = "link";
|
||||
/** The HTML "name" attribute. */
|
||||
public static final String NAME = "name";
|
||||
/** The HTML "object" tag. */
|
||||
public static final String OBJECT = "object";
|
||||
/** The HTML "p" tag. */
|
||||
public static final String PARAM = "param";
|
||||
/** The HTML "param" tag. */
|
||||
public static final String P = "p";
|
||||
/** The HTML "rel" attribute value. */
|
||||
public static final String REL = "rel";
|
||||
/** The HTML "right" attribute value. */
|
||||
public static final String RIGHT = "right";
|
||||
/** The HTML "row" attribute value. */
|
||||
public static final String ROW = "row";
|
||||
/** The HTML "script" tag. */
|
||||
public static final String SCRIPT = "script";
|
||||
/** The HTML "small" tag. */
|
||||
public static final String SMALL = "small";
|
||||
/** The HTML "span" tag. */
|
||||
public static final String SPAN = "span";
|
||||
/** The HTML "src" attribute. */
|
||||
public static final String SRC = "src";
|
||||
/** The HTML "scope" attribute. */
|
||||
public static final String SCOPE = "scope";
|
||||
/** The HTML "style" attribute. */
|
||||
public static final String STYLE = "style";
|
||||
/** The HTML "table" tag. */
|
||||
public static final String TABLE = "table";
|
||||
/** The HTML "td" tag. */
|
||||
public static final String TD = "td";
|
||||
/** The HTML type for JavaScript. */
|
||||
public static final String TEXT_JAVASCRIPT = "text/javascript";
|
||||
/** The HTML "title"attribute. */
|
||||
public static final String TITLE = "title";
|
||||
/** The HTML "th" tag. */
|
||||
public static final String TH = "th";
|
||||
/** The HTML "top" attribute value. */
|
||||
public static final String TOP = "top";
|
||||
/** The HTML "tr" tag. */
|
||||
public static final String TR = "tr";
|
||||
/** The HTML "type" attribute. */
|
||||
public static final String TYPE = "type";
|
||||
/** The HTML "ul" tag. */
|
||||
public static final String UL = "ul";
|
||||
/** The HTML "valign" attribute. */
|
||||
public static final String VALIGN = "valign";
|
||||
/** The HTML "value" attribute. */
|
||||
public static final String VALUE = "value";
|
||||
|
||||
|
||||
private BufferedWriter out;
|
||||
private int state;
|
||||
private ResourceBundle i18n;
|
||||
private static final int IN_TAG = 1;
|
||||
private static final int IN_BODY = 2;
|
||||
}
|
134
langtools/test/tools/javac/diags/README.examples.txt
Normal file
134
langtools/test/tools/javac/diags/README.examples.txt
Normal file
@ -0,0 +1,134 @@
|
||||
Diagnostics Examples.
|
||||
|
||||
The "examples/ directory contains a collection of examples of Java code, each of
|
||||
which is designed to illustrate one or more diagnostics that can be generated by
|
||||
the JDK Java compiler, javac. These examples are represented by files or
|
||||
directories of files, each of which is designed to illustrate a specific
|
||||
diagnostic. Sometimes it is unavoidable that creating one issue will lead to
|
||||
downstream issues: this is especially true for lex errors, where the error
|
||||
recovery is fragile at best. Each example declares the diagnostics that it is
|
||||
expected to generate -- this allows the examples to be verified and facilitates
|
||||
searching for examples for specific messages.
|
||||
|
||||
Normally, tests for javac errors avoid checking the actual error messages that
|
||||
get generated. Older tests simply verify that one or more warnings or errors
|
||||
are generated; more recent tests verify that specific messages are generated,
|
||||
but these tests typically avoid checking the localized text by using the
|
||||
-XDrawDiagnostics mechanism. In addition, the focus of such tests is often on
|
||||
completeness instead of simplicity.
|
||||
|
||||
By contrast, the intent of these examples is to provide simple and easy to
|
||||
understand examples of the situations in which a diagnostic can arise, and the
|
||||
messages that may be displayed. This will aid in reviewing the output generated
|
||||
by javac and in localizing the resource bundle to other locales. In addition,
|
||||
the examples include simple meta-information so that the collection as a whole
|
||||
can be audited for coverage, thus encouraging new examples to be added when new
|
||||
diagnostics are added to javac.
|
||||
|
||||
There are two utilities for processing these examples.
|
||||
|
||||
The first utility is "CheckExamples" which checks various conditions for the
|
||||
examples:
|
||||
-- each example must generate exactly the set of keys that it is declared to
|
||||
generate
|
||||
-- together, the examples must generate all the resource keys coming from javac
|
||||
(except for resource keys that are registered in a "not yet" list)
|
||||
-- the "not yet" list should only contain those resource keys from javac that
|
||||
are not covered by any example
|
||||
|
||||
CheckExamples can be run standalone, and as a jtreg test, and will fail if any
|
||||
anomalous conditions are found.
|
||||
|
||||
The second utility is "RunExamples" which runs selected examples or all of them.
|
||||
The examples can be run with -XDrawDiagnostics or without. Examples can be
|
||||
selected by name or by resource key. Most examples are simple to run directly
|
||||
anyway, but some use annotation processors or sourcepath or other options, and
|
||||
the framework handles all these requirements.
|
||||
|
||||
RunExamples can be run standalone and as a jtreg test, in which case it
|
||||
generates a simple plain text report. In addition, the langtools/make/build.xml
|
||||
file has a target "diags-examples" that uses RunExamples to create an HTML
|
||||
report containing the output from all the examples.
|
||||
|
||||
|
||||
Adding examples.
|
||||
|
||||
When new diagnostics are added to javac, CheckExamples will probably initially
|
||||
fail because the diagnostic will not have a corresponding example, nor will the
|
||||
resource key be registered in the "not yet" list. Avoid the temptation to
|
||||
simply add the resource key to the "not yet" list, except as a last resort.
|
||||
|
||||
Examples should be as simple as possible to illustrate a diagnostic. An example
|
||||
that is a single file is to be preferred over multiple files. An example that
|
||||
generates just the one intended diagnostic is to be preferred over one that
|
||||
generates multiple diagnostics. Examples should be a simple illustration of the
|
||||
conditions that give rise to the diagnostic and should be easy to understand by
|
||||
the reviewer and, potentially, by the localization folk, who have to understand
|
||||
the context in which these new messages can appear.
|
||||
|
||||
|
||||
Specification for writing examples.
|
||||
|
||||
An example may a single file or a directory of files directly in the "examples"
|
||||
directory. One file within an example must contain meta-information such as the
|
||||
keys that it generates, any javac options that may be required, and additional
|
||||
info about how to run the test, if needed.
|
||||
|
||||
If an example is represented by a directory of files, by default all files
|
||||
within that directory will be compiled together, putting all the files on the
|
||||
command line. However, some subdirectories are special:
|
||||
-- processors/
|
||||
Files within this directory will be treated as annotation processors and
|
||||
compiled ahead of time. Currently, annotation processors are made available
|
||||
to javac using the -classpath option (not -processorpath). This is to avoid
|
||||
explicit use of annotation processing options on the javac command line.
|
||||
Any annotation processors found will be registered for access by the JDK
|
||||
service loaded. Currently, annotation processors are assumed to be in the
|
||||
unnamed package.
|
||||
-- sourcepath/
|
||||
If present, this directory will be put passed to javac using the -sourcepath
|
||||
option.
|
||||
-- classpath/
|
||||
This name is reserved for future use. It is expected that this directory
|
||||
will be used to provide classes to be compiled and passes to javac via the
|
||||
-classpath option.
|
||||
-- support/
|
||||
This name is reserved for future use. It is expected that this directory
|
||||
will be used to provide classes that setup non-standard conditions for a
|
||||
test, such as very large source files, or illegal class files.
|
||||
|
||||
Meta-information is represented by simple comment lines in exactly one of the
|
||||
source files of the example. The file must not be in one of the special
|
||||
subdirectories (processors/, sourcepath/, classpath/ or support/). Three
|
||||
different types of information may be given:
|
||||
// key: <resource-key>
|
||||
One or more such lines must be provided, declaring the full resource keys
|
||||
that will be used by javac when this example is run.
|
||||
// options: <javac-options>
|
||||
This line may be given at most once, providing one or more options to be
|
||||
passed to javac. It is not possible to use this to specify options that
|
||||
require filenames or directories.
|
||||
// run: <mode> <optional-args>
|
||||
This line may be given at most once, providing infomation about how to
|
||||
run the example. Three different kinds are supported:
|
||||
jsr199 -- The example will be run using the JSR 199 Compiler API.
|
||||
This is the default if the tag is omitted. Messages generated
|
||||
by the "rich diagnostic formatter" can not be accessed in this
|
||||
way. However, this mode does provide additional options for
|
||||
simulating errors in the filesystem. (See the options below.)
|
||||
simple -- The example will be run using the simple com.sun.tools.javac.Main
|
||||
API. This mode is most like the normal command line invocation.
|
||||
backdoor -- The example will be run using an internal "backdoor" API, that
|
||||
interposes access to the main compiler message bundle. This mode
|
||||
is required to detect and track messages that bypass the normal
|
||||
diagnostic mechanisms, such as output generated by the -verbose
|
||||
option.
|
||||
|
||||
The "jsr199" run mode accepts the following options:
|
||||
-cantRead:pattern
|
||||
-cantWrite:pattern
|
||||
In both cases, the pattern is a standard Java regular expression (See the
|
||||
javadoc for java.util.regex.Pattern for a complete specification.) Attempts to
|
||||
read or write from files matching the corresponding pattern will cause an
|
||||
IOException to occur within javac.
|
||||
|
582
langtools/test/tools/javac/diags/RunExamples.java
Normal file
582
langtools/test/tools/javac/diags/RunExamples.java
Normal file
@ -0,0 +1,582 @@
|
||||
/*
|
||||
* 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 6968063
|
||||
* @summary provide examples of code that generate diagnostics
|
||||
* @build Example HTMLWriter RunExamples
|
||||
* @run main RunExamples
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* Utility to run selected or all examples, writing results to
|
||||
* stdout, a plain text file or an HTML file. This program can be
|
||||
* run standalone, or as a jtreg test.
|
||||
*
|
||||
* Options:
|
||||
* -examples dir directory of examples. Defaults to ${test.src}/examples
|
||||
* -raw run examples with -XDrawDiagnostics
|
||||
* -showFiles include text of source files in the output
|
||||
* -verbose verbose output
|
||||
* -o file write output to file: format will be HTML if
|
||||
* file has .html extension; otherwise it will be plain text.
|
||||
* default is to stdout
|
||||
* -title string specify a title, only applies to HTML output
|
||||
*/
|
||||
public class RunExamples {
|
||||
public static void main(String... args) throws Exception {
|
||||
boolean jtreg = (System.getProperty("test.src") != null);
|
||||
File tmpDir;
|
||||
if (jtreg) {
|
||||
// use standard jtreg scratch directory: the current directory
|
||||
tmpDir = new File(System.getProperty("user.dir"));
|
||||
} else {
|
||||
tmpDir = new File(System.getProperty("java.io.tmpdir"),
|
||||
RunExamples.class.getName()
|
||||
+ (new SimpleDateFormat("yyMMddHHmmss")).format(new Date()));
|
||||
}
|
||||
Example.setTempDir(tmpDir);
|
||||
|
||||
RunExamples r = new RunExamples();
|
||||
|
||||
try {
|
||||
if (r.run(args))
|
||||
return;
|
||||
} finally {
|
||||
/* VERY IMPORTANT NOTE. In jtreg mode, tmpDir is set to the
|
||||
* jtreg scratch directory, which is the current directory.
|
||||
* In case someone is faking jtreg mode, make sure to only
|
||||
* clean tmpDir when it is reasonable to do so.
|
||||
*/
|
||||
if (tmpDir.isDirectory() &&
|
||||
tmpDir.getName().startsWith(RunExamples.class.getName())) {
|
||||
if (clean(tmpDir))
|
||||
tmpDir.delete();
|
||||
}
|
||||
}
|
||||
|
||||
if (jtreg)
|
||||
throw new Exception(r.errors + " errors occurred");
|
||||
else
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
boolean run(String... args) {
|
||||
Set<String> selectedKeys = new TreeSet<String>();
|
||||
Set<Example> selectedExamples = new TreeSet<Example>();
|
||||
File testSrc = new File(System.getProperty("test.src", "."));
|
||||
File examplesDir = new File(testSrc, "examples");
|
||||
File outFile = null;
|
||||
boolean raw = false;
|
||||
boolean showFiles = false;
|
||||
boolean verbose = false;
|
||||
String title = null;
|
||||
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
String arg = args[i];
|
||||
if (arg.equals("-k") && (i + 1) < args.length)
|
||||
selectedKeys.add(args[++i]);
|
||||
else if (arg.equals("-examples") && (i + 1) < args.length)
|
||||
examplesDir = new File(args[++i]);
|
||||
else if (arg.equals("-raw"))
|
||||
raw = true;
|
||||
else if (arg.equals("-showFiles"))
|
||||
showFiles = true;
|
||||
else if (arg.equals("-verbose"))
|
||||
verbose = true;
|
||||
else if (arg.equals("-o") && (i + 1) < args.length)
|
||||
outFile = new File(args[++i]);
|
||||
else if (arg.equals("-title") && (i + 1) < args.length)
|
||||
title = args[++i];
|
||||
else if (arg.startsWith("-")) {
|
||||
error("unknown option: " + arg);
|
||||
return false;
|
||||
} else {
|
||||
while (i < args.length) {
|
||||
File f = new File(examplesDir, args[i]);
|
||||
selectedExamples.add(new Example(f));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (selectedKeys.size() > 0) {
|
||||
Set<Example> examples = getExamples(examplesDir);
|
||||
nextKey:
|
||||
for (String k: selectedKeys) {
|
||||
for (Example e: examples) {
|
||||
if (e.getDeclaredKeys().contains(k))
|
||||
continue nextKey;
|
||||
}
|
||||
error("Key " + k + ": no examples found");
|
||||
}
|
||||
} else {
|
||||
if (selectedExamples.size() == 0)
|
||||
selectedExamples = getExamples(examplesDir);
|
||||
}
|
||||
|
||||
try {
|
||||
Runner r;
|
||||
if (outFile == null) {
|
||||
PrintWriter out = new PrintWriter(System.out);
|
||||
r = new TextRunner(out, showFiles, raw, verbose);
|
||||
} else if (outFile.getName().endsWith(".html"))
|
||||
r = new HTMLRunner(outFile, showFiles, raw, verbose, title);
|
||||
else
|
||||
r = new TextRunner(outFile, showFiles, raw, verbose);
|
||||
r.run(selectedExamples);
|
||||
r.close();
|
||||
} catch (IOException e) {
|
||||
error("Error writing output: " + e);
|
||||
}
|
||||
|
||||
return (errors == 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the complete set of examples to be checked.
|
||||
*/
|
||||
Set<Example> getExamples(File examplesDir) {
|
||||
Set<Example> results = new TreeSet<Example>();
|
||||
for (File f: examplesDir.listFiles()) {
|
||||
if (f.isDirectory() || f.isFile() && f.getName().endsWith(".java"))
|
||||
results.add(new Example(f));
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Report an error.
|
||||
*/
|
||||
void error(String msg) {
|
||||
System.err.println("Error: " + msg);
|
||||
errors++;
|
||||
}
|
||||
|
||||
int errors;
|
||||
|
||||
/**
|
||||
* Clean the contents of a directory.
|
||||
*/
|
||||
static boolean clean(File dir) {
|
||||
boolean ok = true;
|
||||
for (File f: dir.listFiles()) {
|
||||
if (f.isDirectory())
|
||||
ok &= clean(f);
|
||||
ok &= f.delete();
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
static abstract class Runner {
|
||||
Runner(boolean showFiles, boolean raw, boolean verbose) {
|
||||
this.showFiles = showFiles;
|
||||
this.raw = raw;
|
||||
this.verbose = verbose;
|
||||
}
|
||||
|
||||
void close() throws IOException { }
|
||||
|
||||
void run(Collection<Example> examples) throws IOException {
|
||||
for (Example e: examples) {
|
||||
startExample(e);
|
||||
if (showFiles) {
|
||||
showFile(e, e.infoFile);
|
||||
Set<File> srcFiles = new TreeSet<File>(e.srcFiles);
|
||||
srcFiles.remove(e.infoFile);
|
||||
showFiles(e, srcFiles);
|
||||
showFiles(e, e.srcPathFiles);
|
||||
showFiles(e, e.procFiles);
|
||||
showFiles(e, e.supportFiles);
|
||||
}
|
||||
run(e);
|
||||
}
|
||||
}
|
||||
|
||||
void showFiles(Example e, Collection<File> files) throws IOException {
|
||||
for (File f: files)
|
||||
showFile(e, f);
|
||||
}
|
||||
|
||||
abstract void startExample(Example e) throws IOException;
|
||||
|
||||
abstract void showFile(Example e, File f) throws IOException;
|
||||
|
||||
abstract void run(Example e) throws IOException;
|
||||
|
||||
protected String read(File f) throws IOException {
|
||||
byte[] bytes = new byte[(int) f.length()];
|
||||
DataInputStream in = new DataInputStream(new FileInputStream(f));
|
||||
try {
|
||||
in.readFully(bytes);
|
||||
} finally {
|
||||
in.close();
|
||||
}
|
||||
return new String(bytes);
|
||||
}
|
||||
|
||||
protected Pattern copyrightHeaderPat =
|
||||
Pattern.compile("(?s)(/\\*.*?Copyright.*?\\*/\n)\\s*(.*)");
|
||||
protected Pattern infoHeaderPat =
|
||||
Pattern.compile("(?s)((?://\\s*[a-z]+:[^\n]*\n)+)\\s*(.*)");
|
||||
|
||||
protected boolean showFiles;
|
||||
protected boolean raw;
|
||||
protected boolean verbose;
|
||||
}
|
||||
|
||||
static class TextRunner extends Runner {
|
||||
TextRunner(File file, boolean showFiles, boolean raw, boolean verbose)
|
||||
throws IOException {
|
||||
super(showFiles, raw, verbose);
|
||||
this.file = file;
|
||||
out = new PrintWriter(new FileWriter(file));
|
||||
}
|
||||
|
||||
TextRunner(PrintWriter out, boolean showFiles, boolean raw, boolean verbose)
|
||||
throws IOException {
|
||||
super(showFiles, raw, verbose);
|
||||
this.out = out;
|
||||
}
|
||||
|
||||
@Override
|
||||
void close() {
|
||||
if (file != null)
|
||||
out.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
void startExample(Example e) {
|
||||
out.println("----- " + e.getName() + " --------------------");
|
||||
out.println();
|
||||
}
|
||||
|
||||
@Override
|
||||
void showFile(Example e, File f) {
|
||||
out.println("--- " + f);
|
||||
String text;
|
||||
try {
|
||||
text = read(f);
|
||||
} catch (IOException ex) {
|
||||
text = "Error reading " + f + "; " + ex;
|
||||
}
|
||||
Matcher m = copyrightHeaderPat.matcher(text);
|
||||
if (m.matches()) {
|
||||
out.println("(Copyright)");
|
||||
writeLines(m.group(2));
|
||||
} else {
|
||||
writeLines(text);
|
||||
}
|
||||
out.println();
|
||||
}
|
||||
|
||||
@Override
|
||||
void run(Example e) {
|
||||
// only show Output: header if also showing files
|
||||
if (showFiles)
|
||||
out.println("--- Output:");
|
||||
e.run(out, raw, verbose);
|
||||
out.println();
|
||||
}
|
||||
|
||||
void writeLines(String text) {
|
||||
for (String line: text.split("\n"))
|
||||
out.println(line);
|
||||
}
|
||||
|
||||
File file;
|
||||
PrintWriter out;
|
||||
}
|
||||
|
||||
static class HTMLRunner extends Runner {
|
||||
HTMLRunner(File file, boolean showFiles, boolean raw, boolean verbose, String title)
|
||||
throws IOException {
|
||||
super(showFiles, raw, verbose);
|
||||
this.file = file;
|
||||
PrintWriter out = new PrintWriter(new FileWriter(file));
|
||||
html = new HTMLWriter(out);
|
||||
html.startTag(HTMLWriter.HEAD);
|
||||
if (title != null) {
|
||||
html.startTag(HTMLWriter.TITLE);
|
||||
html.write(title);
|
||||
html.endTag(HTMLWriter.TITLE);
|
||||
}
|
||||
html.startTag(HTMLWriter.STYLE);
|
||||
html.newLine();
|
||||
html.writeLine("div.file { background-color:#e0ffe0; margin-left:30px; margin-right:30px;\n"
|
||||
+ " padding: 3px; border: thin solid silver; }");
|
||||
html.writeLine("p.file { white-space: pre-wrap; font-family:monospace; margin: 0; }");
|
||||
html.writeLine("div.output { background-color:#e0e0ff; margin-left:30px; margin-right:30px;\n"
|
||||
+ " padding: 3px; border: thin solid silver; }");
|
||||
html.writeLine("p.output { white-space: pre-wrap; font-family:monospace; margin: 0; }");
|
||||
html.writeLine("table.index { border: thin solid silver; }");
|
||||
html.writeLine(".copyright { font-size: x-small }");
|
||||
html.writeLine(".hidden { display:none }");
|
||||
html.writeLine(".unhidden { display:block }");
|
||||
html.writeLine(".odd { background-color: #e0e0e0 }");
|
||||
html.writeLine(".even { background-color: white }");
|
||||
html.endTag(HTMLWriter.STYLE);
|
||||
html.startTag(HTMLWriter.SCRIPT);
|
||||
html.writeAttr(HTMLWriter.TYPE, HTMLWriter.TEXT_JAVASCRIPT);
|
||||
html.writeLine("\nfunction unhide(id) {\n"
|
||||
+ " var item = document.getElementById(id);\n"
|
||||
+ " if (item) {\n"
|
||||
+ " item.className=(item.className=='hidden')?'unhidden':'hidden';\n"
|
||||
+ " }\n"
|
||||
+ "}");
|
||||
html.endTag(HTMLWriter.SCRIPT);
|
||||
html.endTag(HTMLWriter.HEAD);
|
||||
html.startTag(HTMLWriter.BODY);
|
||||
if (title != null) {
|
||||
html.startTag(TITLE_HEADER);
|
||||
html.write(title);
|
||||
html.endTag(TITLE_HEADER);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
void close() throws IOException {
|
||||
html.endTag(HTMLWriter.BODY);
|
||||
html.newLine();
|
||||
html.flush();
|
||||
}
|
||||
|
||||
@Override
|
||||
void run(Collection<Example> examples) throws IOException {
|
||||
if (examples.size() > 1)
|
||||
writeIndex(examples);
|
||||
super.run(examples);
|
||||
}
|
||||
|
||||
void writeIndex(Collection<Example> examples) throws IOException {
|
||||
Map<String, Set<Example>> index = new TreeMap<String, Set<Example>>();
|
||||
Set<String> initials = new HashSet<String>();
|
||||
for (Example e: examples) {
|
||||
for (String k: e.getDeclaredKeys()) {
|
||||
Set<Example> s = index.get(k);
|
||||
if (s == null)
|
||||
index.put(k, s = new TreeSet<Example>());
|
||||
s.add(e);
|
||||
}
|
||||
initials.add(e.getName().substring(0, 1).toUpperCase());
|
||||
}
|
||||
|
||||
|
||||
if (INDEX_HEADER != null) {
|
||||
html.startTag(INDEX_HEADER);
|
||||
html.write("Index");
|
||||
html.endTag(INDEX_HEADER);
|
||||
}
|
||||
|
||||
html.startTag(HTMLWriter.P);
|
||||
html.writeLine("Examples: ");
|
||||
for (char initial = 'A'; initial <= 'Z'; initial++) {
|
||||
String s = String.valueOf(initial);
|
||||
if (initials.contains(s)) {
|
||||
html.writeLink("#" + s, s);
|
||||
} else {
|
||||
html.write(s);
|
||||
}
|
||||
html.newLine();
|
||||
}
|
||||
html.endTag(HTMLWriter.P);
|
||||
|
||||
html.startTag(HTMLWriter.TABLE);
|
||||
html.writeAttr(HTMLWriter.CLASS, "index");
|
||||
html.newLine();
|
||||
int row = 0;
|
||||
for (Map.Entry<String, Set<Example>> entry: index.entrySet()) {
|
||||
html.startTag(HTMLWriter.TR);
|
||||
html.writeAttr(HTMLWriter.CLASS,
|
||||
(row++ % 2 == 0 ? "even" : "odd"));
|
||||
html.startTag(HTMLWriter.TD);
|
||||
html.writeAttr("valign", "top");
|
||||
html.write(entry.getKey());
|
||||
html.endTag(HTMLWriter.TD);
|
||||
html.newLine();
|
||||
html.startTag(HTMLWriter.TD);
|
||||
html.writeAttr(HTMLWriter.ALIGN, "top");
|
||||
String sep = "";
|
||||
for (Example e: entry.getValue()) {
|
||||
html.write(sep);
|
||||
html.writeLink('#' + e.getName(), e.getName());
|
||||
sep = ", ";
|
||||
}
|
||||
html.endTag(HTMLWriter.TD);
|
||||
html.endTag(HTMLWriter.TR);
|
||||
html.newLine();
|
||||
}
|
||||
html.endTag(HTMLWriter.TABLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
void startExample(Example e) throws IOException {
|
||||
String name = e.getName();
|
||||
String initial = name.substring(0, 1).toUpperCase();
|
||||
if (!initial.equals(currInitial)) {
|
||||
html.writeLinkDestination(initial, "");
|
||||
currInitial = initial;
|
||||
}
|
||||
html.writeLinkDestination(name, "");
|
||||
html.startTag(EXAMPLE_HEADER);
|
||||
html.write(e.getName());
|
||||
html.endTag(EXAMPLE_HEADER);
|
||||
}
|
||||
|
||||
@Override
|
||||
void showFile(Example e, File f) throws IOException {
|
||||
String text;
|
||||
try {
|
||||
text = read(f);
|
||||
} catch (IOException ex) {
|
||||
text = "Error reading " + f + ": " + ex;
|
||||
}
|
||||
if (!f.equals(e.file)) {
|
||||
html.startTag(FILE_HEADER);
|
||||
html.write(e.file.toURI().relativize(f.toURI()).toString());
|
||||
html.endTag(FILE_HEADER);
|
||||
}
|
||||
html.startTag(HTMLWriter.DIV);
|
||||
html.writeAttr(CLASS, FILE);
|
||||
|
||||
String legalHeader;
|
||||
Matcher m1 = copyrightHeaderPat.matcher(text);
|
||||
if (m1.matches()) {
|
||||
legalHeader = m1.group(1);
|
||||
text = m1.group(2);
|
||||
} else
|
||||
legalHeader = null;
|
||||
|
||||
String infoHeader;
|
||||
Matcher m2 = infoHeaderPat.matcher(text);
|
||||
if (m2.matches()) {
|
||||
infoHeader = m2.group(1);
|
||||
text = m2.group(2);
|
||||
} else
|
||||
infoHeader = null;
|
||||
|
||||
String legalId = null, infoId = null;
|
||||
if (legalHeader != null || infoHeader != null) {
|
||||
String sep = "";
|
||||
html.startTag(HTMLWriter.SPAN);
|
||||
html.writeStyleAttr("float: right");
|
||||
if (legalHeader != null) {
|
||||
legalId = nextId();
|
||||
html.startTag(HTMLWriter.A);
|
||||
html.writeAttr(HTMLWriter.HREF, "javascript:unhide('" + legalId + "');");
|
||||
//html.writeEntity("©");
|
||||
html.write("Copyright");
|
||||
html.endTag(HTMLWriter.A);
|
||||
sep = ", ";
|
||||
}
|
||||
if (infoHeader != null) {
|
||||
html.write(sep);
|
||||
infoId = nextId();
|
||||
html.startTag(HTMLWriter.A);
|
||||
html.writeAttr(HTMLWriter.HREF, "javascript:unhide('" + infoId + "');");
|
||||
html.write("Info");
|
||||
html.endTag(HTMLWriter.A);
|
||||
sep = ", ";
|
||||
}
|
||||
html.endTag(HTMLWriter.SPAN);
|
||||
}
|
||||
|
||||
html.startTag(HTMLWriter.P);
|
||||
html.writeAttr(CLASS, FILE);
|
||||
if (legalHeader != null) {
|
||||
html.startTag(HTMLWriter.SPAN);
|
||||
html.writeAttr(HTMLWriter.CLASS, "hidden");
|
||||
html.writeAttr(HTMLWriter.ID, legalId);
|
||||
html.write(legalHeader);
|
||||
html.newLine();
|
||||
html.endTag(HTMLWriter.SPAN);
|
||||
}
|
||||
if (infoHeader != null) {
|
||||
html.startTag(HTMLWriter.SPAN);
|
||||
html.writeAttr(HTMLWriter.CLASS, "hidden");
|
||||
html.writeAttr(HTMLWriter.ID, infoId);
|
||||
html.write(infoHeader);
|
||||
html.newLine();
|
||||
html.endTag(HTMLWriter.SPAN);
|
||||
}
|
||||
html.write(text);
|
||||
html.endTag(HTMLWriter.P);
|
||||
|
||||
html.endTag(HTMLWriter.DIV);
|
||||
}
|
||||
|
||||
@Override
|
||||
void run(Example e) throws IOException {
|
||||
StringWriter sw = new StringWriter();
|
||||
PrintWriter pw = new PrintWriter(sw);
|
||||
e.run(pw, raw, verbose);
|
||||
pw.flush();
|
||||
|
||||
// only show Output: header if also showing files
|
||||
if (showFiles) {
|
||||
html.startTag(OUTPUT_HEADER);
|
||||
html.write("Output:");
|
||||
html.endTag(OUTPUT_HEADER);
|
||||
}
|
||||
|
||||
html.startTag(HTMLWriter.DIV);
|
||||
html.writeAttr(CLASS, OUTPUT);
|
||||
html.startTag(HTMLWriter.P);
|
||||
html.writeAttr(CLASS, OUTPUT);
|
||||
String[] lines = sw.toString().split("\n");
|
||||
for (String line: lines) {
|
||||
html.write(line);
|
||||
html.newLine();
|
||||
}
|
||||
html.endTag(HTMLWriter.P);
|
||||
html.endTag(HTMLWriter.DIV);
|
||||
}
|
||||
|
||||
String nextId() {
|
||||
return "id" + (nextId++);
|
||||
}
|
||||
|
||||
File file;
|
||||
HTMLWriter html;
|
||||
int nextId;
|
||||
String currInitial = "";
|
||||
|
||||
static final String TITLE_HEADER = HTMLWriter.H3;
|
||||
static final String INDEX_HEADER = HTMLWriter.H4;
|
||||
static final String EXAMPLE_HEADER = HTMLWriter.H4;
|
||||
static final String FILE_HEADER = HTMLWriter.H5;
|
||||
static final String OUTPUT_HEADER = HTMLWriter.H5;
|
||||
static final String CLASS = "class";
|
||||
static final String FILE = "file";
|
||||
static final String OUTPUT = "output";
|
||||
}
|
||||
}
|
||||
|
||||
|
115
langtools/test/tools/javac/diags/examples.not-yet.txt
Normal file
115
langtools/test/tools/javac/diags/examples.not-yet.txt
Normal file
@ -0,0 +1,115 @@
|
||||
compiler.err.already.annotated # internal compiler error?
|
||||
compiler.err.already.defined.this.unit # seems to be masked by compiler.err.duplicate.class
|
||||
compiler.err.annotation.value.not.allowable.type # cannot happen: precluded by complete type-specific tests
|
||||
compiler.err.assignment.from.super-bound # DEAD
|
||||
compiler.err.assignment.to.extends-bound # DEAD
|
||||
compiler.err.cant.apply.symbol.1
|
||||
compiler.err.cant.read.file # (apt.JavaCompiler?)
|
||||
compiler.err.cant.select.static.class.from.param.type
|
||||
compiler.err.illegal.char.for.encoding
|
||||
compiler.err.internal.error.cant.instantiate # Attr: should not happen
|
||||
compiler.err.io.exception # (javah.JavahTask?)
|
||||
compiler.err.limit.code # Code
|
||||
compiler.err.limit.code.too.large.for.try.stmt # Gen
|
||||
compiler.err.limit.dimensions # Gen
|
||||
compiler.err.limit.locals # Code
|
||||
compiler.err.limit.parameters # Gen
|
||||
compiler.err.limit.pool # Gen,JavaCompiler
|
||||
compiler.err.limit.pool.in.class # UNUSED?
|
||||
compiler.err.limit.stack # Code
|
||||
compiler.err.limit.string # Gen
|
||||
compiler.err.limit.string.overflow # JavaCompiler
|
||||
compiler.err.name.reserved.for.internal.use # UNUSED
|
||||
compiler.err.no.annotation.member
|
||||
compiler.err.no.encl.instance.of.type.in.scope # cannot occur; always followed by assert false;
|
||||
compiler.err.no.match.entry # UNUSED?
|
||||
compiler.err.not.annotation.type # cannot occur given preceding checkType
|
||||
compiler.err.not.within.bounds.explain # UNUSED?
|
||||
compiler.err.prob.found.req.1 # Check: DEAD, in unused method
|
||||
compiler.err.proc.bad.config.file # JavacProcessingEnvironment
|
||||
compiler.err.proc.cant.access # completion failure
|
||||
compiler.err.proc.cant.create.loader # security exception from service loader
|
||||
compiler.err.proc.no.service # JavacProcessingEnvironment: no service loader available
|
||||
compiler.err.proc.processor.bad.option.name # cannot happen? masked by javac.err.invalid.A.key
|
||||
compiler.err.proc.processor.constructor.error
|
||||
compiler.err.proc.service.problem # JavacProcessingEnvironment: catch Throwable from service loader
|
||||
compiler.err.signature.doesnt.match.intf # UNUSED
|
||||
compiler.err.signature.doesnt.match.supertype # UNUSED
|
||||
compiler.err.source.cant.overwrite.input.file
|
||||
compiler.err.stack.sim.error
|
||||
compiler.err.type.var.more.than.once # UNUSED
|
||||
compiler.err.type.var.more.than.once.in.result # UNUSED
|
||||
compiler.err.undetermined.type
|
||||
compiler.err.unexpected.type
|
||||
compiler.err.unknown.enum.constant # in bad class file
|
||||
compiler.err.unsupported.cross.fp.lit # Scanner: host system dependent
|
||||
compiler.misc.arg.length.mismatch
|
||||
compiler.misc.assignment.from.super-bound
|
||||
compiler.misc.assignment.to.extends-bound
|
||||
compiler.misc.bad.class.file.header # bad class file
|
||||
compiler.misc.bad.class.signature # bad class file
|
||||
compiler.misc.bad.const.pool.tag # bad class file
|
||||
compiler.misc.bad.const.pool.tag.at # bad class file
|
||||
compiler.misc.bad.enclosing.method # bad class file
|
||||
compiler.misc.bad.runtime.invisible.param.annotations # bad class file
|
||||
compiler.misc.bad.signature # bad class file
|
||||
compiler.misc.bad.type.annotation.value
|
||||
compiler.misc.base.membership # UNUSED
|
||||
compiler.misc.ccf.found.later.version
|
||||
compiler.misc.ccf.unrecognized.attribute
|
||||
compiler.misc.class.file.not.found # ClassReader
|
||||
compiler.misc.class.file.wrong.class
|
||||
compiler.misc.fatal.err.cant.locate.ctor # Resolve, from Lower
|
||||
compiler.misc.fatal.err.cant.locate.field # Resolve, from Lower
|
||||
compiler.misc.fatal.err.cant.locate.meth # Resolve, from Lower
|
||||
compiler.misc.file.does.not.contain.package
|
||||
compiler.misc.illegal.start.of.class.file
|
||||
compiler.misc.kindname.annotation
|
||||
compiler.misc.kindname.enum
|
||||
compiler.misc.kindname.package
|
||||
compiler.misc.kindname.static
|
||||
compiler.misc.kindname.type.variable
|
||||
compiler.misc.kindname.type.variable.bound
|
||||
compiler.misc.kindname.value
|
||||
compiler.misc.no.conforming.assignment.exists
|
||||
compiler.misc.non.denotable.type
|
||||
compiler.misc.no.unique.minimal.instance.exists
|
||||
compiler.misc.resume.abort # prompt for a response
|
||||
compiler.misc.source.unavailable # DiagnosticSource
|
||||
compiler.misc.token.bad-symbol
|
||||
compiler.misc.token.character
|
||||
compiler.misc.token.double
|
||||
compiler.misc.token.end-of-input
|
||||
compiler.misc.token.float
|
||||
compiler.misc.token.integer
|
||||
compiler.misc.token.long-integer
|
||||
compiler.misc.token.string
|
||||
compiler.misc.type.captureof
|
||||
compiler.misc.type.captureof.1
|
||||
compiler.misc.type.none
|
||||
compiler.misc.type.req.exact
|
||||
compiler.misc.type.variable.has.undetermined.type
|
||||
compiler.misc.unable.to.access.file # ClassFile
|
||||
compiler.misc.undecl.type.var # ClassReader
|
||||
compiler.misc.undetermined.type
|
||||
compiler.misc.unicode.str.not.supported # ClassReader
|
||||
compiler.misc.verbose.retro # UNUSED
|
||||
compiler.misc.verbose.retro.with # UNUSED
|
||||
compiler.misc.verbose.retro.with.list # UNUSED
|
||||
compiler.misc.version.not.available # JavaCompiler; implies build error
|
||||
compiler.misc.where.description.captured
|
||||
compiler.misc.where.description.intersection.1
|
||||
compiler.misc.where.typevar.1
|
||||
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.illegal.char.for.encoding
|
||||
compiler.warn.invalid.archive.file
|
||||
compiler.warn.override.bridge
|
||||
compiler.warn.position.overflow # CRTable: caused by files with long lines >= 1024 chars
|
||||
compiler.warn.proc.file.create.last.round # See CR 6966604
|
||||
compiler.warn.proc.type.already.exists # JavacFiler: just mentioned in TODO
|
||||
compiler.warn.unchecked.assign # DEAD, replaced by compiler.misc.unchecked.assign
|
||||
compiler.warn.unchecked.cast.to.type # DEAD, replaced by compiler.misc.unchecked.cast.to.type
|
||||
compiler.warn.unexpected.archive.file # Paths: zip file with unknown extn
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.abstract.cant.be.accessed.directly
|
||||
|
||||
abstract class Base {
|
||||
abstract void m();
|
||||
}
|
||||
|
||||
class AbstractCantBeAccessed extends Base {
|
||||
void m() {
|
||||
super.m();
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* 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.abstract.cant.be.instantiated
|
||||
|
||||
class AbstractCantBeInstantiated {
|
||||
abstract class C { }
|
||||
|
||||
void m() {
|
||||
new C();
|
||||
}
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.abstract.meth.cant.have.body
|
||||
|
||||
abstract class AbstractMethodCantHaveBody {
|
||||
abstract void m() { }
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* 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.already.defined
|
||||
|
||||
class X {
|
||||
int i;
|
||||
int i;
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* 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.already.defined.single.import
|
||||
|
||||
import java.awt.List;
|
||||
import java.util.List;
|
||||
|
||||
class AlreadyDefinedImport { }
|
@ -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.err.already.defined.static.single.import
|
||||
|
||||
import static p.E1.A;
|
||||
import static p.E2.A;
|
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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 enum E1 { A, B, C}
|
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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 enum E2 { A, B, C }
|
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* 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.annotation.type.not.applicable
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Target(ElementType.METHOD)
|
||||
@interface Anno { }
|
||||
|
||||
|
||||
@Anno()
|
||||
class AnnoNotApplicable { }
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.annotation.not.valid.for.type
|
||||
|
||||
@interface Anno {
|
||||
int value();
|
||||
}
|
||||
|
||||
@Anno(@Deprecated)
|
||||
class AnnoNotValueForType { }
|
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* 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.annotation.value.must.be.annotation
|
||||
|
||||
@interface Anno1 {
|
||||
String value();
|
||||
}
|
||||
|
||||
@interface Anno2 {
|
||||
Anno1 value();
|
||||
}
|
||||
|
||||
@Anno2("3")
|
||||
class AnnoValueMustBeAnnotation { }
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.annotation.value.must.be.class.literal
|
||||
|
||||
@interface Anno {
|
||||
Class value();
|
||||
}
|
||||
|
||||
@Anno(Class.forName("java.lang.Object"))
|
||||
class AnnoValueMustBeClassLiteral { }
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.warn.proc.annotations.without.processors
|
||||
// options: -Xlint:processing -processor AnnoProc -proc:only
|
||||
|
||||
@interface Anno { }
|
||||
|
||||
@Anno
|
||||
class AnnosWithoutProcessors { }
|
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import java.util.*;
|
||||
import javax.annotation.processing.*;
|
||||
import javax.lang.model.*;
|
||||
import javax.lang.model.element.*;
|
||||
|
||||
@SupportedAnnotationTypes("NotAnno")
|
||||
public class AnnoProc extends AbstractProcessor {
|
||||
public boolean process(Set<? extends TypeElement> elems, RoundEnvironment renv) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public SourceVersion getSupportedSourceVersion() {
|
||||
return SourceVersion.latest();
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.annotation.missing.default.value
|
||||
|
||||
@interface Anno {
|
||||
String value();
|
||||
}
|
||||
|
||||
@Anno
|
||||
class AnnotationMissingValue { }
|
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* 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.annotation.value.must.be.name.value
|
||||
|
||||
@interface Anno {
|
||||
String name() default "anon";
|
||||
String address() default "here";
|
||||
}
|
||||
|
||||
@Anno(name == "fred", address = "there")
|
||||
class X { }
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.annotations.not.supported.in.source
|
||||
// options: -source 1.4
|
||||
|
||||
@Deprecated
|
||||
class AnnotationsNotSupported { }
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.anon.class.impl.intf.no.args
|
||||
|
||||
class AnonClassInterfaceNoArgs {
|
||||
Runnable r = new Runnable(3) {
|
||||
public void run() { }
|
||||
};
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.anon.class.impl.intf.no.qual.for.new
|
||||
|
||||
class AnonClassImplInterfaceNoQualForNew {
|
||||
interface Intf {}
|
||||
AnonClassImplInterfaceNoQualForNew x;
|
||||
|
||||
Object o = x.new Intf() { };
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.anon.class.impl.intf.no.typeargs
|
||||
|
||||
class AnonClassInterfaceNoArgs {
|
||||
Runnable r = new<Integer> Runnable() {
|
||||
public void run() { }
|
||||
};
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* 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.misc.anonymous.class
|
||||
// key: compiler.warn.missing.SVUID
|
||||
// options: -Xlint:serial
|
||||
// run: simple
|
||||
|
||||
class AnonymousClass {
|
||||
Exception m() {
|
||||
return new Exception() { };
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* 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.array.and.varargs
|
||||
|
||||
class ArrayAndVarags {
|
||||
void m(int[] array) { }
|
||||
void m(int... args) { }
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.array.dimension.missing
|
||||
|
||||
class ArrayDimMissing {
|
||||
int[] array = new int[];
|
||||
}
|
29
langtools/test/tools/javac/diags/examples/ArrayRequired.java
Normal file
29
langtools/test/tools/javac/diags/examples/ArrayRequired.java
Normal file
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* 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.array.req.but.found
|
||||
|
||||
class X {
|
||||
int i;
|
||||
int j = i[0];
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* 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.assert.as.identifier
|
||||
// options: -source 1.3
|
||||
|
||||
class AssertAsIdentifier {
|
||||
int assert;
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.assert.as.identifier
|
||||
|
||||
class AssertAsIdentifier {
|
||||
int assert;
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.attribute.value.must.be.constant
|
||||
|
||||
@interface Anno {
|
||||
String value();
|
||||
}
|
||||
|
||||
@Anno(System.getProperty("user.dir"))
|
||||
class AttrMustBeConstant { }
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.misc.bad.source.file.header
|
||||
// key: compiler.misc.file.doesnt.contain.class
|
||||
// key: compiler.err.cant.access
|
||||
|
||||
class BadSourceFileHeader {
|
||||
p.A a;
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (c) 2008, 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. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package q;
|
||||
|
||||
class A { }
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.break.outside.switch.loop
|
||||
|
||||
class BreakOutsideSwitchLoop {
|
||||
void m() {
|
||||
break;
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.call.must.be.first.stmt.in.ctor
|
||||
|
||||
class CallMustBeFirst {
|
||||
CallMustBeFirst() {
|
||||
int i = 0;
|
||||
super();
|
||||
}
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.cannot.create.array.with.type.arguments
|
||||
|
||||
class X {
|
||||
Object[] array = new<Integer> Object[3];
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.cant.apply.diamond
|
||||
// key: compiler.misc.diamond
|
||||
|
||||
class CantApplyDiamond<T extends Number> {
|
||||
CantApplyDiamond(T t) { }
|
||||
<U> CantApplyDiamond(T t, U u) { }
|
||||
|
||||
void m() {
|
||||
CantApplyDiamond<?> x = new CantApplyDiamond<>("");
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* 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.cant.assign.val.to.final.var
|
||||
|
||||
class CantAssignToFinal {
|
||||
final int i = 0;
|
||||
|
||||
void m() {
|
||||
i = 3;
|
||||
}
|
||||
}
|
30
langtools/test/tools/javac/diags/examples/CantDeref.java
Normal file
30
langtools/test/tools/javac/diags/examples/CantDeref.java
Normal file
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.cant.deref
|
||||
|
||||
class X {
|
||||
int m(int i) {
|
||||
return i.x;
|
||||
}
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.cant.extend.intf.annotation
|
||||
|
||||
@interface Anno { }
|
||||
|
||||
@interface CantExtendIntfAnno extends Anno { }
|
33
langtools/test/tools/javac/diags/examples/CantImplement.java
Normal file
33
langtools/test/tools/javac/diags/examples/CantImplement.java
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* 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.misc.cant.implement
|
||||
// key: compiler.err.override.weaker.access
|
||||
|
||||
interface Interface {
|
||||
void m();
|
||||
}
|
||||
|
||||
class CantImplement implements Interface {
|
||||
void m() { }
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.cant.inherit.diff.arg
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class CantInheritDiffArg extends ArrayList<String> implements List<Integer> { }
|
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* 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.cant.ref.before.ctor.called
|
||||
|
||||
class Base {
|
||||
Base(int i) { }
|
||||
}
|
||||
|
||||
class CantRefBeforeConstr extends Base {
|
||||
int i;
|
||||
|
||||
CantRefBeforeConstr() {
|
||||
super(i);
|
||||
}
|
||||
}
|
31
langtools/test/tools/javac/diags/examples/CantResolve.java
Normal file
31
langtools/test/tools/javac/diags/examples/CantResolve.java
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.cant.resolve
|
||||
|
||||
class CantResolve<T extends Object & java.io.Serializable> {
|
||||
T t;
|
||||
void m() {
|
||||
Object o = t.v;
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* 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.cant.resolve.args
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class CantResolveArgs {
|
||||
void m() {
|
||||
new Runnable() {
|
||||
{ unknown(); }
|
||||
public void run() { }
|
||||
};
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.cant.resolve.args.params
|
||||
|
||||
class CantResolveArgsParams<T extends Object & java.io.Serializable> {
|
||||
T t;
|
||||
void m() {
|
||||
t.<Integer,Double>m2(1, "");
|
||||
}
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.cant.resolve.location
|
||||
|
||||
class CantResolveLocation {
|
||||
Unknown y;
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.cant.resolve.location.args
|
||||
|
||||
class X {
|
||||
void m() {
|
||||
unknown(1);
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* 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.cant.resolve.location.args.params
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class X {
|
||||
void m() {
|
||||
Object o = List.<String>unknown();
|
||||
}
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.cant.ret.val.from.meth.decl.void
|
||||
|
||||
class CantReturnValueForVoid {
|
||||
void m() {
|
||||
return 3;
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* 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.catch.without.try
|
||||
// key: compiler.err.expected
|
||||
// key: compiler.err.not.stmt
|
||||
|
||||
class CatchWithoutTry {
|
||||
void m() {
|
||||
catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}
|
33
langtools/test/tools/javac/diags/examples/ClashesWith.java
Normal file
33
langtools/test/tools/javac/diags/examples/ClashesWith.java
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* 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.misc.clashes.with
|
||||
// key: compiler.err.override.incompatible.ret
|
||||
|
||||
interface Base {
|
||||
int m();
|
||||
}
|
||||
|
||||
interface ClashesWith extends Base {
|
||||
String m();
|
||||
}
|
@ -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.err.class.cant.write
|
||||
// run: jsr199 -filemanager cantWrite:.*/ClassCantWrite.class
|
||||
|
||||
class ClassCantWrite { }
|
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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.class.public.should.be.in.file
|
||||
|
||||
public class C { }
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.concrete.inheritance.conflict
|
||||
|
||||
class Base<T> {
|
||||
void m(T t) { }
|
||||
void m(String s) { }
|
||||
}
|
||||
|
||||
class ConcreteInheritanceConflict extends Base<String> { }
|
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* 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.const.expr.req
|
||||
|
||||
class ConstExprRequired {
|
||||
int i = 3;
|
||||
|
||||
String m(int arg) {
|
||||
switch (arg) {
|
||||
case 0: return "zero";
|
||||
case 1: return "one";
|
||||
case i: return "i";
|
||||
}
|
||||
}
|
||||
}
|
31
langtools/test/tools/javac/diags/examples/ConstantSVUID.java
Normal file
31
langtools/test/tools/javac/diags/examples/ConstantSVUID.java
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.constant.SVUID
|
||||
// options: -Xlint:serial
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
class ConstantSVUID implements Serializable {
|
||||
private static final long serialVersionUID = Integer.parseInt("0");
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.cont.outside.loop
|
||||
|
||||
class ContinueOutsideLoop {
|
||||
void m() {
|
||||
continue;
|
||||
}
|
||||
}
|
30
langtools/test/tools/javac/diags/examples/CountError.java
Normal file
30
langtools/test/tools/javac/diags/examples/CountError.java
Normal file
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.misc.count.error
|
||||
// key: compiler.err.unreported.exception.need.to.catch.or.throw
|
||||
// run: backdoor
|
||||
|
||||
class CountError {
|
||||
void m() { throw new Exception(); }
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.misc.count.error.plural
|
||||
// key: compiler.err.unreported.exception.need.to.catch.or.throw
|
||||
// run: backdoor
|
||||
|
||||
class CountErrorPlural {
|
||||
void m1() { throw new Exception(); }
|
||||
void m2() { throw new Exception(); }
|
||||
}
|
35
langtools/test/tools/javac/diags/examples/CountWarn.java
Normal file
35
langtools/test/tools/javac/diags/examples/CountWarn.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* 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.misc.count.warn
|
||||
// key: compiler.warn.warning
|
||||
// key: compiler.warn.prob.found.req
|
||||
// key: compiler.misc.unchecked.assign
|
||||
// options: -Xlint:unchecked
|
||||
// run: backdoor
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class CountWarn {
|
||||
List<String> list = new ArrayList();
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* 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.misc.count.warn.plural
|
||||
// key: compiler.warn.warning
|
||||
// key: compiler.warn.prob.found.req
|
||||
// key: compiler.misc.unchecked.assign
|
||||
// options: -Xlint:unchecked
|
||||
// run: backdoor
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class CountWarn {
|
||||
List<String> list1 = new ArrayList();
|
||||
List<String> list2 = new ArrayList();
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.cyclic.annotation.element
|
||||
|
||||
@interface X {
|
||||
X value();
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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.cyclic.inheritance
|
||||
|
||||
class CyclicInheritance extends CyclicInheritance { }
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.default.allowed.in.intf.annotation.member
|
||||
|
||||
interface DefaultAllowedInIntfAnnotationMember {
|
||||
String value() default "";
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* 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.note.deprecated.filename
|
||||
// key: compiler.note.deprecated.recompile
|
||||
|
||||
class DeprecatedFilename {
|
||||
DeprecatedClass d;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
class DeprecatedClass { }
|
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* 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.note.deprecated.filename.additional
|
||||
// key: compiler.warn.has.been.deprecated
|
||||
// options: -Xlint:deprecation -Xmaxwarns 1
|
||||
|
||||
class DeprecatedFilename {
|
||||
DeprecatedClass d;
|
||||
}
|
||||
|
||||
class DeprecatedFilenameAdditional {
|
||||
DeprecatedClass d;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
class DeprecatedClass { }
|
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
@Deprecated
|
||||
class DeprecatedClass { }
|
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
class DeprecatedFileName {
|
||||
DeprecatedClass d;
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* 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.note.deprecated.plural
|
||||
// key: compiler.note.deprecated.recompile
|
||||
|
||||
class DeprecatedPlural {
|
||||
DeprecatedClass d;
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
@Deprecated
|
||||
class DeprecatedClass { }
|
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
class DeprecatedFileName {
|
||||
DeprecatedClass d;
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
class DeprecatedPlural {
|
||||
DeprecatedClass d;
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.note.deprecated.plural.additional
|
||||
// key: compiler.warn.has.been.deprecated
|
||||
// options: -Xlint:deprecation -Xmaxwarns 1
|
||||
|
||||
class DeprecatedPluralAdditional {
|
||||
DeprecatedClass d;
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.misc.diamond.invalid.arg
|
||||
// key: compiler.misc.diamond
|
||||
// key: compiler.err.cant.apply.diamond.1
|
||||
|
||||
class DiamondInvalidArg {
|
||||
static class Foo<X extends Number & Comparable<Number>> { }
|
||||
Foo<?> foo = new Foo<>();
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* 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.misc.diamond.invalid.args
|
||||
// key: compiler.misc.diamond
|
||||
// key: compiler.err.cant.apply.diamond.1
|
||||
|
||||
class DiamondInvalidArgs {
|
||||
static class Foo<X extends Number & Comparable<Number>,
|
||||
Y extends Number & Comparable<Number>> { }
|
||||
Foo<?,?> foo = new Foo<>();
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* 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.diamond.not.supported.in.source
|
||||
// options: -source 6
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class DiamondNotSupported {
|
||||
void m() {
|
||||
List<String> list = new ArrayList<>();
|
||||
}
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.warn.dir.path.element.not.found
|
||||
// options: -Xlint:path -extdirs DoesNotExist
|
||||
// run: simple
|
||||
|
||||
class DirPathElementNotFound { }
|
31
langtools/test/tools/javac/diags/examples/DivZero.java
Normal file
31
langtools/test/tools/javac/diags/examples/DivZero.java
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.div.zero
|
||||
// options: -Xlint:divzero
|
||||
|
||||
class DivZero {
|
||||
int m(int a) {
|
||||
return a / 0 ;
|
||||
}
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.does.not.override.abstract
|
||||
|
||||
abstract class Base {
|
||||
abstract void m();
|
||||
}
|
||||
|
||||
class DoesNotOverride extends Base { }
|
26
langtools/test/tools/javac/diags/examples/DoesntExist.java
Normal file
26
langtools/test/tools/javac/diags/examples/DoesntExist.java
Normal file
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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.doesnt.exist
|
||||
|
||||
import DoesntExist.*;
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.dot.class.expected
|
||||
|
||||
class DotClassExpected {
|
||||
int f = int[] + 3;
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.duplicate.annotation
|
||||
|
||||
@interface Anno { }
|
||||
|
||||
@Anno
|
||||
@Anno
|
||||
class DuplicateAnnotation { }
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.duplicate.annotation.member.value
|
||||
|
||||
@interface Anno {
|
||||
int value();
|
||||
}
|
||||
|
||||
@Anno(value=1, value=2)
|
||||
class DuplicateAnnotationMemberValue { }
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.duplicate.case.label
|
||||
|
||||
class DuplicateCaseLabel {
|
||||
String m(int arg) {
|
||||
switch (arg) {
|
||||
case 0: return "zero";
|
||||
case 1: return "one";
|
||||
case 1: return "one";
|
||||
}
|
||||
}
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.duplicate.class
|
||||
|
||||
class DuplicateClass { }
|
||||
|
||||
class DuplicateClass { }
|
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* 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.duplicate.default.label
|
||||
|
||||
class DuplicateCaseLabel {
|
||||
String m(int arg) {
|
||||
switch (arg) {
|
||||
case 0: return "zero";
|
||||
case 1: return "one";
|
||||
default: return "??";
|
||||
default: return "??";
|
||||
}
|
||||
}
|
||||
}
|
31
langtools/test/tools/javac/diags/examples/ElseWithoutIf.java
Normal file
31
langtools/test/tools/javac/diags/examples/ElseWithoutIf.java
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.else.without.if
|
||||
|
||||
class ElseWithoutIf {
|
||||
void m() {
|
||||
else {
|
||||
}
|
||||
}
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.empty.bytecode.ident
|
||||
|
||||
class EmptyBytecodeIdent {
|
||||
int #"" = 3;
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.char.lit
|
||||
// key: compiler.err.unclosed.char.lit
|
||||
// key: compiler.err.expected
|
||||
// key: compiler.err.premature.eof
|
||||
|
||||
class X {
|
||||
char c = '';
|
||||
}
|
31
langtools/test/tools/javac/diags/examples/EmptyIf.java
Normal file
31
langtools/test/tools/javac/diags/examples/EmptyIf.java
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.empty.if
|
||||
// options: -Xlint:empty
|
||||
|
||||
class EmptyIf {
|
||||
void m(int a, int b) {
|
||||
if (a == b) ;
|
||||
}
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.encl.class.required
|
||||
|
||||
class Base {
|
||||
class Nested { }
|
||||
}
|
||||
|
||||
class EnclClassRequired extends Base.Nested { }
|
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* 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.enum.annotation.must.be.enum.constant
|
||||
|
||||
enum E { A, B, C }
|
||||
|
||||
@interface Anno {
|
||||
E value();
|
||||
}
|
||||
|
||||
@Anno(E.valueOf("A"))
|
||||
class EnumAnnoValueMustBeEnumConstant { }
|
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* 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.enum.as.identifier
|
||||
// options: -source 1.3
|
||||
|
||||
class EnumAsIdentifier {
|
||||
int enum;
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.enum.as.identifier
|
||||
|
||||
class EnumAsIdentifier2 {
|
||||
int enum;
|
||||
}
|
@ -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.
|
||||
*/
|
||||
|
||||
// key: compiler.err.enum.cant.be.instantiated
|
||||
|
||||
class EnumCantBeInstantiated {
|
||||
enum E { A, B, C }
|
||||
|
||||
E e = new E("a");
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user