From 5b6700fa3a6b05545aa9b2c0d0493a07897464a5 Mon Sep 17 00:00:00 2001 From: Eugene Burmako Date: Sat, 15 Feb 2014 14:43:09 +0100 Subject: adds more tests for enclosingOwners Makes sure that it's possible to cover sbt's use cases, and also checks that we can distinguish vals from vars (should anyone ever need that). --- .../macro-enclosingowner-detectvar/Macros_1.scala | 14 +++++++++++++ .../macro-enclosingowner-detectvar/Test_2.scala | 23 ++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 test/files/run/macro-enclosingowner-detectvar/Macros_1.scala create mode 100644 test/files/run/macro-enclosingowner-detectvar/Test_2.scala (limited to 'test/files/run/macro-enclosingowner-detectvar') diff --git a/test/files/run/macro-enclosingowner-detectvar/Macros_1.scala b/test/files/run/macro-enclosingowner-detectvar/Macros_1.scala new file mode 100644 index 0000000000..26ed64d8c3 --- /dev/null +++ b/test/files/run/macro-enclosingowner-detectvar/Macros_1.scala @@ -0,0 +1,14 @@ +import scala.reflect.macros.whitebox._ +import scala.language.experimental.macros + +object Macros { + def impl(c: Context) = { + import c.universe._ + def detectFlags(sym: TermSymbol): String = { + (sym.isVal, sym.isVar, !sym.isVal && !sym.isVar && !sym.isLazy, sym.isLazy).toString + } + q"println(${detectFlags(c.internal.enclosingOwner.asTerm)}); 42" + } + + def foo: Int = macro impl +} \ No newline at end of file diff --git a/test/files/run/macro-enclosingowner-detectvar/Test_2.scala b/test/files/run/macro-enclosingowner-detectvar/Test_2.scala new file mode 100644 index 0000000000..58521d9429 --- /dev/null +++ b/test/files/run/macro-enclosingowner-detectvar/Test_2.scala @@ -0,0 +1,23 @@ +object Test extends App { + val a1 = Macros.foo + val a2 = Predef.identity(Predef.identity(Macros.foo)) + val a3: Int = Macros.foo + val a4: Int = Predef.identity(Predef.identity(Macros.foo)) + + var b1 = Macros.foo + var b2 = Predef.identity(Predef.identity(Macros.foo)) + var b3: Int = Macros.foo + var b4: Int = Predef.identity(Predef.identity(Macros.foo)) + + def c1 = Macros.foo + def c2 = Predef.identity(Predef.identity(Macros.foo)) + def c3: Int = Macros.foo + def c4: Int = Predef.identity(Predef.identity(Macros.foo)) + c1; c2; c3; c4; + + lazy val d1 = Macros.foo + lazy val d2 = Predef.identity(Predef.identity(Macros.foo)) + lazy val d3: Int = Macros.foo + lazy val d4: Int = Predef.identity(Predef.identity(Macros.foo)) + d1; d2; d3; d4 +} \ No newline at end of file -- cgit v1.2.3