@@ -143,8 +143,8 @@ object RefChecks {
143
143
* 1.8.1 M's type is a subtype of O's type, or
144
144
* 1.8.2 M is of type []S, O is of type ()T and S <: T, or
145
145
* 1.8.3 M is of type ()S, O is of type []T and S <: T, or
146
- * 1.9 If M is an erased def, O must be as well
147
- * 1.10 If `M` is a rewrite or Scala2x macro method, O cannot be deferred unless
146
+ * 1.9 If M or O are erased, they must be both erased
147
+ * 1.10 If M is a rewrite or Scala-2 macro method, O cannot be deferred unless
148
148
* there's also a concrete method that M overrides.
149
149
* 1.11. If O is a Scala-2 macro, M must be a Scala-2 macro.
150
150
* 2. Check that only abstract classes have deferred members
@@ -379,6 +379,8 @@ object RefChecks {
379
379
overrideError(" must be declared lazy to override a lazy value" )
380
380
} else if (member.is(Erased ) && ! other.is(Erased )) { // (1.9)
381
381
overrideError(" is erased, cannot override non-erased member" )
382
+ } else if (other.is(Erased ) && ! member.is(Erased )) { // (1.9)
383
+ overrideError(" is not erased, cannot override erased member" )
382
384
} else if ((member.is(Rewrite ) || member.is(Scala2Macro )) && other.is(Deferred ) &&
383
385
member.extendedOverriddenSymbols.forall(_.is(Deferred ))) { // (1.10)
384
386
overrideError(" is a rewrite method, must override at least one concrete method" )
0 commit comments