summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-06-21 08:23:17 -0700
committerPaul Phillips <paulp@improving.org>2012-06-21 08:23:17 -0700
commitff016002738580a7de11977c91e0061dbcf270ad (patch)
tree8673ee52df11775411c7a27d00f7f9efeb67d1ea /src
parent97e61ac5d3f2640bb70b6d851db7bf37c99280b9 (diff)
parenteaa3dd57f1a56151d0d6abe82f196e92aadaa843 (diff)
downloadscala-ff016002738580a7de11977c91e0061dbcf270ad.tar.gz
scala-ff016002738580a7de11977c91e0061dbcf270ad.tar.bz2
scala-ff016002738580a7de11977c91e0061dbcf270ad.zip
Merge pull request #712 from dragos/issue/hardening-compiling-with-newer-sources
Issue/hardening compiling with newer sources
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/Global.scala11
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Parsers.scala11
-rw-r--r--src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala2
3 files changed, 17 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/Global.scala b/src/compiler/scala/tools/nsc/Global.scala
index 0dfa4e5a44..35bf2dd288 100644
--- a/src/compiler/scala/tools/nsc/Global.scala
+++ b/src/compiler/scala/tools/nsc/Global.scala
@@ -1667,13 +1667,14 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
/** Compile abstract file until `globalPhase`, but at least to phase "namer".
*/
def compileLate(unit: CompilationUnit) {
- val maxId = math.max(globalPhase.id, typerPhase.id)
addUnit(unit)
- firstPhase.iterator takeWhile (_.id < maxId) foreach (ph =>
- atPhase(ph)(ph.asInstanceOf[GlobalPhase] applyPhase unit)
- )
- refreshProgress
+ if (firstPhase ne null) { // we might get here during initialization, is a source is newer than the binary
+ val maxId = math.max(globalPhase.id, typerPhase.id)
+ firstPhase.iterator takeWhile (_.id < maxId) foreach (ph =>
+ atPhase(ph)(ph.asInstanceOf[GlobalPhase] applyPhase unit))
+ refreshProgress
+ }
}
/** Reset package class to state at typer (not sure what this
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
index fd154fe796..bce9f28847 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
@@ -253,7 +253,16 @@ self =>
final val InBlock = 1
final val InTemplate = 2
- lazy val ScalaValueClassNames = tpnme.AnyVal :: definitions.ScalaValueClasses.map(_.name)
+ lazy val ScalaValueClassNames = Seq(tpnme.AnyVal,
+ tpnme.Unit,
+ tpnme.Boolean,
+ tpnme.Byte,
+ tpnme.Short,
+ tpnme.Char,
+ tpnme.Int,
+ tpnme.Long,
+ tpnme.Float,
+ tpnme.Double)
import nme.raw
diff --git a/src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala b/src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala
index 25d835790e..52e971f1e7 100644
--- a/src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala
+++ b/src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala
@@ -105,7 +105,7 @@ abstract class BrowsingLoaders extends SymbolLoaders {
*/
override def enterToplevelsFromSource(root: Symbol, name: String, src: AbstractFile) {
try {
- if (root.isEffectiveRoot) // RootClass or EmptyPackageClass
+ if (root.isEffectiveRoot || !src.name.endsWith(".scala")) // RootClass or EmptyPackageClass
super.enterToplevelsFromSource(root, name, src)
else
browseTopLevel(root, src)