diff options
author | Paul Phillips <paulp@improving.org> | 2013-05-23 10:22:21 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-05-23 10:22:21 -0700 |
commit | 112d4d2ccdbca8ef5d4f14475dda1ced9a994656 (patch) | |
tree | ce2098db056e13f6c1262cd2011914bc5b124272 | |
parent | 649d5bb3a59326ea8fb7790f6abc948951c73905 (diff) | |
parent | 7c908309953f15baed47b1e4cae1d720f9787bbb (diff) | |
download | scala-112d4d2ccdbca8ef5d4f14475dda1ced9a994656.tar.gz scala-112d4d2ccdbca8ef5d4f14475dda1ced9a994656.tar.bz2 scala-112d4d2ccdbca8ef5d4f14475dda1ced9a994656.zip |
Merge pull request #2576 from retronym/ticket/7436
SI-7436 Varargs awareness for super param aliasing.
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 2 | ||||
-rw-r--r-- | test/files/run/t7436.scala | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index 8511428d90..b7e0d44e96 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -2143,7 +2143,7 @@ trait Typers extends Adaptations with Tags { orElse (superAcc getter superAcc.owner) filter (alias => superClazz.info.nonPrivateMember(alias.name) == alias) ) - if (alias.exists && !alias.accessed.isVariable) { + if (alias.exists && !alias.accessed.isVariable && !isRepeatedParamType(alias.accessed.info)) { val ownAcc = clazz.info decl name suchThat (_.isParamAccessor) match { case acc if !acc.isDeferred && acc.hasAccessorFlag => acc.accessed case acc => acc diff --git a/test/files/run/t7436.scala b/test/files/run/t7436.scala new file mode 100644 index 0000000000..867a931e05 --- /dev/null +++ b/test/files/run/t7436.scala @@ -0,0 +1,9 @@ +class A(val p: Int*) + +class B(val p1: Int) extends A(p1) + +object Test { + def main(args: Array[String]) { + new B(1).p1 // threw java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofInt cannot be cast to java.lang.Integer + } +} |