diff options
author | Martin Odersky <odersky@gmail.com> | 2009-12-22 17:11:54 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-12-22 17:11:54 +0000 |
commit | 2d12c1036668c0dbddd3276b73bb03b295a8e0a7 (patch) | |
tree | 44b2722afa656bd8ab17ac748cc95497326b8dda /src/compiler | |
parent | ef2cb0f658cff897432d9a635b80b93580e95d56 (diff) | |
download | scala-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.scala | 3 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 2 |
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) && |