提交 113ad306 编写于 作者: K ksrini

8015073: c.s.t.javac.api.JavacTool.getTask() - more informative exception

Reviewed-by: jjg
上级 18179b4a
/*
* 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);
}
}
}
......
/*
* 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();
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册