aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/TreeChecker.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-07-13 17:39:46 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-07-13 17:39:46 +0200
commit61c30f8d949a43ad0580ef421c4fe94acc3c340e (patch)
tree038be0c8484b486c100b976e125993822e819047 /src/dotty/tools/dotc/transform/TreeChecker.scala
parent74c2e2326f6a68a889347ef3052d88a586aca84f (diff)
downloaddotty-61c30f8d949a43ad0580ef421c4fe94acc3c340e.tar.gz
dotty-61c30f8d949a43ad0580ef421c4fe94acc3c340e.tar.bz2
dotty-61c30f8d949a43ad0580ef421c4fe94acc3c340e.zip
Relax Ycheck for labels after LabelDefs
LabelDefs reorders labels. As a result of reordering label-def defined inside other label-def could be lifted outside. LabelDefs doesn't update owner chains to represent this. Making treeChecker aware of this.
Diffstat (limited to 'src/dotty/tools/dotc/transform/TreeChecker.scala')
-rw-r--r--src/dotty/tools/dotc/transform/TreeChecker.scala3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/TreeChecker.scala b/src/dotty/tools/dotc/transform/TreeChecker.scala
index 0e69b9d1f..b76f04b58 100644
--- a/src/dotty/tools/dotc/transform/TreeChecker.scala
+++ b/src/dotty/tools/dotc/transform/TreeChecker.scala
@@ -242,7 +242,8 @@ class TreeChecker extends Phase with SymTransformer {
private def checkOwner(tree: untpd.Tree)(implicit ctx: Context): Unit = {
def ownerMatches(symOwner: Symbol, ctxOwner: Symbol): Boolean =
symOwner == ctxOwner ||
- ctxOwner.isWeakOwner && ownerMatches(symOwner, ctxOwner.owner)
+ ctxOwner.isWeakOwner && ownerMatches(symOwner, ctxOwner.owner) ||
+ ctx.phase.labelsReordered && symOwner.isWeakOwner && ownerMatches(symOwner.owner, ctxOwner)
assert(ownerMatches(tree.symbol.owner, ctx.owner),
i"bad owner; ${tree.symbol} has owner ${tree.symbol.owner}, expected was ${ctx.owner}\n" +
i"owner chain = ${tree.symbol.ownersIterator.toList}%, %, ctxOwners = ${ctx.outersIterator.map(_.owner).toList}%, %")