36 import javax.tools.JavaFileObject; |
36 import javax.tools.JavaFileObject; |
37 import javax.tools.StandardJavaFileManager; |
37 import javax.tools.StandardJavaFileManager; |
38 import javax.tools.StandardLocation; |
38 import javax.tools.StandardLocation; |
39 |
39 |
40 import com.sun.tools.javac.code.Symbol.CompletionFailure; |
40 import com.sun.tools.javac.code.Symbol.CompletionFailure; |
41 import com.sun.tools.javac.comp.Annotate; |
|
42 import com.sun.tools.javac.tree.JCTree; |
41 import com.sun.tools.javac.tree.JCTree; |
43 import com.sun.tools.javac.tree.JCTree.JCClassDecl; |
42 import com.sun.tools.javac.tree.JCTree.JCClassDecl; |
44 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; |
43 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; |
45 import com.sun.tools.javac.util.Abort; |
44 import com.sun.tools.javac.util.Abort; |
46 import com.sun.tools.javac.util.Context; |
45 import com.sun.tools.javac.util.Context; |
63 * @author Neal Gafter |
62 * @author Neal Gafter |
64 */ |
63 */ |
65 public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler { |
64 public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler { |
66 DocEnv docenv; |
65 DocEnv docenv; |
67 |
66 |
68 final Context context; |
|
69 final Messager messager; |
67 final Messager messager; |
70 final JavadocClassReader reader; |
68 final JavadocClassReader javadocReader; |
71 final JavadocEnter enter; |
69 final JavadocEnter javadocEnter; |
72 final Annotate annotate; |
|
73 |
70 |
74 /** |
71 /** |
75 * Construct a new JavaCompiler processor, using appropriately |
72 * Construct a new JavaCompiler processor, using appropriately |
76 * extended phases of the underlying compiler. |
73 * extended phases of the underlying compiler. |
77 */ |
74 */ |
78 protected JavadocTool(Context context) { |
75 protected JavadocTool(Context context) { |
79 super(context); |
76 super(context); |
80 this.context = context; |
|
81 messager = Messager.instance0(context); |
77 messager = Messager.instance0(context); |
82 reader = JavadocClassReader.instance0(context); |
78 javadocReader = JavadocClassReader.instance0(context); |
83 enter = JavadocEnter.instance0(context); |
79 javadocEnter = JavadocEnter.instance0(context); |
84 annotate = Annotate.instance(context); |
|
85 } |
80 } |
86 |
81 |
87 /** |
82 /** |
88 * For javadoc, the parser needs to keep comments. Overrides method from JavaCompiler. |
83 * For javadoc, the parser needs to keep comments. Overrides method from JavaCompiler. |
89 */ |
84 */ |
136 docenv.breakiterator = breakiterator; |
131 docenv.breakiterator = breakiterator; |
137 docenv.setLocale(doclocale); |
132 docenv.setLocale(doclocale); |
138 docenv.setEncoding(encoding); |
133 docenv.setEncoding(encoding); |
139 docenv.docClasses = docClasses; |
134 docenv.docClasses = docClasses; |
140 docenv.legacyDoclet = legacyDoclet; |
135 docenv.legacyDoclet = legacyDoclet; |
141 reader.sourceCompleter = docClasses ? null : this; |
136 javadocReader.sourceCompleter = docClasses ? null : this; |
142 |
137 |
143 ListBuffer<String> names = new ListBuffer<String>(); |
138 ListBuffer<String> names = new ListBuffer<String>(); |
144 ListBuffer<JCCompilationUnit> classTrees = new ListBuffer<JCCompilationUnit>(); |
139 ListBuffer<JCCompilationUnit> classTrees = new ListBuffer<JCCompilationUnit>(); |
145 ListBuffer<JCCompilationUnit> packTrees = new ListBuffer<JCCompilationUnit>(); |
140 ListBuffer<JCCompilationUnit> packTrees = new ListBuffer<JCCompilationUnit>(); |
146 |
141 |
154 JCCompilationUnit tree = parse(fo); |
149 JCCompilationUnit tree = parse(fo); |
155 classTrees.append(tree); |
150 classTrees.append(tree); |
156 } else if (isValidPackageName(name)) { |
151 } else if (isValidPackageName(name)) { |
157 names = names.append(name); |
152 names = names.append(name); |
158 } else if (name.endsWith(".java")) { |
153 } else if (name.endsWith(".java")) { |
159 docenv.error(null, "main.file_not_found", name); |
154 docenv.error(null, "main.file_not_found", name); |
160 } else { |
155 } else { |
161 docenv.error(null, "main.illegal_package_name", name); |
156 docenv.error(null, "main.illegal_package_name", name); |
162 } |
157 } |
163 } |
158 } |
164 |
159 |
177 |
172 |
178 if (messager.nerrors() != 0) return null; |
173 if (messager.nerrors() != 0) return null; |
179 |
174 |
180 // Enter symbols for all files |
175 // Enter symbols for all files |
181 docenv.notice("main.Building_tree"); |
176 docenv.notice("main.Building_tree"); |
182 enter.main(classTrees.toList().appendList(packTrees.toList())); |
177 javadocEnter.main(classTrees.toList().appendList(packTrees.toList())); |
183 } |
178 } |
184 } catch (Abort ex) {} |
179 } catch (Abort ex) {} |
185 |
180 |
186 if (messager.nerrors() != 0) |
181 if (messager.nerrors() != 0) |
187 return null; |
182 return null; |