Used to capture the names in scope after every execution, reporting them
to the output
function.
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 the typer
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
Takes source code and, with the help of a compiler and preprocessor,
evaluates it and returns a Result[(output: String, imports: String)]
where output
is what gets printed and imports
are any imports that
need to get prepended to subsequent commands.
Represents a single "frame" of the sess.save
/sess.load
stack/tree.
Represents a single "frame" of the sess.save
/sess.load
stack/tree.
Exposes imports
and classpath
as readable but only writable
in particular ways: imports
can only be updated via mergeImports
,
while classpath
can only be added to.
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.
Converts REPL-style snippets into full-fledged Scala source files, ready to feed into the compiler.
Converts REPL-style snippets into full-fledged Scala source files, ready to feed into the compiler. Each source-string is turned into three things:
Nice wrapper for the presentation compiler.
Classloader used to implement the jar-downloading command-evaluating logic in Ammonite.
Classloader used to implement the jar-downloading command-evaluating logic in Ammonite.
http://stackoverflow.com/questions/3544614/how-is-the-control-flow-to-findclass-of
Loads the jars that make up the classpath of the scala-js-fiddle compiler and re-shapes it into the correct structure to satisfy scala-compile and scalajs-tools
What actually lets us compile and execute code in the Ammonite REPL; deals with the Scala compiler, preprocessing the strings, JVM classloaders, etc.