diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-05-08 16:34:03 +0200 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-05-08 16:34:03 +0200 |
commit | de97de5a5fa3b278f3e76f22721a1aff79f65337 (patch) | |
tree | 6debbfec4e1f5377f942be37914f0709c9a9a4c3 /src | |
parent | 10424c6c8e4310ceffea929115e27cf658773d85 (diff) | |
download | dotty-de97de5a5fa3b278f3e76f22721a1aff79f65337.tar.gz dotty-de97de5a5fa3b278f3e76f22721a1aff79f65337.tar.bz2 dotty-de97de5a5fa3b278f3e76f22721a1aff79f65337.zip |
Add a postcondition to constructors.
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/transform/Constructors.scala | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/transform/Constructors.scala b/src/dotty/tools/dotc/transform/Constructors.scala index 8aae3af5b..fa60ad277 100644 --- a/src/dotty/tools/dotc/transform/Constructors.scala +++ b/src/dotty/tools/dotc/transform/Constructors.scala @@ -32,6 +32,17 @@ class Constructors extends MiniPhaseTransform with SymTransformer { thisTransfor override def phaseName: String = "constructors" override def runsAfter: Set[Class[_ <: Phase]] = Set(classOf[Erasure]) + + /** All initializers should be moved into constructor + */ + override def checkPostCondition(tree: tpd.Tree)(implicit ctx: Context): Unit = { + tree match { + case t: ValDef if ((t.rhs ne EmptyTree) && !(t.symbol is Flags.Lazy) && t.symbol.owner.isClass) => + assert(false, i"$t initializers should be moved to constructors") + case _ => + } + } + /** Symbols that are owned by either <local dummy> or a class field move into the * primary constructor. */ |