35 import com.sun.tools.classfile.Attribute; |
35 import com.sun.tools.classfile.Attribute; |
36 import com.sun.tools.classfile.ClassFile; |
36 import com.sun.tools.classfile.ClassFile; |
37 import com.sun.tools.classfile.Code_attribute; |
37 import com.sun.tools.classfile.Code_attribute; |
38 import com.sun.tools.classfile.ConstantPool.*; |
38 import com.sun.tools.classfile.ConstantPool.*; |
39 import com.sun.tools.classfile.Method; |
39 import com.sun.tools.classfile.Method; |
|
40 import com.sun.tools.javac.api.JavacTool; |
40 import com.sun.tools.javac.util.List; |
41 import com.sun.tools.javac.util.List; |
41 |
42 |
42 import java.io.File; |
43 import java.io.File; |
43 import java.net.URI; |
44 import java.net.URI; |
44 import java.util.Arrays; |
45 import java.util.Arrays; |
45 import java.util.Locale; |
46 import java.util.Locale; |
46 import javax.tools.Diagnostic; |
47 import javax.tools.Diagnostic; |
47 import javax.tools.JavaCompiler; |
48 import javax.tools.JavaCompiler; |
48 import javax.tools.JavaFileObject; |
49 import javax.tools.JavaFileObject; |
49 import javax.tools.SimpleJavaFileObject; |
50 import javax.tools.SimpleJavaFileObject; |
|
51 import javax.tools.StandardJavaFileManager; |
50 import javax.tools.ToolProvider; |
52 import javax.tools.ToolProvider; |
51 |
53 |
52 public class T6199075 { |
54 public class T6199075 { |
53 |
55 |
54 int checkCount = 0; |
56 int checkCount = 0; |
155 |
157 |
156 System.out.println("Total checks made: " + checkCount); |
158 System.out.println("Total checks made: " + checkCount); |
157 System.out.println("Bytecode checks made: " + bytecodeCheckCount); |
159 System.out.println("Bytecode checks made: " + bytecodeCheckCount); |
158 } |
160 } |
159 |
161 |
|
162 // Create a single file manager and reuse it for each compile to save time. |
|
163 StandardJavaFileManager fm = JavacTool.create().getStandardFileManager(null, null, null); |
|
164 |
160 void compileAndCheck(VarargsMethod m1, VarargsMethod m2, TypeKind actual, ArgumentsArity argsArity) throws Exception { |
165 void compileAndCheck(VarargsMethod m1, VarargsMethod m2, TypeKind actual, ArgumentsArity argsArity) throws Exception { |
161 final JavaCompiler tool = ToolProvider.getSystemJavaCompiler(); |
166 final JavaCompiler tool = ToolProvider.getSystemJavaCompiler(); |
162 JavaSource source = new JavaSource(m1, m2, actual, argsArity); |
167 JavaSource source = new JavaSource(m1, m2, actual, argsArity); |
163 ErrorChecker ec = new ErrorChecker(); |
168 ErrorChecker ec = new ErrorChecker(); |
164 JavacTask ct = (JavacTask)tool.getTask(null, null, ec, |
169 JavacTask ct = (JavacTask)tool.getTask(null, fm, ec, |
165 null, null, Arrays.asList(source)); |
170 null, null, Arrays.asList(source)); |
166 ct.generate(); |
171 ct.generate(); |
167 check(source, ec, m1, m2, actual, argsArity); |
172 check(source, ec, m1, m2, actual, argsArity); |
168 } |
173 } |
169 |
174 |