diff options
author | Paul Phillips <paulp@improving.org> | 2012-11-14 13:03:28 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-11-14 16:39:19 -0800 |
commit | 6023706458ca14ecd62a0b1b68352662e787020f (patch) | |
tree | 64f0cfa003110448a98639b95319c742e2db7359 /src | |
parent | ed6520b4fa002ea143cead5eb3633839d500e08d (diff) | |
download | scala-6023706458ca14ecd62a0b1b68352662e787020f.tar.gz scala-6023706458ca14ecd62a0b1b68352662e787020f.tar.bz2 scala-6023706458ca14ecd62a0b1b68352662e787020f.zip |
Error for SI-6355, overloading of applyDynamic.
As long as it can never be called anyway, seems like we'd be
doing people a kindness to fail the compile rather than letting
it be ambiguous at every use site.
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | 9 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index dbd2a0e49b..24b0611d6a 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -130,6 +130,15 @@ abstract class RefChecks extends InfoTransform with scala.reflect.internal.trans } } } + + // Check for doomed attempt to overload applyDynamic + if (clazz isSubClass DynamicClass) { + clazz.info member nme.applyDynamic match { + case sym if sym.isOverloaded => unit.error(sym.pos, "implementation restriction: applyDynamic cannot be overloaded") + case _ => + } + } + if (settings.lint.value) { clazz.info.decls filter (x => x.isImplicit && x.typeParams.nonEmpty) foreach { sym => val alts = clazz.info.decl(sym.name).alternatives diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index c203e62786..d734e2e861 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -3871,7 +3871,7 @@ trait Typers extends Modes with Adaptations with Tags { * */ def mkInvoke(cxTree: Tree, tree: Tree, qual: Tree, name: Name): Option[Tree] = { - debuglog(s"mkInvoke($cxTree, $tree, $qual, $name)") + debuglog(s"dyna.mkInvoke($cxTree, $tree, $qual, $name)") acceptsApplyDynamicWithType(qual, name) map { tp => // tp eq NoType => can call xxxDynamic, but not passing any type args (unless specified explicitly by the user) // in scala-virtualized, when not NoType, tp is passed as type argument (for selection on a staged Struct) |