aboutsummaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-12-18 18:24:18 +0100
committerFelix Mulder <felix.mulder@gmail.com>2016-12-20 18:33:43 +0100
commitc38669928b577a1d08f7b19b80c979b7b7e957ad (patch)
tree485fceed17309f3e0ebb236aec1d8c3aadcba373 /compiler
parent098c50ac83eb4d18b23a1ed888cf601053c46ae6 (diff)
downloaddotty-c38669928b577a1d08f7b19b80c979b7b7e957ad.tar.gz
dotty-c38669928b577a1d08f7b19b80c979b7b7e957ad.tar.bz2
dotty-c38669928b577a1d08f7b19b80c979b7b7e957ad.zip
Don't require override for Java interface default methods
Under language:Scala2, don't require an explicit `override' when overriding default methods of Java traits. `scalac` does currently the same thing.
Diffstat (limited to 'compiler')
-rw-r--r--compiler/src/dotty/tools/dotc/typer/RefChecks.scala4
-rw-r--r--compiler/test/dotc/scala-collections.blacklist8
-rw-r--r--compiler/test/dotc/scala-collections.whitelist1
3 files changed, 5 insertions, 8 deletions
diff --git a/compiler/src/dotty/tools/dotc/typer/RefChecks.scala b/compiler/src/dotty/tools/dotc/typer/RefChecks.scala
index dcbd444f9..be15aba39 100644
--- a/compiler/src/dotty/tools/dotc/typer/RefChecks.scala
+++ b/compiler/src/dotty/tools/dotc/typer/RefChecks.scala
@@ -299,7 +299,9 @@ object RefChecks {
!member.isAnyOverride) {
// (*) Exclusion for default getters, fixes SI-5178. We cannot assign the Override flag to
// the default getter: one default getter might sometimes override, sometimes not. Example in comment on ticket.
- if (autoOverride(member))
+ // Also excluded under Scala2 mode are overrides of default methods of Java traits.
+ if (autoOverride(member) ||
+ other.owner.is(JavaTrait) && ctx.scala2Mode)
member.setFlag(Override)
else if (member.owner != clazz && other.owner != clazz && !(other.owner derivesFrom member.owner))
emitOverrideError(
diff --git a/compiler/test/dotc/scala-collections.blacklist b/compiler/test/dotc/scala-collections.blacklist
index 97f12244e..1e1c7b5d9 100644
--- a/compiler/test/dotc/scala-collections.blacklist
+++ b/compiler/test/dotc/scala-collections.blacklist
@@ -4,13 +4,7 @@
# 55 |abstract class AnyVal extends Any {
# |^
# |illegal redefinition of standard class AnyVal
-
-
-../scala-scala/src/library/scala/collection/convert/Wrappers.scala
-# 34 | def remove() = throw new UnsupportedOperationException
-# | ^
-# | overriding method remove in trait Iterator of type ()Unit;
-# | method remove of type ()Unit needs `override' modifier
+# (This is intended)
../scala-scala/src/library/scala/collection/generic/ParSetFactory.scala
diff --git a/compiler/test/dotc/scala-collections.whitelist b/compiler/test/dotc/scala-collections.whitelist
index cdec1ab12..498444ff5 100644
--- a/compiler/test/dotc/scala-collections.whitelist
+++ b/compiler/test/dotc/scala-collections.whitelist
@@ -370,6 +370,7 @@
../scala-scala/src/library/scala/collection/convert/package.scala
../scala-scala/src/library/scala/collection/convert/WrapAsJava.scala
../scala-scala/src/library/scala/collection/convert/WrapAsScala.scala
+../scala-scala/src/library/scala/collection/convert/Wrapper.scala
../scala-scala/src/library/scala/collection/concurrent/Map.scala
../scala-scala/src/library/scala/collection/concurrent/TrieMap.scala