# HG changeset patch # User ksrini # Date 1380323156 25200 # Node ID 13bdd49ddaf06d116e2226e3705a0e836485bd70 # Parent 1cba7386cfd916b42ea80ed309d047fc16e0dee7 8015073: c.s.t.javac.api.JavacTool.getTask() - more informative exception Reviewed-by: jjg diff -r 1cba7386cfd9 -r 13bdd49ddaf0 langtools/src/share/classes/com/sun/tools/javac/api/JavacTool.java --- a/langtools/src/share/classes/com/sun/tools/javac/api/JavacTool.java Fri Sep 27 13:06:38 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/javac/api/JavacTool.java Fri Sep 27 16:05:56 2013 -0700 @@ -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 @@ 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 @@ 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); + } } } diff -r 1cba7386cfd9 -r 13bdd49ddaf0 langtools/test/tools/javac/api/TestJavacTask.java --- a/langtools/test/tools/javac/api/TestJavacTask.java Fri Sep 27 13:06:38 2013 -0700 +++ b/langtools/test/tools/javac/api/TestJavacTask.java Fri Sep 27 16:05:56 2013 -0700 @@ -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.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 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(); + } }