summaryrefslogtreecommitdiff
path: root/test/files/neg/override-object-no.check
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.check
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.check')
-rw-r--r--test/files/neg/override-object-no.check10
1 files changed, 9 insertions, 1 deletions
diff --git a/test/files/neg/override-object-no.check b/test/files/neg/override-object-no.check
index 9cfda80fc3..972a719b3b 100644
--- a/test/files/neg/override-object-no.check
+++ b/test/files/neg/override-object-no.check
@@ -20,4 +20,12 @@ an overriding object must conform to the overridden object's class bound;
required: case2.Bar[Traversable[String]]
override object A extends Bar[List[String]] // err
^
-four errors found
+override-object-no.scala:52: error: overriding method x in trait A of type => SI9574.Foo.type;
+ method x has incompatible type
+ trait B extends A { def x: Bar.type } // should not compile (SI-9574)
+ ^
+override-object-no.scala:53: error: overriding method x in trait A of type => SI9574.Foo.type;
+ object x has incompatible type
+ trait C extends A { override object x }
+ ^
+6 errors found