Used to capture the names in scope after every execution, reporting them
to the output
function.
Encapsulates (almost) all the ickiness of Scalac so it doesn't leak into the rest of the codebase.
Encapsulates (almost) all the ickiness of Scalac so it doesn't leak into the rest of the codebase. Makes use of a good amount of mutable state for things like the log-output-forwarder or compiler-plugin-output because These things are hard-coded into Scalac and can't be passed in from run to run.
Turns source-strings into the bytes of classfiles, possibly more than one classfile per source-string (e.g. inner classes, or lambdas). Also lets you query source strings using an in-built presentation compiler
A convenient bundle of all the functionality necessary to interpret Scala code.
A convenient bundle of all the functionality necessary to interpret Scala code. Doesn't attempt to provide any real encapsulation for now.
Responsible for all scala-source-code-munging that happens within the Ammonite REPL.
Responsible for all scala-source-code-munging that happens within the Ammonite REPL.
Performs several tasks:
- Takes top-level Scala expressions and assigns them to res{1, 2, 3, ...}
values so they can be accessed later in the REPL
- Wraps the code snippet with an wrapper object
since Scala doesn't allow
top-level expressions
- Mangles imports from our ammonite.util.ImportData data structure into a source String
- Combines all of these into a complete compilation unit ready to feed into the Scala compiler
Nice wrapper for the presentation compiler.
Used to capture the names in scope after every execution, reporting them to the
output
function. Needs to be a compiler plugin so we can hook in immediately after thetyper