diff options
author | Paul Phillips <paulp@improving.org> | 2013-02-12 13:09:32 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-02-12 13:09:32 -0800 |
commit | 14048023a1deba540502da96663deca6ca226bf6 (patch) | |
tree | 7fae2e6a9c5b64c7c8f33133183cfb786ceb709f /src/compiler/scala/tools | |
parent | d45fe5ebeeb22ce611429560d48294ca2615d296 (diff) | |
parent | c26cc531f655cfa5b27ffb8ab25adc7ffb97aa71 (diff) | |
download | scala-14048023a1deba540502da96663deca6ca226bf6.tar.gz scala-14048023a1deba540502da96663deca6ca226bf6.tar.bz2 scala-14048023a1deba540502da96663deca6ca226bf6.zip |
Merge pull request #2057 from paulp/pr/revert-6355
SI-6355, weakend implementation restriction on applyDynamic.
Diffstat (limited to 'src/compiler/scala/tools')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index 7c60ce275a..60a73036f8 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -136,9 +136,8 @@ 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 _ => + for ((_, m1 :: m2 :: _) <- (clazz.info member nme.applyDynamic).alternatives groupBy (_.typeParams.length)) { + unit.error(m1.pos, "implementation restriction: applyDynamic cannot be overloaded except by methods with different numbers of type parameters, e.g. applyDynamic[T1](method: String)(arg: T1) and applyDynamic[T1, T2](method: String)(arg1: T1, arg2: T2)") } } @@ -1237,12 +1236,12 @@ abstract class RefChecks extends InfoTransform with scala.reflect.internal.trans */ private def checkMigration(sym: Symbol, pos: Position) = { if (sym.hasMigrationAnnotation) { - val changed = try + val changed = try settings.Xmigration.value < ScalaVersion(sym.migrationVersion.get) catch { - case e : NumberFormatException => + case e : NumberFormatException => unit.warning(pos, s"${sym.fullLocationString} has an unparsable version number: ${e.getMessage()}") - // if we can't parse the format on the migration annotation just conservatively assume it changed + // if we can't parse the format on the migration annotation just conservatively assume it changed true } if (changed) |