diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2016-04-18 21:28:04 +0200 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2016-06-07 14:18:27 +0200 |
commit | 4ce8ab06470db959aed3527f013a261bc4c3c9a0 (patch) | |
tree | 80fed807d4e19f4dd0090b78cc2e2df5c3f3b12b /src | |
parent | db6a07d445ab1e31888a779b70d41ffda129bb66 (diff) | |
download | dotty-4ce8ab06470db959aed3527f013a261bc4c3c9a0.tar.gz dotty-4ce8ab06470db959aed3527f013a261bc4c3c9a0.tar.bz2 dotty-4ce8ab06470db959aed3527f013a261bc4c3c9a0.zip |
Allow creating static initialisers.
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/core/Names.scala | 1 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/TreeChecker.scala | 5 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/core/Names.scala b/src/dotty/tools/dotc/core/Names.scala index 223d95045..11f0b55a8 100644 --- a/src/dotty/tools/dotc/core/Names.scala +++ b/src/dotty/tools/dotc/core/Names.scala @@ -335,6 +335,7 @@ object Names { // can't move CONSTRUCTOR/EMPTY_PACKAGE to `nme` because of bootstrap failures in `encode`. val CONSTRUCTOR = termName("<init>") + val STATIC_CONSTRUCTOR = termName("<clinit>") val EMPTY_PACKAGE = termName("<empty>") val dontEncode = Set(CONSTRUCTOR, EMPTY_PACKAGE) diff --git a/src/dotty/tools/dotc/transform/TreeChecker.scala b/src/dotty/tools/dotc/transform/TreeChecker.scala index 0dce0fd36..ce160d7b0 100644 --- a/src/dotty/tools/dotc/transform/TreeChecker.scala +++ b/src/dotty/tools/dotc/transform/TreeChecker.scala @@ -26,6 +26,9 @@ import collection.mutable import ProtoTypes._ import config.Printers import java.lang.AssertionError + +import dotty.tools.dotc.core.Names + import scala.util.control.NonFatal /** Run by -Ycheck option after a given phase, this class retypes all syntax trees @@ -382,7 +385,7 @@ class TreeChecker extends Phase with SymTransformer { override def typedDefDef(ddef: untpd.DefDef, sym: Symbol)(implicit ctx: Context) = withDefinedSyms(ddef.tparams) { withDefinedSymss(ddef.vparamss) { - if (!sym.isClassConstructor) assert(isValidJVMMethodName(sym.name), s"${sym.fullName} name is invalid on jvm") + if (!sym.isClassConstructor && !(sym.name eq Names.STATIC_CONSTRUCTOR)) assert(isValidJVMMethodName(sym.name), s"${sym.fullName} name is invalid on jvm") val tpdTree = super.typedDefDef(ddef, sym) assert(isMethodType(sym.info), i"wrong type, expect a method type for ${sym.fullName}, but found: ${sym.info}") tpdTree |