aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/TreeChecker.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc/transform/TreeChecker.scala')
-rw-r--r--src/dotty/tools/dotc/transform/TreeChecker.scala15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/transform/TreeChecker.scala b/src/dotty/tools/dotc/transform/TreeChecker.scala
index baaadb53f..39f4bb067 100644
--- a/src/dotty/tools/dotc/transform/TreeChecker.scala
+++ b/src/dotty/tools/dotc/transform/TreeChecker.scala
@@ -76,12 +76,23 @@ class TreeChecker {
everDefinedSyms.get(sym) match {
case Some(t) =>
if(t ne tree)
- ctx.warning(i"symbol ${tree.symbol} is defined at least twice in different parts of AST")
+ ctx.warning(i"symbol ${sym} is defined at least twice in different parts of AST")
// should become an error
case None =>
everDefinedSyms(sym) = tree
}
- assert(!nowDefinedSyms.contains(tree.symbol), i"doubly defined symbol: ${tree.symbol}in $tree")
+ assert(!nowDefinedSyms.contains(sym), i"doubly defined symbol: ${sym} in $tree")
+
+ if(ctx.settings.YcheckMods.value) {
+ tree match {
+ case t: MemberDef =>
+ if (t.name ne sym.name) ctx.warning(s"symbol ${sym.fullName} name doesn't correspond to AST: ${t}")
+ if (sym.flags != t.mods.flags) ctx.warning(s"symbol ${sym.fullName} flags ${sym.flags} doesn't match AST definition flags ${t.mods.flags}")
+ // todo: compare trees inside annotations
+ case _ =>
+ }
+ }
+
nowDefinedSyms += tree.symbol
//println(i"defined: ${tree.symbol}")
val res = op