diff options
author | Denys Shabalin <denys.shabalin@typesafe.com> | 2014-01-22 19:49:21 +0100 |
---|---|---|
committer | Denys Shabalin <denys.shabalin@typesafe.com> | 2014-01-23 13:59:06 +0100 |
commit | adf990ac516d8e04c725a4c7be7c23bdbf922ffa (patch) | |
tree | 33039f07740854ed2b6e5ffd1d3bf8624f040294 /src/reflect/scala/reflect/internal/StdNames.scala | |
parent | 01f9ab52111712a6f4bc677415e9ad7a3bfe41a2 (diff) | |
download | scala-adf990ac516d8e04c725a4c7be7c23bdbf922ffa.tar.gz scala-adf990ac516d8e04c725a4c7be7c23bdbf922ffa.tar.bz2 scala-adf990ac516d8e04c725a4c7be7c23bdbf922ffa.zip |
SI-7275 allow flattening of blocks with ..$
This commit extends current splicing rules to allow flattening of
trees into other trees.
Without such support it is impossible to correctly create vals with
patterns and use it in other location as they could expand into
multiple-statement blocks:
scala> q"val (a, b) = (1, 2)"
res0: reflect.runtime.universe.Tree =
{
<synthetic> <artifact> private[this] val x$1 = scala.Tuple2(1, 2):
@scala.unchecked match {
case scala.Tuple2((a @ _), (b @ _)) => scala.Tuple2(a, b)
};
val a = x$1._1;
val b = x$1._2;
()
}
scala> q"..$res0; println(a + b)"
res1: reflect.runtime.universe.Tree =
{
<synthetic> <artifact> private[this] val x$1 = scala.Tuple2(1, 2):
@scala.unchecked match {
case scala.Tuple2((a @ _), (b @ _)) => scala.Tuple2(a, b)
};
val a = x$1._1;
val b = x$1._2;
println(a.$plus(b))
}
Diffstat (limited to 'src/reflect/scala/reflect/internal/StdNames.scala')
-rw-r--r-- | src/reflect/scala/reflect/internal/StdNames.scala | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/internal/StdNames.scala b/src/reflect/scala/reflect/internal/StdNames.scala index ed3e7dbc4c..0ca74a07c9 100644 --- a/src/reflect/scala/reflect/internal/StdNames.scala +++ b/src/reflect/scala/reflect/internal/StdNames.scala @@ -750,6 +750,7 @@ trait StdNames { val toArray: NameType = "toArray" val toList: NameType = "toList" val toObjectArray : NameType = "toObjectArray" + val toStats: NameType = "toStats" val TopScope: NameType = "TopScope" val toString_ : NameType = "toString" val toTypeConstructor: NameType = "toTypeConstructor" |