diff options
author | Josh Suereth <Joshua.Suereth@gmail.com> | 2012-10-31 11:08:21 -0700 |
---|---|---|
committer | Josh Suereth <Joshua.Suereth@gmail.com> | 2012-10-31 11:08:21 -0700 |
commit | 8eefac8c25c2b20e2e8d1e7de1882460e90ceeb5 (patch) | |
tree | f7c9e39b815bc5d5315a94c3e3bec12852d0945e /src/reflect | |
parent | a188f7e0009874ce6fe818ed135c122fd5e29ad8 (diff) | |
parent | 1e1199d8abbd81ab2fa3b9cbab0290d6793e0945 (diff) | |
download | scala-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.scala | 5 | ||||
-rw-r--r-- | src/reflect/scala/reflect/internal/Types.scala | 2 |
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 => |