diff options
Diffstat (limited to 'tests/run/inline/inlines_1.scala')
-rw-r--r-- | tests/run/inline/inlines_1.scala | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/run/inline/inlines_1.scala b/tests/run/inline/inlines_1.scala new file mode 100644 index 000000000..24f1c78fe --- /dev/null +++ b/tests/run/inline/inlines_1.scala @@ -0,0 +1,41 @@ +package p +import collection.mutable + +object inlines { + + final val monitored = false + + inline def f(x: Int): Int = x * x + + val hits = new mutable.HashMap[String, Int] { + override def default(key: String): Int = 0 + } + + def record(fn: String, n: Int = 1) = { + if (monitored) { + val name = if (fn.startsWith("member-")) "member" else fn + hits(name) += n + } + } + + @volatile private var stack: List[String] = Nil + + inline def track[T](fn: String)(op: => T) = + if (monitored) { + stack = fn :: stack + record(fn) + try op + finally stack = stack.tail + } else op + + class Outer { + def f = "Outer.f" + class Inner { + val msg = " Inner" + inline def m = msg + inline def g = f + inline def h = f ++ m + } + val inner = new Inner + } +} |