diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2014-05-23 12:26:08 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2014-05-23 12:26:08 +0200 |
commit | fcb3932b32a2133612473e7b061859f97aa562df (patch) | |
tree | 9bcab3f20da1d1a1a83730805eb635979864f0c2 /test/files | |
parent | d079e769b9372daae8d7770c4156f85ea1af6621 (diff) | |
download | scala-fcb3932b32a2133612473e7b061859f97aa562df.tar.gz scala-fcb3932b32a2133612473e7b061859f97aa562df.tar.bz2 scala-fcb3932b32a2133612473e7b061859f97aa562df.zip |
macro args now correctly preserve range positions
Somewhen in the 2.11.0 development cycle we started duplicating macro arguments
for increased robustness. What wasn't taken into account though is that
Tree.duplicate destroys range positions. This commit fixes the problem.
2.10.x is unaffected by this bug, because it doesn't duplicate the args yet.
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/run/macro-rangepos-args.check | 1 | ||||
-rw-r--r-- | test/files/run/macro-rangepos-args.flags | 1 | ||||
-rw-r--r-- | test/files/run/macro-rangepos-args/Macros_1.scala | 10 | ||||
-rw-r--r-- | test/files/run/macro-rangepos-args/Test_2.scala | 4 |
4 files changed, 16 insertions, 0 deletions
diff --git a/test/files/run/macro-rangepos-args.check b/test/files/run/macro-rangepos-args.check new file mode 100644 index 0000000000..d779505c66 --- /dev/null +++ b/test/files/run/macro-rangepos-args.check @@ -0,0 +1 @@ +Line: 3. Width: 5. diff --git a/test/files/run/macro-rangepos-args.flags b/test/files/run/macro-rangepos-args.flags new file mode 100644 index 0000000000..fcf951d907 --- /dev/null +++ b/test/files/run/macro-rangepos-args.flags @@ -0,0 +1 @@ +-Yrangepos
\ No newline at end of file diff --git a/test/files/run/macro-rangepos-args/Macros_1.scala b/test/files/run/macro-rangepos-args/Macros_1.scala new file mode 100644 index 0000000000..97b938613c --- /dev/null +++ b/test/files/run/macro-rangepos-args/Macros_1.scala @@ -0,0 +1,10 @@ +import scala.language.experimental.macros +import scala.reflect.macros.blackbox.Context + +object Macros { + def impl(c: Context)(x: c.Tree): c.Tree = { + import c.universe._ + Literal(Constant(s"Line: ${x.pos.line}. Width: ${x.pos.end - x.pos.start}.")) + } + def pos(x: Any): String = macro impl +} diff --git a/test/files/run/macro-rangepos-args/Test_2.scala b/test/files/run/macro-rangepos-args/Test_2.scala new file mode 100644 index 0000000000..8c770e9010 --- /dev/null +++ b/test/files/run/macro-rangepos-args/Test_2.scala @@ -0,0 +1,4 @@ +object Test extends App { + val x = 2 + println(Macros.pos(x + 2)) +}
\ No newline at end of file |