aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2017-03-13 18:32:09 +0100
committerGuillaume Martres <smarter@ubuntu.com>2017-03-13 18:32:11 +0100
commit8997bf17e2994a5b5e2edd06835f4cdc543e57ed (patch)
tree01a61853620bed7c8078755664490eb149db8e98
parentb3194406d8e1a28690faee12257b53f9dcf49506 (diff)
downloaddotty-8997bf17e2994a5b5e2edd06835f4cdc543e57ed.tar.gz
dotty-8997bf17e2994a5b5e2edd06835f4cdc543e57ed.tar.bz2
dotty-8997bf17e2994a5b5e2edd06835f4cdc543e57ed.zip
Fix compilation of ParSetLike by itself
Before this commit, ParSetLike compiled fine as part of compileStdLib but crashed when compiled by itself because we tried to force a LazyRef while forcing the same LazyRef. This commit fixes this by being slightly more lazy where it matters.
-rw-r--r--compiler/src/dotty/tools/dotc/typer/Checking.scala6
-rw-r--r--compiler/test/dotc/tests.scala1
2 files changed, 4 insertions, 3 deletions
diff --git a/compiler/src/dotty/tools/dotc/typer/Checking.scala b/compiler/src/dotty/tools/dotc/typer/Checking.scala
index 1ca7eb107..f822f8893 100644
--- a/compiler/src/dotty/tools/dotc/typer/Checking.scala
+++ b/compiler/src/dotty/tools/dotc/typer/Checking.scala
@@ -357,7 +357,7 @@ object Checking {
*/
def checkNoPrivateLeaks(sym: Symbol, pos: Position)(implicit ctx: Context): Type = {
class NotPrivate extends TypeMap {
- var errors: List[String] = Nil
+ var errors: List[() => String] = Nil
def accessBoundary(sym: Symbol): Symbol =
if (sym.is(Private) || !sym.owner.isClass) sym.owner
@@ -384,7 +384,7 @@ object Checking {
var tp1 =
if (isLeaked(tp.symbol)) {
errors =
- em"non-private $sym refers to private ${tp.symbol}\n in its type signature ${sym.info}" :: errors
+ (() => em"non-private $sym refers to private ${tp.symbol}\n in its type signature ${sym.info}") :: errors
tp
}
else mapOver(tp)
@@ -408,7 +408,7 @@ object Checking {
}
val notPrivate = new NotPrivate
val info = notPrivate(sym.info)
- notPrivate.errors.foreach(ctx.errorOrMigrationWarning(_, pos))
+ notPrivate.errors.foreach(error => ctx.errorOrMigrationWarning(error(), pos))
info
}
diff --git a/compiler/test/dotc/tests.scala b/compiler/test/dotc/tests.scala
index 0c4668a89..78a8aefd5 100644
--- a/compiler/test/dotc/tests.scala
+++ b/compiler/test/dotc/tests.scala
@@ -224,6 +224,7 @@ class tests extends CompilerTest {
|../scala-scala/src/library/scala/collection/SeqLike.scala
|../scala-scala/src/library/scala/collection/generic/GenSeqFactory.scala""".stripMargin)
@Test def compileIndexedSeq = compileLine("../scala-scala/src/library/scala/collection/immutable/IndexedSeq.scala")
+ @Test def compileParSetLike = compileLine("../scala-scala/src/library/scala/collection/parallel/mutable/ParSetLike.scala")
@Test def dotty = {
dottyBootedLib