6968063: provide examples of code that generate diagnostics

Reviewed-by: mcimadamore
This commit is contained in:
Jonathan Gibbons 2010-07-22 11:02:54 -07:00
parent 985efdc475
commit 7eb8c115ec
363 changed files with 13449 additions and 0 deletions

View File

@ -322,6 +322,35 @@
datafile="${build.coverage.dir}/cobertura.ser"/>
</target>
<target name="diags-examples" depends="build-javac">
<!-- can override the following on the command line if desired. -->
<property name="diags.examples.out" location="${build.dir}/diag-examples/diags-examples.html"/>
<mkdir dir="${build.dir}/diag-examples/classes"/>
<javac fork="true"
executable="${dist.bin.dir}/javac"
srcdir="test/tools/javac/diags"
destdir="${build.dir}/diag-examples/classes"
includes="Example.java,FileManager.java,HTMLWriter.java,RunExamples.java"
sourcepath=""
classpath="${dist.lib.dir}/javac.jar"
includeAntRuntime="no"
debug="${javac.debug}"
debuglevel="${javac.debuglevel}"/>
<java fork="true"
jvm="${target.java.home}/bin/java"
dir="test/tools/javac/diags"
classpath="${build.dir}/diag-examples/classes;${dist.lib.dir}/javac.jar"
classname="RunExamples">
<arg value="-examples"/>
<arg value="examples"/>
<arg value="-o"/>
<arg file="${diags.examples.out}"/>
<arg value="-showFiles"/>
<arg value="-title"/>
<arg value="Examples of javac diagnostics"/>
</java>
</target>
<!--
**** Debugging/diagnostic targets.

View 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>();
};
}

View 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);
}
};
}
});
}
}
}
}
}

View 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;
}
}

View 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("&lt;"); break;
case '>': out.write("&gt;"); break;
case '&': out.write("&amp;"); break;
default: out.write(c);
}
}
}
else
out.write(text);
}
/**
* Write a basic HTML entity, such as &nbsp; or &#123; .
* @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;
}

View 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.

View 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("&copy;");
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";
}
}

View 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

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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() { }
}

View 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.already.defined
class X {
int i;
int i;
}

View 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.already.defined.single.import
import java.awt.List;
import java.util.List;
class AlreadyDefinedImport { }

View File

@ -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;

View 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.
*/
package p;
public enum E1 { A, B, C}

View 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.
*/
package p;
public enum E2 { A, B, C }

View 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.err.annotation.type.not.applicable
import java.lang.annotation.*;
@Target(ElementType.METHOD)
@interface Anno { }
@Anno()
class AnnoNotApplicable { }

View 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.annotation.not.valid.for.type
@interface Anno {
int value();
}
@Anno(@Deprecated)
class AnnoNotValueForType { }

View 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.err.annotation.value.must.be.annotation
@interface Anno1 {
String value();
}
@interface Anno2 {
Anno1 value();
}
@Anno2("3")
class AnnoValueMustBeAnnotation { }

View 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.annotation.value.must.be.class.literal
@interface Anno {
Class value();
}
@Anno(Class.forName("java.lang.Object"))
class AnnoValueMustBeClassLiteral { }

View 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.warn.proc.annotations.without.processors
// options: -Xlint:processing -processor AnnoProc -proc:only
@interface Anno { }
@Anno
class AnnosWithoutProcessors { }

View File

@ -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();
}
}

View 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.annotation.missing.default.value
@interface Anno {
String value();
}
@Anno
class AnnotationMissingValue { }

View File

@ -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 { }

View File

@ -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 { }

View 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.anon.class.impl.intf.no.args
class AnonClassInterfaceNoArgs {
Runnable r = new Runnable(3) {
public void run() { }
};
}

View 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.anon.class.impl.intf.no.qual.for.new
class AnonClassImplInterfaceNoQualForNew {
interface Intf {}
AnonClassImplInterfaceNoQualForNew x;
Object o = x.new Intf() { };
}

View 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.anon.class.impl.intf.no.typeargs
class AnonClassInterfaceNoArgs {
Runnable r = new<Integer> Runnable() {
public void run() { }
};
}

View 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.anonymous.class
// key: compiler.warn.missing.SVUID
// options: -Xlint:serial
// run: simple
class AnonymousClass {
Exception m() {
return new Exception() { };
}
}

View 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.and.varargs
class ArrayAndVarags {
void m(int[] array) { }
void m(int... args) { }
}

View File

@ -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[];
}

View 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];
}

View 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.warn.assert.as.identifier
// options: -source 1.3
class AssertAsIdentifier {
int assert;
}

View File

@ -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;
}

View 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.attribute.value.must.be.constant
@interface Anno {
String value();
}
@Anno(System.getProperty("user.dir"))
class AttrMustBeConstant { }

