37 |
37 |
38 import com.sun.tools.javac.api.JavacTaskImpl; |
38 import com.sun.tools.javac.api.JavacTaskImpl; |
39 import com.sun.tools.javac.parser.*; |
39 import com.sun.tools.javac.parser.*; |
40 import com.sun.tools.javac.parser.Tokens.Token; |
40 import com.sun.tools.javac.parser.Tokens.Token; |
41 import com.sun.tools.javac.util.*; |
41 import com.sun.tools.javac.util.*; |
|
42 |
42 import java.io.*; |
43 import java.io.*; |
43 import java.net.*; |
44 import java.net.*; |
44 import java.nio.*; |
45 import java.nio.*; |
45 import java.nio.charset.Charset; |
46 import java.nio.charset.Charset; |
46 import java.util.Arrays; |
47 import java.util.Arrays; |
|
48 |
47 import javax.lang.model.element.Element; |
49 import javax.lang.model.element.Element; |
48 import javax.lang.model.element.TypeElement; |
50 import javax.lang.model.element.TypeElement; |
49 import javax.lang.model.type.DeclaredType; |
51 import javax.lang.model.type.DeclaredType; |
50 import javax.lang.model.type.TypeMirror; |
52 import javax.lang.model.type.TypeMirror; |
|
53 import javax.lang.model.util.ElementFilter; |
51 import javax.lang.model.util.Elements; |
54 import javax.lang.model.util.Elements; |
52 import javax.lang.model.util.Types; |
55 import javax.lang.model.util.Types; |
53 import javax.tools.*; |
56 import javax.tools.*; |
54 |
57 |
55 import static javax.tools.StandardLocation.CLASS_PATH; |
58 import static javax.tools.StandardLocation.CLASS_PATH; |
68 |
71 |
69 TestJavacTaskScanner(File file) { |
72 TestJavacTaskScanner(File file) { |
70 final Iterable<? extends JavaFileObject> compilationUnits = |
73 final Iterable<? extends JavaFileObject> compilationUnits = |
71 fm.getJavaFileObjects(new File[] {file}); |
74 fm.getJavaFileObjects(new File[] {file}); |
72 StandardJavaFileManager fm = getLocalFileManager(tool, null, null); |
75 StandardJavaFileManager fm = getLocalFileManager(tool, null, null); |
73 task = (JavacTaskImpl)tool.getTask(null, fm, null, null, null, compilationUnits); |
76 java.util.List<String> options = Arrays.asList("-XaddExports:" |
|
77 + "jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED," |
|
78 + "jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED," |
|
79 + "jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED," |
|
80 + "jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED"); |
|
81 task = (JavacTaskImpl)tool.getTask(null, fm, null, options, null, compilationUnits); |
74 task.getContext().put(ScannerFactory.scannerFactoryKey, |
82 task.getContext().put(ScannerFactory.scannerFactoryKey, |
75 new MyScanner.Factory(task.getContext(), this)); |
83 new MyScanner.Factory(task.getContext(), this)); |
76 elements = task.getElements(); |
84 elements = task.getElements(); |
77 types = task.getTypes(); |
85 types = task.getTypes(); |
78 } |
86 } |
79 |
87 |
80 public void run() { |
88 public void run() { |
81 Iterable<? extends TypeElement> toplevels; |
89 Iterable<? extends TypeElement> toplevels; |
82 toplevels = task.enter(task.parse()); |
90 toplevels = ElementFilter.typesIn(task.enter(task.parse())); |
83 for (TypeElement clazz : toplevels) { |
91 for (TypeElement clazz : toplevels) { |
84 System.out.format("Testing %s:%n%n", clazz.getSimpleName()); |
92 System.out.format("Testing %s:%n%n", clazz.getSimpleName()); |
85 testParseType(clazz); |
93 testParseType(clazz); |
86 testGetAllMembers(clazz); |
94 testGetAllMembers(clazz); |
87 System.out.println(); |
95 System.out.println(); |