sys::Obj compiler::Compiler
Compiler manages the top level process of the compiler pipeline. There are a couple different "pipelines" used to accomplish various twists on compiling Fantom code (from memory, files, etc). The pipelines are implemented as discrete CompilerSteps. As the steps are executed, the Compiler instance itself stores the state as we move from files -> ast -> resolved ast -> code.
Error reporting is managed via the Compiler.errors list. If the compiler encounters problems it accumulates the errors as CompileExceptions in this list, then raises the first exception to the caller. All errors go thru the CompilerSupport.err() methods for logging. To log an error and continue we simply call err(). To fail fast, we code something like: throw err(). Or at the end of a step we may call bombIfErr() which throws the first exception if any errors have accumulated.
virtual Void backend()
Execute back-end compiler pipeline
Str? cjs
Str? cjsSourceMap
ClosureExpr[]? closures
virtual CompilerOutput compile()
Compile fan source code from the configured CompilerInput into a fan pod and return the resulting CompilerOutput.
CDepend[] depends
CompilerErr[] errs
Str? esm
FPod? fpod
virtual Void frontend()
Execute front-end compiler pipeline
CompilerInput input
Bool isSys := false
Str? js
File[]? jsFiles
Obj? jsPod
File[]? jsPropsFiles
Str? jsSourceMap
LocaleLiteralExpr[] localeDefs
Str? localeProps
CompilerLog log
new make(CompilerInput input)
Construct with reasonable defaults
CNamespace? ns
CompilerOutput? output
PodDef? pod
File[]? resFiles
File[]? srcFiles
Str? tsDecl
TypeDef[]? types
CompilerErr[] warns
compiler 1.0.82∙26-Jun-2025 Thu 13:18:36 EDT