dotty.tools.repl
Type members
Classlikes
An ambiguous prefix that matches multiple commands
An ambiguous prefix that matches multiple commands
A phase that collects user defined top level imports.
A phase that collects user defined top level imports.
These imports must be collected as typed trees and therefore after Typer.
A command is on the format:
A command is on the format:
:commandName <optional arguments...>
The Command
trait denotes these commands
A command that is used to display the documentation associated with the given expression.
A command that is used to display the documentation associated with the given expression.
- Companion:
- object
:help
shows the different commands implemented by the Dotty repl
:help
shows the different commands implemented by the Dotty repl
:imports
lists the imports that have been explicitly imported during the
session
:imports
lists the imports that have been explicitly imported during the
session
:load <path>
interprets a scala file as if entered line-by-line into
the REPL
:load <path>
interprets a scala file as if entered line-by-line into
the REPL
- Companion:
- object
Parsed result is simply a newline
Parsed result is simply a newline
An error free parsing resulting in a list of untyped trees
An error free parsing resulting in a list of untyped trees
This subclass of Compiler
is adapted for use in the REPL.
This subclass of Compiler
is adapted for use in the REPL.
- compiles parsed expression in the current REPL state:
- adds the appropriate imports in scope
- wraps expressions into a dummy object
- provides utility to query the type of an expression
- provides utility to query the documentation of an expression
Main REPL instance, orchestrating input, compilation and presentation
Main REPL instance, orchestrating input, compilation and presentation
Reset the session to the initial state from when the repl program was started
Reset the session to the initial state from when the repl program was started
- Companion:
- object
A JSR 223 (Scripting API) compatible wrapper around the REPL for improved interoperability with software that supports it.
A JSR 223 (Scripting API) compatible wrapper around the REPL for improved interoperability with software that supports it.
It works by instantiating a new script engine through the script engine manager. The script engine provides a eval method to evaluate scripts in string form. Example use:
val m = new javax.script.ScriptEngineManager() val e = m.getEngineByName("scala") println(e.eval("42"))
- Companion:
- object
ctrl-c
obtained from input string
ctrl-c
obtained from input string
The state of the REPL contains necessary bindings instead of having to have mutation
The state of the REPL contains necessary bindings instead of having to have mutation
The compiler in the REPL needs to do some wrapping in order to compile
valid code. This wrapping occurs when a single MemberDef
that cannot be
top-level needs to be compiled. In order to do this, we need some unique
identifier for each of these wrappers. That identifier is objectIndex
.
Free expressions such as 1 + 1
needs to have an assignment in order to be
of use. These expressions are therefore given a identifier on the format
resX
where X
starts at 0 and each new expression that needs an
identifier is given the increment of the old identifier. This identifier is
valIndex
.
- Value parameters:
- context
the latest compiler context
- imports
a map from object index to the list of user defined imports
- objectIndex
the index of the next wrapper
- valIndex
the index of next value binding for free expressions
A parsing result containing syntax errors
A parsing result containing syntax errors
To find out the type of an expression you may simply do:
To find out the type of an expression you may simply do:
scala> :type (1 * 54).toString
String
- Companion:
- object
An unknown command that will not be handled by the REPL
An unknown command that will not be handled by the REPL
Contains the different data and type structures used to model results in the REPL
Contains the different data and type structures used to model results in the REPL