Skip to content

Commit 1a5b858

Browse files
committed
Simplify logic and reclassify test
1 parent 14b1dd5 commit 1a5b858

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -474,11 +474,7 @@ object RefChecks {
474474
overrideError("needs `override` modifier")
475475
else if (other.is(AbsOverride) && other.isIncompleteIn(clazz) && !member.is(AbsOverride))
476476
overrideError("needs `abstract override` modifiers")
477-
else if member.is(Override)
478-
&& (other.is(Mutable)
479-
|| other.is(Accessor, butNot = Deferred)
480-
&& other.accessedFieldOrGetter.is(Mutable, butNot = Lazy))
481-
then
477+
else if member.is(Override) && other.is(Mutable) then
482478
overrideError("cannot override a mutable variable")
483479
else if (member.isAnyOverride &&
484480
!(member.owner.thisType.baseClasses exists (_ isSubClass other.owner)) &&

tests/pos/i13019.scala renamed to tests/neg/i13019.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ class Ok2C extends Ok2 { override var i: Int = 1 }
1010

1111
// was: variable i of type Int cannot override a mutable variable
1212
trait NotOk {var i: Int}
13-
class NotOkC extends NotOk { override var i: Int = 1 }
13+
class NotOkC extends NotOk { override var i: Int = 1 } // error

tests/neg/i14722.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,14 @@ object Test extends App {
77
entity.id = "0002"
88
println(entity.id)
99
}
10+
11+
trait HasId2:
12+
var id: String = ""
13+
14+
case class Entity2(override val id: String) extends HasId2 // error
15+
16+
trait HasId3:
17+
def id: String
18+
def id_=(x: String): Unit
19+
20+
case class Entity3(override var id: String) extends HasId3 // ok

0 commit comments

Comments
 (0)