aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-03-05 16:53:27 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-03-05 23:08:01 +0200
commitd274f4d4e0601e44524aae842c8581a2c6ecafd7 (patch)
tree57afdc21b0bec0c9f16c6048976d1be42e1d2e0d /src/dotty/tools/backend/jvm/DottyBackendInterface.scala
parentb558d6196bb75217acd466bffd59cd4ee339ba27 (diff)
downloaddotty-d274f4d4e0601e44524aae842c8581a2c6ecafd7.tar.gz
dotty-d274f4d4e0601e44524aae842c8581a2c6ecafd7.tar.bz2
dotty-d274f4d4e0601e44524aae842c8581a2c6ecafd7.zip
Implement handling of synthetic throw method in backend.
Having backend abstracted away from AST helps a lot here.
Diffstat (limited to 'src/dotty/tools/backend/jvm/DottyBackendInterface.scala')
-rw-r--r--src/dotty/tools/backend/jvm/DottyBackendInterface.scala15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/dotty/tools/backend/jvm/DottyBackendInterface.scala b/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
index 44377cab4..111a5f5f5 100644
--- a/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
+++ b/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
@@ -29,8 +29,6 @@ import Decorators._
import tpd._
import StdNames.nme
-case class DummyThrow(expr: tpd.Tree) extends tpd.TermTree
-
class DottyBackendInterface()(implicit ctx: Context) extends BackendInterface{
trait NonExistentTree extends tpd.Tree
type Symbol = Symbols.Symbol
@@ -50,7 +48,7 @@ class DottyBackendInterface()(implicit ctx: Context) extends BackendInterface{
type Ident = tpd.Ident
type If = tpd.If
type ValDef = tpd.ValDef
- type Throw = DummyThrow
+ type Throw = tpd.Apply
type Return = tpd.Return
type Block = tpd.Block
type Typed = tpd.Typed
@@ -715,7 +713,16 @@ class DottyBackendInterface()(implicit ctx: Context) extends BackendInterface{
}
object Throw extends ThrowDeconstructor {
- def get = field.expr
+ def get = field.args.head
+
+ override def unapply(s: Throw): DottyBackendInterface.this.Throw.type = {
+ if (s.fun.symbol eq defn.throwMethod) {
+ field = s
+ } else {
+ field = null
+ }
+ this
+ }
}
object New extends NewDeconstructor {