diff options
author | Samuel Gruetter <samuel.gruetter@epfl.ch> | 2014-12-16 16:38:09 +0100 |
---|---|---|
committer | Samuel Gruetter <samuel.gruetter@epfl.ch> | 2014-12-16 16:38:09 +0100 |
commit | 42851ed2675015d42bb341b82a09bd0bef4a8ce4 (patch) | |
tree | 06806b4183cf74a43553e9a8a9acfeff84fdf712 /tests/pending/pos/t8013 | |
parent | 5be609fc4e04e3cca5e1435ee41b8cacac9b0513 (diff) | |
download | dotty-42851ed2675015d42bb341b82a09bd0bef4a8ce4.tar.gz dotty-42851ed2675015d42bb341b82a09bd0bef4a8ce4.tar.bz2 dotty-42851ed2675015d42bb341b82a09bd0bef4a8ce4.zip |
move failing tests from tests/untried/pos to tests/pending/pos
Diffstat (limited to 'tests/pending/pos/t8013')
-rw-r--r-- | tests/pending/pos/t8013/inpervolated_2.scala | 11 | ||||
-rw-r--r-- | tests/pending/pos/t8013/inpervolator_1.scala | 33 |
2 files changed, 44 insertions, 0 deletions
diff --git a/tests/pending/pos/t8013/inpervolated_2.scala b/tests/pending/pos/t8013/inpervolated_2.scala new file mode 100644 index 000000000..90e571b42 --- /dev/null +++ b/tests/pending/pos/t8013/inpervolated_2.scala @@ -0,0 +1,11 @@ +/* + * scalac: -Xfatal-warnings -Xlint + */ +package t8013 + +// unsuspecting user of perverse macro +trait User { + import Perverse.Impervolator + val foo = "bar" + Console println p"Hello, $foo" +} diff --git a/tests/pending/pos/t8013/inpervolator_1.scala b/tests/pending/pos/t8013/inpervolator_1.scala new file mode 100644 index 000000000..612e1d727 --- /dev/null +++ b/tests/pending/pos/t8013/inpervolator_1.scala @@ -0,0 +1,33 @@ + +package t8013 + +// perverse macro to confuse Xlint + +import scala.language.experimental.macros +import scala.reflect.macros.blackbox.Context + +object Perverse { + + implicit class Impervolator(sc: StringContext) { + def p(args: Any*): String = macro pImpl + } + + // turn a nice interpolation into something that looks + // nothing like an interpolation or anything we might + // recognize, but which includes a "$id" in an apply. + def pImpl(c: Context)(args: c.Expr[Any]*): c.Expr[String] = { + import c.universe._ + val macroPos = c.macroApplication.pos + val text = macroPos.source.lineToString(macroPos.line - 1) substring macroPos.column + val tt = Literal(Constant(text)) + val tree = q"t8013.Perverse.pervert($tt)" + c.Expr[String](tree) + } + + // identity doesn't seem very perverse in this context + //def pervert(text: String): String = text + def pervert(text: String): String = { + Console println s"Perverting [$text]" + text + } +} |