summaryrefslogtreecommitdiff
path: root/test/files/neg/override-object-no.scala
diff options
context:
space:
mode:
authorStefan Zeiger <szeiger@novocode.com>2016-02-05 18:22:49 +0100
committerStefan Zeiger <szeiger@novocode.com>2016-02-08 15:20:05 +0100
commitfbba81991e69faf3e7416b4caabed1e99c528917 (patch)
tree3e0a59a9f82bab410bb4b2320a49376fff5a1bec /test/files/neg/override-object-no.scala
parent353c305b13a8b0fbb622e157eabcdd7c69e8ddca (diff)
downloadscala-fbba81991e69faf3e7416b4caabed1e99c528917.tar.gz
scala-fbba81991e69faf3e7416b4caabed1e99c528917.tar.bz2
scala-fbba81991e69faf3e7416b4caabed1e99c528917.zip
SI-9574 Prevent illegal overrides of members with module types
Commit f32a32b1b33c9d7ccd62467e3e10cb69930023c8 introduced the ability to override objects with other objects. The exception that allows these overrides (where the usual subtyping check fails) was applied to all members whose type is a module class. This is too broad, however, because it not only applies to members of the form `object foo` but also `def foo: bar.type` (where `bar` is an `object`). The fix is to restrict the exception to those cases where both definitions actually are objects.
Diffstat (limited to 'test/files/neg/override-object-no.scala')
-rw-r--r--test/files/neg/override-object-no.scala11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/files/neg/override-object-no.scala b/test/files/neg/override-object-no.scala
index 745cdb2332..517408886d 100644
--- a/test/files/neg/override-object-no.scala
+++ b/test/files/neg/override-object-no.scala
@@ -43,3 +43,14 @@ package case2 {
override object A extends Bar[List[String]] // err
}
}
+
+// Both overridden and overriding members must be objects, not vals with a module type
+object SI9574 {
+ object Foo
+ object Bar
+ trait A { def x: Foo.type }
+ trait B extends A { def x: Bar.type } // should not compile (SI-9574)
+ trait C extends A { override object x }
+ trait D { object x; def y = x }
+ trait E extends D { override val x: super.x.type = y } // OK but doesn't need object subtyping exception
+}