aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/TreeChecker.scala
diff options
context:
space:
mode:
authorliu fengyun <liufengyunchina@gmail.com>2016-04-06 13:25:07 +0200
committerliu fengyun <liufengyunchina@gmail.com>2016-04-15 13:22:15 +0200
commit371e8a7bf2db6ba17b5655265fbcde62c32de646 (patch)
treee41f6c9928f6d91e7ca1d85c0dd149864f751be3 /src/dotty/tools/dotc/transform/TreeChecker.scala
parent8af61ab2df46456fb943ce614c4d22b22a297239 (diff)
downloaddotty-371e8a7bf2db6ba17b5655265fbcde62c32de646.tar.gz
dotty-371e8a7bf2db6ba17b5655265fbcde62c32de646.tar.bz2
dotty-371e8a7bf2db6ba17b5655265fbcde62c32de646.zip
Ycheck that all methods have method type
Diffstat (limited to 'src/dotty/tools/dotc/transform/TreeChecker.scala')
-rw-r--r--src/dotty/tools/dotc/transform/TreeChecker.scala11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/TreeChecker.scala b/src/dotty/tools/dotc/transform/TreeChecker.scala
index 39f407f9b..007869e06 100644
--- a/src/dotty/tools/dotc/transform/TreeChecker.scala
+++ b/src/dotty/tools/dotc/transform/TreeChecker.scala
@@ -311,6 +311,13 @@ class TreeChecker extends Phase with SymTransformer {
tree
}
+ /** Check that all methods have MethodicType */
+ def isMethodType(pt: Type)(implicit ctx: Context): Boolean = pt match {
+ case at: AnnotatedType => isMethodType(at.tpe)
+ case _: MethodicType => true // MethodType, ExprType, PolyType
+ case _ => false
+ }
+
override def typedIdent(tree: untpd.Ident, pt: Type)(implicit ctx: Context): Tree = {
assert(tree.isTerm || !ctx.isAfterTyper, tree.show + " at " + ctx.phase)
assert(tree.isType || !needsSelect(tree.tpe), i"bad type ${tree.tpe} for $tree # ${tree.uniqueId}")
@@ -369,7 +376,9 @@ class TreeChecker extends Phase with SymTransformer {
withDefinedSyms(ddef.tparams) {
withDefinedSymss(ddef.vparamss) {
if (!sym.isClassConstructor) assert(isValidJVMMethodName(sym.name), s"${sym.fullName} name is invalid on jvm")
- super.typedDefDef(ddef, sym)
+ 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
}
}