summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index 2bea199dbc..b964c73297 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -627,10 +627,12 @@ trait Typers requires Analyzer {
instantiate(tree, mode, pt)
} else if (tree.tpe <:< pt) {
tree
- } else if ((mode & PATTERNmode) != 0) {
- if ((tree.symbol ne null) && tree.symbol.isModule) inferModulePattern(tree, pt)
- tree
} else {
+ if ((mode & PATTERNmode) != 0) {
+ if ((tree.symbol ne null) && tree.symbol.isModule)
+ inferModulePattern(tree, pt)
+ if (isPopulated(tree.tpe, pt)) return tree
+ }
val tree1 = constfold(tree, pt) // (10) (11)
if (tree1.tpe <:< pt) adapt(tree1, mode, pt)
else {
@@ -2335,9 +2337,9 @@ trait Typers requires Analyzer {
try {
// if (!isLocal) tree setSymbol info.sym
val tree1 = typed1(tree, EXPRmode, pt)
- if (settings.debug.value) log("typed implicit "+tree1+":"+tree1.tpe+", pt = "+pt)
+ //if (settings.debug.value) log("typed implicit "+tree1+":"+tree1.tpe+", pt = "+pt)
val tree2 = adapt(tree1, EXPRmode, pt)
- if (settings.debug.value) log("adapted implicit "+tree1.symbol+":"+tree2.tpe+" to "+pt)
+ //if (settings.debug.value) log("adapted implicit "+tree1.symbol+":"+tree2.tpe+" to "+pt)
if (tree2.tpe.isError) EmptyTree
else if (info.sym == tree1.symbol) tree2
else fail("syms differ: ", tree1.symbol, info.sym)