diff options
author | Guillaume Martres <smarter@ubuntu.com> | 2017-03-13 18:32:09 +0100 |
---|---|---|
committer | Guillaume Martres <smarter@ubuntu.com> | 2017-03-13 18:32:11 +0100 |
commit | 8997bf17e2994a5b5e2edd06835f4cdc543e57ed (patch) | |
tree | 01a61853620bed7c8078755664490eb149db8e98 | |
parent | b3194406d8e1a28690faee12257b53f9dcf49506 (diff) | |
download | dotty-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.scala | 6 | ||||
-rw-r--r-- | compiler/test/dotc/tests.scala | 1 |
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 |