Skip to content

Commit f7d2658

Browse files
committed
Allow inline to override erased.
1 parent d16dc96 commit f7d2658

File tree

2 files changed

+148
-122
lines changed

2 files changed

+148
-122
lines changed

compiler/src/dotty/tools/dotc/typer/RefChecks.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,8 @@ object RefChecks {
156156
* 1.8.1 M's type is a subtype of O's type, or
157157
* 1.8.2 M is of type []S, O is of type ()T and S <: T, or
158158
* 1.8.3 M is of type ()S, O is of type []T and S <: T, or
159-
* 1.9.1 If M or O are erased, they must both be erased
160-
* 1.9.2 If M or O are extension methods, they must both be extension methods
159+
* 1.9.1 If M is erased, O is erased. If O is erased, M is erased or inline.
160+
* 1.9.2 If M or O are extension methods, they must both be extension methods.
161161
* 1.10 If M is an inline or Scala-2 macro method, O cannot be deferred unless
162162
* there's also a concrete method that M overrides.
163163
* 1.11. If O is a Scala-2 macro, M must be a Scala-2 macro.
@@ -394,7 +394,7 @@ object RefChecks {
394394
overrideError("must be declared lazy to override a lazy value")
395395
} else if (member.is(Erased) && !other.is(Erased)) { // (1.9.1)
396396
overrideError("is erased, cannot override non-erased member")
397-
} else if (other.is(Erased) && !member.is(Erased)) { // (1.9.1)
397+
} else if (other.is(Erased) && !member.is(Erased | Inline)) { // (1.9.1)
398398
overrideError("is not erased, cannot override erased member")
399399
} else if (member.is(Extension) && !other.is(Extension)) { // (1.9.2)
400400
overrideError("is an extension method, cannot override a normal method")

0 commit comments

Comments
 (0)