summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-10-06 17:01:48 +0000
committerMartin Odersky <odersky@gmail.com>2006-10-06 17:01:48 +0000
commitd7a4f76d25820df20c9e8cd6594fa635f666dfe3 (patch)
tree66366bd717639774069fde8fa4c9b907f33ac00d /src
parent2901639c758397546e8bf7fa994e5612c82be3cd (diff)
downloadscala-d7a4f76d25820df20c9e8cd6594fa635f666dfe3.tar.gz
scala-d7a4f76d25820df20c9e8cd6594fa635f666dfe3.tar.bz2
scala-d7a4f76d25820df20c9e8cd6594fa635f666dfe3.zip
fixed problem in fix of bug764 that broke dist
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Definitions.scala2
-rw-r--r--src/compiler/scala/tools/nsc/symtab/StdNames.scala2
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Symbols.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala45
-rw-r--r--src/library/scala/Predef.scala3
5 files changed, 30 insertions, 24 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Definitions.scala b/src/compiler/scala/tools/nsc/symtab/Definitions.scala
index db040d975a..02ccd33287 100644
--- a/src/compiler/scala/tools/nsc/symtab/Definitions.scala
+++ b/src/compiler/scala/tools/nsc/symtab/Definitions.scala
@@ -477,9 +477,11 @@ trait Definitions requires SymbolTable {
AllRefClass = newClass(ScalaPackageClass, nme.AllRef, anyrefparam)
.setFlag(ABSTRACT | TRAIT | FINAL)
+// val oldAllRefClass = newAlias(ScalaPackageClass, nme.AllRef, AllRefClass.typeConstructor)
AllClass = newClass(ScalaPackageClass, nme.All, anyparam)
.setFlag(ABSTRACT | TRAIT | FINAL)
+// val oldAllClass = newAlias(ScalaPackageClass, nme.All, AllClass.typeConstructor)
ClassClass = getClass("java.lang.Class")
StringClass = getClass("java.lang.String")
diff --git a/src/compiler/scala/tools/nsc/symtab/StdNames.scala b/src/compiler/scala/tools/nsc/symtab/StdNames.scala
index ee02d5fe3d..0de28cecdb 100644
--- a/src/compiler/scala/tools/nsc/symtab/StdNames.scala
+++ b/src/compiler/scala/tools/nsc/symtab/StdNames.scala
@@ -173,6 +173,8 @@ trait StdNames requires SymbolTable {
val COLONCOLON = encode("::")
val PERCENT = encode("%")
+ val Nothing = newTermName("Nothing")
+ val Null = newTermName("Null")
val All = newTermName("All")
val AllRef = newTermName("AllRef")
val Any = newTermName("Any")
diff --git a/src/compiler/scala/tools/nsc/symtab/Symbols.scala b/src/compiler/scala/tools/nsc/symtab/Symbols.scala
index 8b5483a9d4..58276f2a42 100644
--- a/src/compiler/scala/tools/nsc/symtab/Symbols.scala
+++ b/src/compiler/scala/tools/nsc/symtab/Symbols.scala
@@ -111,8 +111,6 @@ trait Symbols requires SymbolTable {
m.moduleClass.setFlag(JAVA | PACKAGE)
m
}
- final def newCaseFactory(pos: PositionType) =
- newMethod(pos, name.toTermName).setFlag(CASE)
final def newThisSym(pos: PositionType) =
newValue(pos, nme.this_).setFlag(SYNTHETIC)
final def newThisSkolem: Symbol =
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index b1b569d2d9..72aebe7d32 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -92,14 +92,14 @@ trait Namers requires Analyzer {
def enterInScope(sym: Symbol): Symbol = {
// allow for overloaded methods
if (!(sym.isSourceMethod && sym.owner.isClass && !sym.owner.isPackageClass)) {
- val prev = context.scope.lookupEntry(sym.name);
- if (prev != null && prev.owner == context.scope &&
+ val prev = context.scope.lookupEntry(sym.name);
+ if (prev != null && prev.owner == context.scope &&
(!prev.sym.isSourceMethod ||
nme.isSetterName(sym.name) ||
sym.owner.isPackageClass)) {
- doubleDefError(sym.pos, prev.sym)
+ doubleDefError(sym.pos, prev.sym)
sym setInfo ErrorType
- } else context.scope enter sym
+ } else context.scope enter sym
} else context.scope enter sym
sym
}
@@ -131,9 +131,9 @@ trait Namers requires Analyzer {
c = enterInScope(context.owner.newClass(pos, name)).setFlag(flags | inConstructorFlag);
}
if (c.owner.isPackageClass) {
- val file = context.unit.source.getFile()
- val clazz = c.asInstanceOf[ClassSymbol]
- if (settings.debug.value && clazz.sourceFile != null && !clazz.sourceFile.equals(file)) {
+ val file = context.unit.source.getFile()
+ val clazz = c.asInstanceOf[ClassSymbol]
+ if (settings.debug.value && clazz.sourceFile != null && !clazz.sourceFile.equals(file)) {
System.err.println("SOURCE MISMATCH: " + clazz.sourceFile + " vs. " + file + " SYM=" + c);
}
clazz.sourceFile = file
@@ -165,12 +165,12 @@ trait Namers requires Analyzer {
m
}
- private def enterCaseFactorySymbol(pos: PositionType, flags: int): Symbol = {
- var m: Symbol = context.scope.lookup(context.owner.name.toTermName)
+ private def enterCaseFactorySymbol(pos: PositionType, flags: int, name: Name): Symbol = {
+ var m: Symbol = context.scope.lookup(name)
if (m.isTerm && !m.isPackage && !currentRun.compiles(m) && context.scope == m.owner.info.decls) {
updatePosFlags(m, pos, flags)
} else {
- m = enterInScope(context.owner.newCaseFactory(pos)).setFlag(flags)
+ m = enterInScope(context.owner.newMethod(pos, name)).setFlag(flags)
}
if (m.owner.isPackageClass)
currentRun.symSource(m) = context.unit.source.getFile()
@@ -217,18 +217,19 @@ trait Namers requires Analyzer {
if (tree.symbol == NoSymbol) {
- val owner = context.owner
- tree match {
- case PackageDef(name, stats) =>
- tree.symbol = enterPackageSymbol(tree.pos, name);
- val namer = new Namer(
- context.make(tree, tree.symbol.moduleClass, tree.symbol.info.decls));
- namer.enterSyms(stats);
- case ClassDef(mods, name, tparams, _, impl) =>
- if ((mods.flags & (CASE | ABSTRACT)) == CASE) { // enter case factory method.
- tree.symbol = enterCaseFactorySymbol(tree.pos, mods.flags & AccessFlags)
- .setInfo(innerNamer.caseFactoryCompleter(tree));
- setPrivateWithin(tree, tree.symbol, mods);
+ val owner = context.owner
+ tree match {
+ case PackageDef(name, stats) =>
+ tree.symbol = enterPackageSymbol(tree.pos, name);
+ val namer = new Namer(
+ context.make(tree, tree.symbol.moduleClass, tree.symbol.info.decls));
+ namer.enterSyms(stats);
+ case ClassDef(mods, name, tparams, _, impl) =>
+ if ((mods.flags & (CASE | ABSTRACT)) == CASE) { // enter case factory method.
+ tree.symbol = enterCaseFactorySymbol(
+ tree.pos, mods.flags & AccessFlags | METHOD | CASE, name.toTermName)
+ .setInfo(innerNamer.caseFactoryCompleter(tree));
+ setPrivateWithin(tree, tree.symbol, mods);
}
tree.symbol = enterClassSymbol(tree.pos, mods.flags, name)
setPrivateWithin(tree, tree.symbol, mods)
diff --git a/src/library/scala/Predef.scala b/src/library/scala/Predef.scala
index ee9e511d81..25faa0ff35 100644
--- a/src/library/scala/Predef.scala
+++ b/src/library/scala/Predef.scala
@@ -25,7 +25,10 @@ object Predef {
// aliases -------------------------------------------------------
+ /** to be removed after new starr */
type Nothing = All
+
+ /** to be removed after new starr */
type Null = AllRef
type byte = scala.Byte