Compute imports that allow definitions from previous requests to be visible in a new request.
Compute imports that allow definitions from previous requests to be visible in a new request. Returns three pieces of related code:
2. A code fragment that should go after the code of the new request.
3. An access path which can be traversed to access any bindings inside code wrapped by #1 and #2 .
The argument is a set of Names that need to be imported.
Limitations: This method is not as precise as it could be. (1) It does not process wildcard imports to see what exactly they import. (2) If it imports any names from a request, it imports all of them, which is not really necessary. (3) It imports multiple same-named implicits, but only the last one imported is actually usable.
Here is where we:
Here is where we:
1) Read some source code, and put it in the "read" object. 2) Evaluate the read object, and put the result in the "eval" object. 3) Create a String for human consumption, and put it in the "print" object.
Read! Eval! Print! Some of that not yet centralized here.
One line of code submitted by the user for interpretation
One line of code submitted by the user for interpretation
Temporarily be quiet
Temporarily be quiet
Bind a specified name to a specified value.
Bind a specified name to a specified value. The name may later be used by expressions passed to interpret.
the variable name to bind
the type of the variable, as a string
the object value to bind to it
an indication of whether the binding succeeded
This instance is no longer needed, so release any resources it is using.
This instance is no longer needed, so release any resources it is using. The reporter's output gets flushed.
Compile an nsc SourceFile.
Compile an nsc SourceFile. Returns true if there are no compilation errors, or false otherwise.
Compile a string.
Compile a string. Returns true if there are no compilation errors, or false otherwise.
Tuples of (source, imported symbols) in the order they were imported.
Tuples of (source, imported symbols) in the order they were imported.
Interpret one line of input.
Interpret one line of input. All feedback, including parse errors and evaluation results, are printed via the supplied compiler's reporter. Values defined are available for future interpreted strings.
The return value is whether the line was interpreter successfully, e.g. that there were no parse errors.
interpreter settings
interpreter settings
Symbols whose contents are language-defined to be imported.
Symbols whose contents are language-defined to be imported.
Returns the name of the most recent interpreter result.
Returns the name of the most recent interpreter result. Mostly this exists so you can conveniently invoke methods on the previous result.
Instantiate a compiler.
Instantiate a compiler. Overridable.
Parent classloader.
Parent classloader. Overridable.
Parse a line into and return parsing result (error, incomplete or success with list of trees)
Parse a line into and return parsing result (error, incomplete or success with list of trees)
Reset this interpreter, forgetting all user-specified requests.
Reset this interpreter, forgetting all user-specified requests.
Types which have been wildcard imported, such as: val x = "abc" ; import x._ // type java.lang.String import java.lang.String._ // object java.lang.String
Types which have been wildcard imported, such as: val x = "abc" ; import x._ // type java.lang.String import java.lang.String._ // object java.lang.String
Used by tab completion.
XXX right now this gets import x._ and import java.lang.String._, but doesn't figure out import String._. There's a lot of ad hoc scope twiddling which should be swept away in favor of digging into the compiler scopes.
It's a bit of a shotgun approach, but for now we will gain in robustness.
It's a bit of a shotgun approach, but for now we will gain in robustness. Try a symbol-producing operation at phase typer, and if that is NoSymbol, try again at phase flatten. I'll be able to lose this and run only from exitingTyper as soon as I figure out exactly where a flat name is sneaking in when calculating imports.
(Since version 2.11.0) Use replOutput.dir instead