diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2013-12-19 00:03:24 +0100 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2013-12-19 13:59:09 +0100 |
commit | bce97058c4733f4c7bfac473db6bf378942900b8 (patch) | |
tree | 0b17b36362447bdf8976ab2bc1e8b128587d8e0f /test/files/run | |
parent | b5ef79f2f8bc010220d2920a890352d96ad84b45 (diff) | |
download | scala-bce97058c4733f4c7bfac473db6bf378942900b8.tar.gz scala-bce97058c4733f4c7bfac473db6bf378942900b8.tar.bz2 scala-bce97058c4733f4c7bfac473db6bf378942900b8.zip |
makes boxity of fast track macros configurable
Previously, all built-in macros were assumed to be whitebox, but that’s
actually not the case. Just quasiquote macros have to be whitebox, while
the rest can be blackbox.
This also fixes SI-8091, because blackbox macros are typechecked differently
and therefore the necessary implicit conversion kicks in. If `f”...”` were
to remain a whitebox macro, then due to the changes introduced in commit
https://github.com/scala/scala/commit/a3b33419b02cafb7e2c6fed6dd96151859fc7d77
we would have to explicitly ascribe its expansion as String to achieve the same effect.
After I made reify blackbox, several tests had to be changed, because
we now explicitly ascribe the expansion with `c.Expr[T]`, which changes `toString`.
Also, a number of less obvious corrections had to be applied, because
things like `reify(<constant>).splice` have stopped being optimized away
due to `reify(<constant>)` no longer having a narrow `c.Expr[<constant>.type]`,
making it ineligible for constant folding.
Moreover, this change forced me to adjust our approach to positioning
blackbox wrappings, because after being changed to blacbox and starting using
wrappings, f”...” interpolators used in the compiler started crashing
-Yrangepos builds. Now wrapping Typed nodes are assigned with transparent
positions.
Diffstat (limited to 'test/files/run')
-rw-r--r-- | test/files/run/macro-reify-splice-splice.check | 1 | ||||
-rw-r--r-- | test/files/run/macro-reify-splice-splice.flags | 1 | ||||
-rw-r--r-- | test/files/run/macro-reify-splice-splice/Macros_1.scala | 11 | ||||
-rw-r--r-- | test/files/run/macro-reify-splice-splice/Test_2.scala | 3 | ||||
-rw-r--r-- | test/files/run/macro-typecheck-macrosdisabled.check | 4 | ||||
-rw-r--r-- | test/files/run/macro-typecheck-macrosdisabled2.check | 4 | ||||
-rw-r--r-- | test/files/run/t8091.check | 1 | ||||
-rw-r--r-- | test/files/run/t8091.scala | 4 | ||||
-rw-r--r-- | test/files/run/toolbox_typecheck_macrosdisabled.check | 4 | ||||
-rw-r--r-- | test/files/run/toolbox_typecheck_macrosdisabled2.check | 4 |
10 files changed, 13 insertions, 24 deletions
diff --git a/test/files/run/macro-reify-splice-splice.check b/test/files/run/macro-reify-splice-splice.check deleted file mode 100644 index 3b18e512db..0000000000 --- a/test/files/run/macro-reify-splice-splice.check +++ /dev/null @@ -1 +0,0 @@ -hello world diff --git a/test/files/run/macro-reify-splice-splice.flags b/test/files/run/macro-reify-splice-splice.flags deleted file mode 100644 index cd66464f2f..0000000000 --- a/test/files/run/macro-reify-splice-splice.flags +++ /dev/null @@ -1 +0,0 @@ --language:experimental.macros
\ No newline at end of file diff --git a/test/files/run/macro-reify-splice-splice/Macros_1.scala b/test/files/run/macro-reify-splice-splice/Macros_1.scala deleted file mode 100644 index 691f22ad07..0000000000 --- a/test/files/run/macro-reify-splice-splice/Macros_1.scala +++ /dev/null @@ -1,11 +0,0 @@ -import scala.reflect.macros.{BlackboxContext => Ctx} - -object Macros { - def foo = macro Impls.foo - - object Impls { - def foo(c: Ctx) = c.universe.reify { - { c.universe.reify(c.universe.reify("hello world")) }.splice.splice - } - } -}
\ No newline at end of file diff --git a/test/files/run/macro-reify-splice-splice/Test_2.scala b/test/files/run/macro-reify-splice-splice/Test_2.scala deleted file mode 100644 index f697da6020..0000000000 --- a/test/files/run/macro-reify-splice-splice/Test_2.scala +++ /dev/null @@ -1,3 +0,0 @@ -object Test extends App { - println(Macros.foo) -}
\ No newline at end of file diff --git a/test/files/run/macro-typecheck-macrosdisabled.check b/test/files/run/macro-typecheck-macrosdisabled.check index e0e880ab66..0579a4f4c8 100644 --- a/test/files/run/macro-typecheck-macrosdisabled.check +++ b/test/files/run/macro-typecheck-macrosdisabled.check @@ -1,4 +1,4 @@ -{ +({ val $u: reflect.runtime.universe.type = scala.reflect.runtime.`package`.universe; val $m: $u.Mirror = scala.reflect.runtime.`package`.universe.runtimeMirror(this.getClass().getClassLoader()); $u.Expr.apply[Int(2)]($m, { @@ -28,5 +28,5 @@ }; new $typecreator2() })) -} +}: reflect.runtime.universe.Expr[Int]) ru.reify[Int](2) diff --git a/test/files/run/macro-typecheck-macrosdisabled2.check b/test/files/run/macro-typecheck-macrosdisabled2.check index 347dfec1dc..c6e1c08d5d 100644 --- a/test/files/run/macro-typecheck-macrosdisabled2.check +++ b/test/files/run/macro-typecheck-macrosdisabled2.check @@ -1,4 +1,4 @@ -{ +({ val $u: reflect.runtime.universe.type = scala.reflect.runtime.`package`.universe; val $m: $u.Mirror = scala.reflect.runtime.`package`.universe.runtimeMirror(this.getClass().getClassLoader()); $u.Expr.apply[Array[Int]]($m, { @@ -28,5 +28,5 @@ }; new $typecreator2() })) -} +}: reflect.runtime.universe.Expr[Array[Int]]) ru.reify[Array[Int]](scala.Array.apply(2)) diff --git a/test/files/run/t8091.check b/test/files/run/t8091.check new file mode 100644 index 0000000000..4c4e91774f --- /dev/null +++ b/test/files/run/t8091.check @@ -0,0 +1 @@ +börk börk diff --git a/test/files/run/t8091.scala b/test/files/run/t8091.scala new file mode 100644 index 0000000000..cd412d4c2a --- /dev/null +++ b/test/files/run/t8091.scala @@ -0,0 +1,4 @@ +object Test extends App { + val result = "börk börk" flatMap (ch ⇒ if (ch > 127) f"&#x${ch}%04x;" else "" + ch) + println(result) +}
\ No newline at end of file diff --git a/test/files/run/toolbox_typecheck_macrosdisabled.check b/test/files/run/toolbox_typecheck_macrosdisabled.check index 3de296f1ad..d9e79cdd19 100644 --- a/test/files/run/toolbox_typecheck_macrosdisabled.check +++ b/test/files/run/toolbox_typecheck_macrosdisabled.check @@ -1,4 +1,4 @@ -{ +({ val $u: ru.type = ru; val $m: $u.Mirror = ru.runtimeMirror({ final class $anon extends scala.AnyRef { @@ -37,5 +37,5 @@ }; new $typecreator2() })) -} +}: ru.Expr[Int]) ru.reify[Int](2) diff --git a/test/files/run/toolbox_typecheck_macrosdisabled2.check b/test/files/run/toolbox_typecheck_macrosdisabled2.check index 9810946024..8e554a6c8f 100644 --- a/test/files/run/toolbox_typecheck_macrosdisabled2.check +++ b/test/files/run/toolbox_typecheck_macrosdisabled2.check @@ -1,4 +1,4 @@ -{ +({ val $u: ru.type = ru; val $m: $u.Mirror = ru.runtimeMirror({ final class $anon extends scala.AnyRef { @@ -37,5 +37,5 @@ }; new $typecreator2() })) -} +}: ru.Expr[Array[Int]]) ru.reify[Array[Int]](scala.Array.apply(2)) |