diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-04-15 21:15:05 +0200 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-04-16 11:09:59 +0200 |
commit | 62ac97d16a9231b71de84a50b3c0d32f554b34e4 (patch) | |
tree | b29ebf5d32c3b1e7f35671f92d380385078a699d /src/dotty | |
parent | 2b307b4551ea3cb5827ee6db2e0c08f5852b4770 (diff) | |
download | dotty-62ac97d16a9231b71de84a50b3c0d32f554b34e4.tar.gz dotty-62ac97d16a9231b71de84a50b3c0d32f554b34e4.tar.bz2 dotty-62ac97d16a9231b71de84a50b3c0d32f554b34e4.zip |
Refactor BackendInterface.Select: desuggar only once.
Diffstat (limited to 'src/dotty')
-rw-r--r-- | src/dotty/tools/backend/jvm/DottyBackendInterface.scala | 30 |
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 { |