summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-06-16 17:51:29 +0000
committerMartin Odersky <odersky@gmail.com>2006-06-16 17:51:29 +0000
commit769b33953d82e1570267adef2ee64fb1c57cb3f1 (patch)
tree2b503a2c7795ded5bd079a01e05c04fc680dc228 /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parent8714d194abc293d319c9ee96a2643f18853b86d3 (diff)
downloadscala-769b33953d82e1570267adef2ee64fb1c57cb3f1.tar.gz
scala-769b33953d82e1570267adef2ee64fb1c57cb3f1.tar.bz2
scala-769b33953d82e1570267adef2ee64fb1c57cb3f1.zip
Changed compile server to make it more robust;
Some stylistic cleanups elsewhere
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index aae0db6d5e..4f5eab5756 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -352,7 +352,6 @@ trait Typers requires Analyzer {
* (13) When in mode EXPRmode, apply a view
* If all this fails, error
*/
-// def adapt(tree: Tree, mode: int, pt: Type): Tree = {
protected def adapt(tree: Tree, mode: int, pt: Type): Tree = tree.tpe match {
case ct @ ConstantType(value) if ((mode & TYPEmode) == 0 && (ct <:< pt)) => // (0)
copy.Literal(tree, value)
@@ -455,10 +454,7 @@ trait Typers requires Analyzer {
.filter(m => m.tpe.paramSectionCount > 0) != NoSymbol) { // (8)
typed(atPos(tree.pos)(Select(adaptToName(tree, nme.apply), nme.apply)), mode, pt)
} else if (!context.undetparams.isEmpty && (mode & POLYmode) == 0) { // (9)
- val tparams = context.undetparams
- context.undetparams = List()
- inferExprInstance(tree, tparams, pt)
- adapt(tree, mode, pt)
+ instantiate(tree, mode, pt)
} else if (tree.tpe <:< pt) {
tree
} else {
@@ -475,10 +471,7 @@ trait Typers requires Analyzer {
case _ =>
}
if (!context.undetparams.isEmpty) {
- val tparams = context.undetparams
- context.undetparams = List()
- inferExprInstance(tree, tparams, pt)
- return adapt(tree, mode, pt)
+ return instantiate(tree, mode, pt)
}
if (context.implicitsEnabled && !tree.tpe.isError && !pt.isError) {
// (13); the condition prevents chains of views
@@ -499,6 +492,13 @@ trait Typers requires Analyzer {
// adapt(tree, mode, pt)
// }
+ def instantiate(tree: Tree, mode: int, pt: Type): Tree = {
+ val tparams = context.undetparams
+ context.undetparams = List()
+ inferExprInstance(tree, tparams, pt)
+ adapt(tree, mode, pt)
+ }
+
def adaptToMember(qual: Tree, name: Name, tp: Type): Tree = {
val qtpe = qual.tpe.widen;
if (qual.isTerm && (qual.symbol == null || !qual.symbol.isTerm || qual.symbol.isValue) &&