diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-03-05 16:53:27 +0200 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-03-05 23:08:01 +0200 |
commit | d274f4d4e0601e44524aae842c8581a2c6ecafd7 (patch) | |
tree | 57afdc21b0bec0c9f16c6048976d1be42e1d2e0d /src/dotty/tools/backend | |
parent | b558d6196bb75217acd466bffd59cd4ee339ba27 (diff) | |
download | dotty-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')
-rw-r--r-- | src/dotty/tools/backend/jvm/DottyBackendInterface.scala | 15 |
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 { |