1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package dotty.tools
package dottydoc
import core._
import core.transform._
import dotc.core.Phases.Phase
import dotc.Compiler
/** Custom Compiler with phases for the documentation tool
*
* The idea here is to structure `dottydoc` around the new infrastructure. As
* such, dottydoc will itself be a compiler. It will, however, produce a format
* that can be used by other tools or web-browsers.
*
* Example:
* 1. Use the existing FrontEnd to typecheck the code being fed to dottydoc,
* wihtout discarding AnyVal interfaces
* 2. Create an AST that is serializable
* 3. Serialize to JS object
*/
class DocCompiler extends Compiler {
override def phases: List[List[Phase]] = List(
List(new DocFrontEnd),
List(new DocImplicitsPhase),
List(new DocASTPhase),
List(DocMiniTransformations(new UsecasePhase,
new DocstringPhase,
new PackageObjectsPhase,
new LinkReturnTypes,
new LinkParamListTypes,
new LinkImplicitlyAddedTypes,
new LinkSuperTypes,
new LinkCompanions,
new AlternateConstructors,
new SortMembers)),
List(new StatisticsPhase)
)
}
|