diff options
author | Martin Odersky <odersky@gmail.com> | 2006-06-16 17:51:29 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-06-16 17:51:29 +0000 |
commit | 769b33953d82e1570267adef2ee64fb1c57cb3f1 (patch) | |
tree | 2b503a2c7795ded5bd079a01e05c04fc680dc228 /src/compiler/scala/tools/nsc/typechecker/Typers.scala | |
parent | 8714d194abc293d319c9ee96a2643f18853b86d3 (diff) | |
download | scala-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.scala | 18 |
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) && |