aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2016-04-18 21:29:41 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2016-06-07 14:18:27 +0200
commit27846bb2ba8519decbfe4a152460805e591ec98b (patch)
treecc47f2808d14453dcecc157e1c560024b34e163b /src/dotty/tools/backend/jvm/DottyBackendInterface.scala
parent4ce8ab06470db959aed3527f013a261bc4c3c9a0 (diff)
downloaddotty-27846bb2ba8519decbfe4a152460805e591ec98b.tar.gz
dotty-27846bb2ba8519decbfe4a152460805e591ec98b.tar.bz2
dotty-27846bb2ba8519decbfe4a152460805e591ec98b.zip
MoveStatic: Move static methods & fields into companion class
As a funny side-effect this allows to execute arbitrary code in static initialisers: @static val a: Unit = {println("loaded")}
Diffstat (limited to 'src/dotty/tools/backend/jvm/DottyBackendInterface.scala')
-rw-r--r--src/dotty/tools/backend/jvm/DottyBackendInterface.scala9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/dotty/tools/backend/jvm/DottyBackendInterface.scala b/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
index 002a6bf27..295a419f8 100644
--- a/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
+++ b/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
@@ -12,7 +12,7 @@ import scala.collection.generic.Clearable
import scala.collection.mutable
import scala.reflect.ClassTag
import scala.reflect.internal.util.WeakHashSet
-import scala.reflect.io.{Directory, PlainDirectory, AbstractFile}
+import scala.reflect.io.{AbstractFile, Directory, PlainDirectory}
import scala.tools.asm.{AnnotationVisitor, ClassVisitor, FieldVisitor, MethodVisitor}
import scala.tools.nsc.backend.jvm.{BCodeHelpers, BackendInterface}
import dotty.tools.dotc.core._
@@ -24,13 +24,16 @@ import Symbols._
import Denotations._
import Phases._
import java.lang.AssertionError
-import dotty.tools.dotc.util.{Positions, DotClass}
+
+import dotty.tools.dotc.util.{DotClass, Positions}
import Decorators._
import tpd._
+
import scala.tools.asm
import NameOps._
import StdNames.nme
import NameOps._
+import dotty.tools.dotc.core
class DottyBackendInterface(outputDirectory: AbstractFile)(implicit ctx: Context) extends BackendInterface{
type Symbol = Symbols.Symbol
@@ -633,7 +636,7 @@ class DottyBackendInterface(outputDirectory: AbstractFile)(implicit ctx: Context
toDenot(sym)(shiftedContext).isStatic(shiftedContext)
}
- def isStaticConstructor: Boolean = isStaticMember && isClassConstructor
+ def isStaticConstructor: Boolean = (isStaticMember && isClassConstructor) || (sym.name eq core.Names.STATIC_CONSTRUCTOR)
// navigation