mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-05 13:40:18 +00:00
8015073: c.s.t.javac.api.JavacTool.getTask() - more informative exception
Reviewed-by: jjg
This commit is contained in:
parent
9a6f8e8463
commit
b43acfee98
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -120,7 +120,6 @@ public final class JavacTool implements JavaCompiler {
|
||||
try {
|
||||
ClientCodeWrapper ccw = ClientCodeWrapper.instance(context);
|
||||
|
||||
final String kindMsg = "All compilation units must be of SOURCE kind";
|
||||
if (options != null)
|
||||
for (String option : options)
|
||||
option.getClass(); // null check
|
||||
@ -132,8 +131,11 @@ public final class JavacTool implements JavaCompiler {
|
||||
if (compilationUnits != null) {
|
||||
compilationUnits = ccw.wrapJavaFileObjects(compilationUnits); // implicit null check
|
||||
for (JavaFileObject cu : compilationUnits) {
|
||||
if (cu.getKind() != JavaFileObject.Kind.SOURCE)
|
||||
if (cu.getKind() != JavaFileObject.Kind.SOURCE) {
|
||||
String kindMsg = "Compilation unit is not of SOURCE kind: "
|
||||
+ "\"" + cu.getName() + "\"";
|
||||
throw new IllegalArgumentException(kindMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -23,8 +23,8 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4813736
|
||||
* @summary Provide a basic test of access to the Java Model from javac
|
||||
* @bug 4813736 8015073
|
||||
* @summary Provide a basic test of access to the Java Model from javac, and error messages
|
||||
* @author Peter von der Ah\u00e9
|
||||
* @run main TestJavacTask TestJavacTask.java
|
||||
*/
|
||||
@ -40,21 +40,36 @@ import javax.tools.StandardJavaFileManager;
|
||||
import javax.tools.ToolProvider;
|
||||
|
||||
public class TestJavacTask {
|
||||
|
||||
static JavacTaskImpl getTask(JavaCompiler compiler, File... file) {
|
||||
static final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
|
||||
static JavacTaskImpl getTask(File... file) {
|
||||
StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
|
||||
Iterable<? extends JavaFileObject> files =
|
||||
fm.getJavaFileObjectsFromFiles(Arrays.asList(file));
|
||||
return (JavacTaskImpl)compiler.getTask(null, fm, null, null, null, files);
|
||||
}
|
||||
|
||||
public static void main(String... args) throws IOException {
|
||||
JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
|
||||
static void basicTest(String... args) throws IOException {
|
||||
String srcdir = System.getProperty("test.src");
|
||||
File file = new File(srcdir, args[0]);
|
||||
JavacTaskImpl task = getTask(tool, file);
|
||||
JavacTaskImpl task = getTask(file);
|
||||
for (TypeElement clazz : task.enter(task.parse()))
|
||||
System.out.println(clazz.getSimpleName());
|
||||
}
|
||||
|
||||
static void checkKindError() {
|
||||
final File testFile = new File("Test.java "); // <-note trailing space!
|
||||
try {
|
||||
getTask(testFile);
|
||||
} catch (IllegalArgumentException iae) {
|
||||
if (!iae.getMessage().contains("\"" + testFile.getName() + "\"")) {
|
||||
System.err.println("Got message: " + iae.getMessage());
|
||||
throw new RuntimeException("Error: expected string not found");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String... args) throws IOException {
|
||||
basicTest(args);
|
||||
checkKindError();
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user