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/compiler | |
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/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/Global.scala | 10 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala | 4 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/Global.scala b/src/compiler/scala/tools/nsc/Global.scala index 40a14aec6f..5b5cffa885 100644 --- a/src/compiler/scala/tools/nsc/Global.scala +++ b/src/compiler/scala/tools/nsc/Global.scala @@ -1046,9 +1046,13 @@ class Global(var currentSettings: Settings, var reporter: Reporter) def currentUnit: CompilationUnit = if (currentRun eq null) NoCompilationUnit else currentRun.currentUnit def currentSource: SourceFile = if (currentUnit.exists) currentUnit.source else lastSeenSourceFile + def isGlobalInitialized = ( + definitions.isDefinitionsInitialized + && rootMirror.isMirrorInitialized + ) override def isPastTyper = ( (curRun ne null) - && (currentRun.typerPhase ne null) + && isGlobalInitialized // defense against init order issues && (globalPhase.id > currentRun.typerPhase.id) ) @@ -1525,9 +1529,9 @@ class Global(var currentSettings: Settings, var reporter: Reporter) def compileUnits(units: List[CompilationUnit], fromPhase: Phase) { try compileUnitsInternal(units, fromPhase) catch { case ex: Throwable => - val shown = if (settings.verbose.value) + val shown = if (settings.verbose.value) stackTraceString(ex) - else + else ex.getClass.getName // ex.printStackTrace(Console.out) // DEBUG for fsc, note that error stacktraces do not print in fsc globalError(supplementErrorMessage("uncaught exception during compilation: " + shown)) diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala index 34d46e27fe..f4921e79e5 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala @@ -53,7 +53,9 @@ abstract class GenASM extends SubComponent with BytecodeWriters { override def erasedTypes = true def apply(cls: IClass) = sys.error("no implementation") - val BeanInfoAttr = rootMirror.getRequiredClass("scala.beans.BeanInfo") + // Lazy val; can't have eager vals in Phase constructors which may + // cause cycles before Global has finished initialization. + lazy val BeanInfoAttr = rootMirror.getRequiredClass("scala.beans.BeanInfo") def isJavaEntryPoint(icls: IClass) = { val sym = icls.symbol |