View 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.bad.source.file.header
// key: compiler.misc.file.doesnt.contain.class
// key: compiler.err.cant.access
class BadSourceFileHeader {
p.A a;
}

View File

@ -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 { }

View 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.break.outside.switch.loop
class BreakOutsideSwitchLoop {
void m() {
break;
}
}

View 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.call.must.be.first.stmt.in.ctor
class CallMustBeFirst {
CallMustBeFirst() {
int i = 0;
super();
}
}

View File

@ -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];
}

View File

@ -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<>("");
}
}

View File

@ -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;
}
}

View 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;
}
}

View File

@ -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 { }

View 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() { }
}

View File

@ -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> { }

View File

@ -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);
}
}

View 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;
}
}

View 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.err.cant.resolve.args
import java.util.*;
class CantResolveArgs {
void m() {
new Runnable() {
{ unknown(); }
public void run() { }
};
}
}

View 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.args.params
class CantResolveArgsParams<T extends Object & java.io.Serializable> {
T t;
void m() {
t.<Integer,Double>m2(1, "");
}
}

View File

@ -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;
}

View 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.resolve.location.args
class X {
void m() {
unknown(1);
}
}

View File

@ -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();
}
}

View 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.ret.val.from.meth.decl.void
class CantReturnValueForVoid {
void m() {
return 3;
}
}

View 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.err.catch.without.try
// key: compiler.err.expected
// key: compiler.err.not.stmt
class CatchWithoutTry {
void m() {
catch (Exception e) {
}
}
}

View 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();
}

View File

@ -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 { }

View 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.class.public.should.be.in.file
public class C { }

View 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.concrete.inheritance.conflict
class Base<T> {
void m(T t) { }
void m(String s) { }
}
class ConcreteInheritanceConflict extends Base<String> { }

View File

@ -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";
}
}
}

View 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");
}

View 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.cont.outside.loop
class ContinueOutsideLoop {
void m() {
continue;
}
}

View 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(); }
}

View 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.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(); }
}

View 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();
}

View File

@ -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();
}

View File

@ -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();
}

View 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.cyclic.inheritance
class CyclicInheritance extends CyclicInheritance { }

View File

@ -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 "";
}

View File

@ -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 { }

View File

@ -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 { }

View File

@ -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 { }

View 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.
*/
class DeprecatedFileName {
DeprecatedClass d;
}

View 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.note.deprecated.plural
// key: compiler.note.deprecated.recompile
class DeprecatedPlural {
DeprecatedClass d;
}

View File

@ -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 { }

View 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.
*/
class DeprecatedFileName {
DeprecatedClass d;
}

View 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.
*/
class DeprecatedPlural {
DeprecatedClass d;
}

View 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.note.deprecated.plural.additional
// key: compiler.warn.has.been.deprecated
// options: -Xlint:deprecation -Xmaxwarns 1
class DeprecatedPluralAdditional {
DeprecatedClass d;
}

View 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.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<>();
}

View File

@ -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<>();
}

View 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.err.diamond.not.supported.in.source
// options: -source 6
import java.util.*;
class DiamondNotSupported {
void m() {
List<String> list = new ArrayList<>();
}
}

View File

@ -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 { }

View 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 ;
}
}

View 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.does.not.override.abstract
abstract class Base {
abstract void m();
}
class DoesNotOverride extends Base { }

View 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.*;

View File

@ -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;
}

View 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.duplicate.annotation
@interface Anno { }
@Anno
@Anno
class DuplicateAnnotation { }

View 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.duplicate.annotation.member.value
@interface Anno {
int value();
}
@Anno(value=1, value=2)
class DuplicateAnnotationMemberValue { }

View File

@ -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";
}
}
}

View File

@ -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 { }

View 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.err.duplicate.default.label
class DuplicateCaseLabel {
String m(int arg) {
switch (arg) {
case 0: return "zero";
case 1: return "one";
default: return "??";
default: return "??";
}
}
}

View 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 {
}
}
}

View File

@ -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;
}

View 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.empty.char.lit
// key: compiler.err.unclosed.char.lit
// key: compiler.err.expected
// key: compiler.err.premature.eof
class X {
char c = '';
}

View 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) ;
}
}

View 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.encl.class.required
class Base {
class Nested { }
}
class EnclClassRequired extends Base.Nested { }

View 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.err.enum.annotation.must.be.enum.constant
enum E { A, B, C }
@interface Anno {
E value();
}
@Anno(E.valueOf("A"))
class EnumAnnoValueMustBeEnumConstant { }

View 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.warn.enum.as.identifier
// options: -source 1.3
class EnumAsIdentifier {
int enum;
}

View File

@ -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;
}

View 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.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