summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2011-01-26 07:33:37 +0000
committerAdriaan Moors <adriaan.moors@epfl.ch>2011-01-26 07:33:37 +0000
commitf9b1917e8be7a178282514429f494a3905055aab (patch)
tree24e3c16b3293367c6ff2a3daca382158ba53adf5
parentec9b00e1955fb24038542c5ba67ba8483efb5b50 (diff)
downloadscala-f9b1917e8be7a178282514429f494a3905055aab.tar.gz
scala-f9b1917e8be7a178282514429f494a3905055aab.tar.bz2
scala-f9b1917e8be7a178282514429f494a3905055aab.zip
closes #4137.
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/RefChecks.scala2
-rw-r--r--test/files/neg/t4137.check9
-rw-r--r--test/files/neg/t4137.scala11
3 files changed, 21 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
index 7945e2e19e..3d769f6cfd 100644
--- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
@@ -376,7 +376,7 @@ abstract class RefChecks extends InfoTransform {
// overrideError("may not override parameterized type");
// @M: substSym
- if (!(self.memberType(member).substSym(member.typeParams, other.typeParams) =:= self.memberType(other))) // (1.6)
+ if( !(sameLength(member.typeParams, other.typeParams) && (self.memberType(member).substSym(member.typeParams, other.typeParams) =:= self.memberType(other))) ) // (1.6)
overrideTypeError();
} else if (other.isAbstractType) {
//if (!member.typeParams.isEmpty) // (1.7) @MAT
diff --git a/test/files/neg/t4137.check b/test/files/neg/t4137.check
new file mode 100644
index 0000000000..9767bdb1ce
--- /dev/null
+++ b/test/files/neg/t4137.check
@@ -0,0 +1,9 @@
+t4137.scala:9: error: overriding type EPC in trait A, which equals [X1]C[X1];
+ type EPC has incompatible type
+ override type EPC = C[T]
+ ^
+t4137.scala:10: error: overriding type EPC2 in trait A, which equals [X1]C[X1];
+ type EPC2 has incompatible type
+ override type EPC2[X1 <: String] = C[X1]
+ ^
+two errors found
diff --git a/test/files/neg/t4137.scala b/test/files/neg/t4137.scala
new file mode 100644
index 0000000000..68f249fdeb
--- /dev/null
+++ b/test/files/neg/t4137.scala
@@ -0,0 +1,11 @@
+trait C[T]
+
+trait A[T] {
+ type EPC[X1] = C[X1]
+ type EPC2[X1] = C[X1]
+}
+
+trait B[T] extends A[T] {
+ override type EPC = C[T]
+ override type EPC2[X1 <: String] = C[X1]
+} \ No newline at end of file