aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-04-15 21:15:05 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-04-16 11:09:59 +0200
commit62ac97d16a9231b71de84a50b3c0d32f554b34e4 (patch)
treeb29ebf5d32c3b1e7f35671f92d380385078a699d /src/dotty/tools/backend/jvm/DottyBackendInterface.scala
parent2b307b4551ea3cb5827ee6db2e0c08f5852b4770 (diff)
downloaddotty-62ac97d16a9231b71de84a50b3c0d32f554b34e4.tar.gz
dotty-62ac97d16a9231b71de84a50b3c0d32f554b34e4.tar.bz2
dotty-62ac97d16a9231b71de84a50b3c0d32f554b34e4.zip
Refactor BackendInterface.Select: desuggar only once.
Diffstat (limited to 'src/dotty/tools/backend/jvm/DottyBackendInterface.scala')
-rw-r--r--src/dotty/tools/backend/jvm/DottyBackendInterface.scala30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/dotty/tools/backend/jvm/DottyBackendInterface.scala b/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
index bdba2935e..a1137896b 100644
--- a/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
+++ b/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
@@ -858,18 +858,28 @@ class DottyBackendInterface()(implicit ctx: Context) extends BackendInterface{
object Select extends SelectDeconstructor {
- override def isEmpty: Boolean = field match {
- case t: tpd.Select => false
- case t: tpd.Ident => desugarIdent(t).isEmpty
- case _ => true
- }
+ var desugared: tpd.Select = null
+
+ override def isEmpty: Boolean =
+ desugared eq null
+
+ def _1: Tree = desugared.qualifier
- def _1: Tree = field match {
- case t: tpd.Select => t.qualifier
- case t: tpd.Ident => desugarIdent(t).get
+ def _2: Name = desugared.name
+
+ override def unapply(s: Select): this.type = {
+ s match {
+ case t: Select => desugared = t
+ case t: Ident =>
+ desugarIdent(t) match {
+ case Some(t) => desugared = t
+ case None => desugared = null
+ }
+ case _ => desugared = null
+ }
+
+ this
}
- def _2: Name = field.name
-
}
object Apply extends ApplyDeconstructor {