summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-05-23 10:22:21 -0700
committerPaul Phillips <paulp@improving.org>2013-05-23 10:22:21 -0700
commit112d4d2ccdbca8ef5d4f14475dda1ced9a994656 (patch)
treece2098db056e13f6c1262cd2011914bc5b124272
parent649d5bb3a59326ea8fb7790f6abc948951c73905 (diff)
parent7c908309953f15baed47b1e4cae1d720f9787bbb (diff)
downloadscala-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.scala2
-rw-r--r--test/files/run/t7436.scala9
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
+ }
+}