summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2009-12-22 17:11:54 +0000
committerMartin Odersky <odersky@gmail.com>2009-12-22 17:11:54 +0000
commit2d12c1036668c0dbddd3276b73bb03b295a8e0a7 (patch)
tree44b2722afa656bd8ab17ac748cc95497326b8dda /src/compiler
parentef2cb0f658cff897432d9a635b80b93580e95d56 (diff)
downloadscala-2d12c1036668c0dbddd3276b73bb03b295a8e0a7.tar.gz
scala-2d12c1036668c0dbddd3276b73bb03b295a8e0a7.tar.bz2
scala-2d12c1036668c0dbddd3276b73bb03b295a8e0a7.zip
Closes #2819, #2705, #2805. Review by community.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Types.scala3
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Types.scala b/src/compiler/scala/tools/nsc/symtab/Types.scala
index c4772b6407..4ed827723e 100644
--- a/src/compiler/scala/tools/nsc/symtab/Types.scala
+++ b/src/compiler/scala/tools/nsc/symtab/Types.scala
@@ -4031,6 +4031,7 @@ A type's typeSymbol should never be inspected directly.
/** Does type `tp1' conform to `tp2'?
*/
private def isSubType2(tp1: Type, tp2: Type, depth: Int): Boolean = {
+ if (tp1 eq tp2) return true
if (isErrorOrWildcard(tp1)) return true
if (isErrorOrWildcard(tp2)) return true
if (tp1 eq NoType) return false
@@ -4349,6 +4350,8 @@ A type's typeSymbol should never be inspected directly.
}
tvar.constr.inst = NoType // necessary because hibounds/lobounds may contain tvar
+ println("solving "+tvar+" "+up+" "+(if (up) (tvar.constr.hiBounds) else tvar.constr.loBounds)+((if (up) (tvar.constr.hiBounds) else tvar.constr.loBounds) map (_.widen)))
+
tvar setInst (
if (up) {
if (depth != AnyDepth) glb(tvar.constr.hiBounds, depth) else glb(tvar.constr.hiBounds)
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index d5bd9c3c3f..40eb72aaeb 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -1164,7 +1164,7 @@ trait Namers { self: Analyzer =>
val expr1 = typer.typedQualifier(expr)
val base = expr1.tpe
typer.checkStable(expr1)
- if (expr1.symbol.isRootPackage) context.error(tree.pos, "_root_ cannot be imported")
+ if ((expr1.symbol ne null) && expr1.symbol.isRootPackage) context.error(tree.pos, "_root_ cannot be imported")
def checkNotRedundant(pos: Position, from: Name, to: Name): Boolean = {
if (!tree.symbol.hasFlag(SYNTHETIC) &&
!((expr1.symbol ne null) && expr1.symbol.isInterpreterWrapper) &&