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"/>
|
datafile="${build.coverage.dir}/cobertura.ser"/>
|
||||||
</target>
|
</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.
|
**** 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