diff options
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/RefChecks.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index c49acf3f01..b524f2e99a 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -96,7 +96,7 @@ abstract class RefChecks extends InfoTransform { var checkedCombinations = Set[List[Type]]() // only one overloaded alternative is allowed to define default arguments - private def checkDefaultsInOverloaded(clazz: Symbol) { + private def checkOverloadedRestrictions(clazz: Symbol) { def check(members: List[Symbol]): Unit = members match { case x :: xs => if (x.hasParamWhich(_.hasDefaultFlag) && !nme.isProtectedAccessorName(x.name)) { @@ -116,6 +116,11 @@ abstract class RefChecks extends InfoTransform { check(xs) case _ => () } + clazz.info.decls filter (x => x.isImplicit && x.typeParams.nonEmpty) foreach { sym => + val alts = clazz.info.decl(sym.name).alternatives + if (alts.size > 1) + alts foreach (x => unit.warning(x.pos, "parameterized overloaded implicit methods are not visible as view bounds")) + } check(clazz.info.members) } @@ -1293,7 +1298,7 @@ abstract class RefChecks extends InfoTransform { case Template(parents, self, body) => localTyper = localTyper.atOwner(tree, currentOwner) validateBaseTypes(currentOwner) - checkDefaultsInOverloaded(currentOwner) + checkOverloadedRestrictions(currentOwner) val bridges = addVarargBridges(currentOwner) checkAllOverrides(currentOwner) |