summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Infer.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Infer.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Infer.scala10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Infer.scala b/src/compiler/scala/tools/nsc/typechecker/Infer.scala
index 2313822663..dc143666a1 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Infer.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Infer.scala
@@ -1164,7 +1164,15 @@ trait Infer {
val treeSubst = new TreeTypeSubstituter(okparams, okargs)
treeSubst.traverse(fn)
treeSubst.traverseTrees(args)
- leftUndet
+ if(leftUndet nonEmpty) { // #3890
+ val leftUndet1 = treeSubst.typeSubst mapOver leftUndet
+ if(leftUndet ne leftUndet1) {
+ val symSubst = new TreeSymSubstTraverser(leftUndet, leftUndet1)
+ symSubst.traverse(fn)
+ symSubst.traverseTrees(args)
+ }
+ leftUndet1
+ } else leftUndet
} catch {
case ex: NoInstance =>
errorTree(fn,