Skip to content

Commit b3ca8e1

Browse files
committed
Merge pull request #724 from dotty-staging/labels-Ycheck
Enable Ycheck after labelDef. Fixes #701
2 parents ed8b3f0 + 7eef035 commit b3ca8e1

File tree

6 files changed

+21
-26
lines changed

6 files changed

+21
-26
lines changed

.travis.yml

Lines changed: 0 additions & 15 deletions
This file was deleted.

project/Build.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ object DottyBuild extends Build {
88

99
val travisMemLimit = List("-Xmx1g", "-Xss2m")
1010

11-
val TRAVIS_BUILD = "dotty.travis.build"
11+
val JENKINS_BUILD = "dotty.jenkins.build"
1212

1313
val agentOptions = List(
1414
// "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"
@@ -104,8 +104,8 @@ object DottyBuild extends Build {
104104
// System.err.println("BOOTPATH: " + fullpath)
105105

106106
val travis_build = // propagate if this is a travis build
107-
if (sys.props.isDefinedAt(TRAVIS_BUILD))
108-
List(s"-D$TRAVIS_BUILD=${sys.props(TRAVIS_BUILD)}") ::: travisMemLimit
107+
if (sys.props.isDefinedAt(JENKINS_BUILD))
108+
List(s"-D$JENKINS_BUILD=${sys.props(JENKINS_BUILD)}") ::: travisMemLimit
109109
else
110110
List()
111111

@@ -156,8 +156,8 @@ object DottyBuild extends Build {
156156
// System.err.println("BOOTPATH: " + fullpath)
157157

158158
val travis_build = // propagate if this is a travis build
159-
if (sys.props.isDefinedAt(TRAVIS_BUILD))
160-
List(s"-D$TRAVIS_BUILD=${sys.props(TRAVIS_BUILD)}")
159+
if (sys.props.isDefinedAt(JENKINS_BUILD))
160+
List(s"-D$JENKINS_BUILD=${sys.props(JENKINS_BUILD)}")
161161
else
162162
List()
163163
val res = agentOptions ::: travis_build ::: fullpath

scripts/common

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ update() {
1414

1515
export LC_ALL=en_US.UTF-8
1616

17-
sbtArgs="-Ddotty.travis.build=yes -Dfile.encoding=UTF-8 -ivy $baseDir/ivy2 -Dsbt.global.base=$HOME/.sbt/0.13 -sbt-dir $HOME/.sbt/0.13"
17+
sbtArgs="-Ddotty.jenkins.build=yes -Dfile.encoding=UTF-8 -ivy $baseDir/ivy2 -Dsbt.global.base=$HOME/.sbt/0.13 -sbt-dir $HOME/.sbt/0.13"

src/dotty/tools/dotc/core/Phases.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package core
33

44
import Periods._
55
import Contexts._
6-
import dotty.tools.backend.jvm.GenBCode
6+
import dotty.tools.backend.jvm.{LabelDefs, GenBCode}
77
import util.DotClass
88
import DenotTransformers._
99
import Denotations._
@@ -296,6 +296,8 @@ object Phases {
296296
private var myFlatClasses = false
297297
private var myRefChecked = false
298298
private var mySymbolicRefs = false
299+
private var myLabelsReordered = false
300+
299301

300302
/** The sequence position of this phase in the given context where 0
301303
* is reserved for NoPhase and the first real phase is at position 1.
@@ -311,6 +313,7 @@ object Phases {
311313
final def flatClasses = myFlatClasses // Phase is after flatten
312314
final def refChecked = myRefChecked // Phase is after RefChecks
313315
final def symbolicRefs = mySymbolicRefs // Phase is after ResolveSuper, newly generated TermRefs should be symbolic
316+
final def labelsReordered = myLabelsReordered // Phase is after LabelDefs, labels are flattened and owner chains don't mirror this
314317

315318
protected[Phases] def init(base: ContextBase, start: Int, end:Int): Unit = {
316319
if (start >= FirstPhaseId)
@@ -321,6 +324,7 @@ object Phases {
321324
myFlatClasses = prev.getClass == classOf[Flatten] || prev.flatClasses
322325
myRefChecked = prev.getClass == classOf[RefChecks] || prev.refChecked
323326
mySymbolicRefs = prev.getClass == classOf[ResolveSuper] || prev.symbolicRefs
327+
myLabelsReordered = prev.getClass == classOf[LabelDefs] || prev.labelsReordered
324328
}
325329

326330
protected[Phases] def init(base: ContextBase, id: Int): Unit = init(base, id, id)

src/dotty/tools/dotc/transform/TreeChecker.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,8 @@ class TreeChecker extends Phase with SymTransformer {
242242
private def checkOwner(tree: untpd.Tree)(implicit ctx: Context): Unit = {
243243
def ownerMatches(symOwner: Symbol, ctxOwner: Symbol): Boolean =
244244
symOwner == ctxOwner ||
245-
ctxOwner.isWeakOwner && ownerMatches(symOwner, ctxOwner.owner)
245+
ctxOwner.isWeakOwner && ownerMatches(symOwner, ctxOwner.owner) ||
246+
ctx.phase.labelsReordered && symOwner.isWeakOwner && ownerMatches(symOwner.owner, ctxOwner)
246247
assert(ownerMatches(tree.symbol.owner, ctx.owner),
247248
i"bad owner; ${tree.symbol} has owner ${tree.symbol.owner}, expected was ${ctx.owner}\n" +
248249
i"owner chain = ${tree.symbol.ownersIterator.toList}%, %, ctxOwners = ${ctx.outersIterator.map(_.owner).toList}%, %")

test/dotc/tests.scala

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import org.junit.experimental.categories._
88

99
class tests extends CompilerTest {
1010

11+
def isRunByJenkins: Boolean = sys.props.isDefinedAt("dotty.jenkins.build")
12+
1113
val noCheckOptions = List(
1214
// "-verbose",
1315
// "-Ylog:frontend",
@@ -20,9 +22,12 @@ class tests extends CompilerTest {
2022

2123
implicit val defaultOptions = noCheckOptions ++ List(
2224
"-Yno-deep-subtypes", "-Yno-double-bindings",
23-
"-Ycheck:tailrec,resolveSuper,mixin,restoreScopes",
24-
"-d", defaultOutputDir
25-
)
25+
"-d", defaultOutputDir) ++ {
26+
if (isRunByJenkins) List("-Ycheck:-Ycheck:tailrec,resolveSuper,mixin,restoreScopes,labelDef") // should be Ycheck:all, but #725
27+
else List("-Ycheck:tailrec,resolveSuper,mixin,restoreScopes,labelDef")
28+
}
29+
30+
2631
val testPickling = List("-Xprint-types", "-Ytest-pickler", "-Ystop-after:pickler")
2732

2833
val twice = List("#runs", "2")

0 commit comments

Comments
 (0)