diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2014-01-29 19:06:56 +0300 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2014-02-14 14:19:44 +0100 |
commit | b5c4666be9b53a5d8e8d656a3aa597b3897a37c8 (patch) | |
tree | 69e3bcc2e7da99c28376793c6dea59e9b9d6246e /test/files/neg/t6931/Macros_1.scala | |
parent | 2c05f0139758613fbe26a5c03d60a9da29f2f5e5 (diff) | |
download | scala-b5c4666be9b53a5d8e8d656a3aa597b3897a37c8.tar.gz scala-b5c4666be9b53a5d8e8d656a3aa597b3897a37c8.tar.bz2 scala-b5c4666be9b53a5d8e8d656a3aa597b3897a37c8.zip |
SI-6931 cleans up the position API
I have finally overcome my fear of positions and got to cleaning up its
public interface.
Apparently it isn’t so bad, since there’s a sane core of methods (thanks
to whoever wrote the comments to internal#Position):
1) Checks to distinguish offsets, opaque ranges and transparent ranges
2) Essentials that inclide start, point, end and source
3) Factories that create new positions based on existing ones
It looks like methods from the 3rd group are exactly what we’ve been looking
for in SI-6931, so we have nothing to add in this commit.
Diffstat (limited to 'test/files/neg/t6931/Macros_1.scala')
-rw-r--r-- | test/files/neg/t6931/Macros_1.scala | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/test/files/neg/t6931/Macros_1.scala b/test/files/neg/t6931/Macros_1.scala new file mode 100644 index 0000000000..56da075d1f --- /dev/null +++ b/test/files/neg/t6931/Macros_1.scala @@ -0,0 +1,15 @@ +import scala.language.experimental.macros +import scala.reflect.macros.blackbox.Context + +object Macros { + implicit class Error(ctx: StringContext) { + def err(args: Any*): Unit = macro impl + } + + def impl(c: Context)(args: c.Tree*): c.Tree = { + import c.universe._ + val q"Macros.Error(scala.StringContext.apply($arg)).err()" = c.macroApplication + for (i <- 1 to 3) c.error(arg.pos.withPoint(arg.pos.point + i - 1), i.toString) + q"()" + } +}
\ No newline at end of file |