summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorJosh Suereth <Joshua.Suereth@gmail.com>2012-10-31 11:08:21 -0700
committerJosh Suereth <Joshua.Suereth@gmail.com>2012-10-31 11:08:21 -0700
commit8eefac8c25c2b20e2e8d1e7de1882460e90ceeb5 (patch)
treef7c9e39b815bc5d5315a94c3e3bec12852d0945e /src/reflect
parenta188f7e0009874ce6fe818ed135c122fd5e29ad8 (diff)
parent1e1199d8abbd81ab2fa3b9cbab0290d6793e0945 (diff)
downloadscala-8eefac8c25c2b20e2e8d1e7de1882460e90ceeb5.tar.gz
scala-8eefac8c25c2b20e2e8d1e7de1882460e90ceeb5.tar.bz2
scala-8eefac8c25c2b20e2e8d1e7de1882460e90ceeb5.zip
Merge pull request #1548 from paulp/fix-checkinit
Fix for -Xcheckinit failures.
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/internal/Mirrors.scala5
-rw-r--r--src/reflect/scala/reflect/internal/Types.scala2
2 files changed, 6 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/Mirrors.scala b/src/reflect/scala/reflect/internal/Mirrors.scala
index 019cf7f908..d16374476a 100644
--- a/src/reflect/scala/reflect/internal/Mirrors.scala
+++ b/src/reflect/scala/reflect/internal/Mirrors.scala
@@ -20,6 +20,8 @@ trait Mirrors extends api.Mirrors {
trait RootSymbol extends Symbol { def mirror: Mirror }
abstract class RootsBase(rootOwner: Symbol) extends scala.reflect.api.Mirror[Mirrors.this.type] { thisMirror =>
+ private[this] var initialized = false
+ def isMirrorInitialized = initialized
protected[scala] def rootLoader: LazyType
@@ -229,6 +231,7 @@ trait Mirrors extends api.Mirrors {
// }
def init() {
+ if (initialized) return
// Still fiddling with whether it's cleaner to do some of this setup here
// or from constructors. The latter approach tends to invite init order issues.
@@ -240,6 +243,8 @@ trait Mirrors extends api.Mirrors {
RootClass.info.decls enter EmptyPackage
RootClass.info.decls enter RootPackage
+
+ initialized = true
}
}
diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala
index 1d3567b381..3516078ea1 100644
--- a/src/reflect/scala/reflect/internal/Types.scala
+++ b/src/reflect/scala/reflect/internal/Types.scala
@@ -1730,7 +1730,7 @@ trait Types extends api.Types { self: SymbolTable =>
protected def defineBaseClassesOfCompoundType(tpe: CompoundType) {
def define = defineBaseClassesOfCompoundType(tpe, force = false)
- if (isPastTyper || !breakCycles) define
+ if (!breakCycles || isPastTyper) define
else tpe match {
// non-empty parents helpfully excludes all package classes
case tpe @ ClassInfoType(_ :: _, _, clazz) if !clazz.isAnonOrRefinementClass =>