summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2012-09-21 01:50:43 -0700
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2012-09-21 01:50:43 -0700
commit4adfcfe6ffc0d850568b5d606aa7fc91b4deca52 (patch)
tree1fd7ab7a83f123871611811fb76ae9fe47c84ca9
parente515d2403db3fe6ead35a5d741f802cc959cac9d (diff)
parent676d895b7827f988b95a23c5bf7d40719fa438fe (diff)
downloadscala-4adfcfe6ffc0d850568b5d606aa7fc91b4deca52.tar.gz
scala-4adfcfe6ffc0d850568b5d606aa7fc91b4deca52.tar.bz2
scala-4adfcfe6ffc0d850568b5d606aa7fc91b4deca52.zip
Merge pull request #1367 from retronym/ticket/6381
SI-6381 Honour -Yrangepos in the REPL
-rw-r--r--src/compiler/scala/tools/nsc/interpreter/IMain.scala5
-rw-r--r--test/files/run/t6381.check17
-rw-r--r--test/files/run/t6381.scala13
3 files changed, 34 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/interpreter/IMain.scala b/src/compiler/scala/tools/nsc/interpreter/IMain.scala
index 790a1ac8d4..9a22c15a12 100644
--- a/src/compiler/scala/tools/nsc/interpreter/IMain.scala
+++ b/src/compiler/scala/tools/nsc/interpreter/IMain.scala
@@ -262,7 +262,10 @@ class IMain(initialSettings: Settings, protected val out: JPrintWriter) extends
protected def newCompiler(settings: Settings, reporter: Reporter): ReplGlobal = {
settings.outputDirs setSingleOutput virtualDirectory
settings.exposeEmptyPackage.value = true
- new Global(settings, reporter) with ReplGlobal
+ if (settings.Yrangepos.value)
+ new Global(settings, reporter) with ReplGlobal with interactive.RangePositions
+ else
+ new Global(settings, reporter) with ReplGlobal
}
/** Parent classloader. Overridable. */
diff --git a/test/files/run/t6381.check b/test/files/run/t6381.check
new file mode 100644
index 0000000000..b51cfd0398
--- /dev/null
+++ b/test/files/run/t6381.check
@@ -0,0 +1,17 @@
+Type in expressions to have them evaluated.
+Type :help for more information.
+
+scala> import language.experimental.macros
+import language.experimental.macros
+
+scala> def pos_impl(c: reflect.macros.Context): c.Expr[String] =
+ c.literal(c.enclosingPosition.getClass.toString)
+pos_impl: (c: scala.reflect.macros.Context)c.Expr[String]
+
+scala> def pos = macro pos_impl
+pos: String
+
+scala> pos
+res0: String = class scala.reflect.internal.util.RangePosition
+
+scala>
diff --git a/test/files/run/t6381.scala b/test/files/run/t6381.scala
new file mode 100644
index 0000000000..859ec3cb30
--- /dev/null
+++ b/test/files/run/t6381.scala
@@ -0,0 +1,13 @@
+import scala.tools.partest.ReplTest
+
+object Test extends ReplTest {
+ def code = """
+ |import language.experimental.macros
+ |def pos_impl(c: reflect.macros.Context): c.Expr[String] =
+ | c.literal(c.enclosingPosition.getClass.toString)
+ |def pos = macro pos_impl
+ |pos
+ |""".stripMargin.trim
+
+ override def extraSettings: String = "-Yrangepos"
+}