diff --git a/_overviews/repl/overview.md b/_overviews/repl/overview.md index 428cf53bdf..8d8e981b97 100644 --- a/_overviews/repl/overview.md +++ b/_overviews/repl/overview.md @@ -27,6 +27,8 @@ The REPL also provides some command facilities, described below. An alternative REPL is available in [the Ammonite project](https://github.com/lihaoyi/Ammonite), which also provides a richer shell environment. +### Features + Useful REPL features include: - the REPL's IMain is bound to `$intp`. @@ -34,16 +36,38 @@ Useful REPL features include: - use tab for completion. - use `//print` to show typed desugarings. - use `:help` for a list of commands. + - use `:load` to load a file of REPL input. - use `:paste` to enter a class and object as companions. - use `:paste -raw` to disable code wrapping, to define a package. - use `:javap` to inspect class artifacts. - use `-Yrepl-outdir` to inspect class artifacts with external tools. - use `:power` to enter power mode and import compiler components. + - use `:settings` to modify compiler settings; some settings require `:replay`. + - use `:replay` to replay the session with modified settings. Implementation notes: - user code can be wrapped in either an object (so that the code runs during class initialization) or a class (so that the code runs during instance construction). The switch is `-Yrepl-class-based`. + - every line of input is compiled separately. + - dependencies on previous lines are included by automatically generated imports. + - implicit import of `scala.Predef` can be controlled by inputting an explicit import. + +**Example:** + + scala> import Predef.{any2stringadd => _, _} + import Predef.{any2stringadd=>_, _} + + scala> new Object + "a string" + :13: error: value + is not a member of Object + new Object + "a string" + ^ + + scala> import Predef._ + import Predef._ + + scala> new Object + "a string" + res1: String = java.lang.Object@787a0fd6a string ### Power Mode