summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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"
+}