aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-05-08 16:34:03 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-05-08 16:34:03 +0200
commitde97de5a5fa3b278f3e76f22721a1aff79f65337 (patch)
tree6debbfec4e1f5377f942be37914f0709c9a9a4c3 /src
parent10424c6c8e4310ceffea929115e27cf658773d85 (diff)
downloaddotty-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.scala11
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.
*/