Skip to content

Commit 7afadb5

Browse files
committed
Fix error message when overriding with a lazy val
1 parent 3bcaf1d commit 7afadb5

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ object RefChecks {
388388
} else if (member.is(ModuleVal) && !other.isRealMethod && !other.is(Deferred | Lazy)) {
389389
overrideError("may not override a concrete non-lazy value")
390390
} else if (member.is(Lazy, butNot = Module) && !other.isRealMethod && !other.is(Lazy) &&
391-
!ctx.testScala2Mode("may not override a non-lazy value", member.sourcePos)) {
391+
!ctx.testScala2Mode(overrideErrorMsg("may not override a non-lazy value"), member.sourcePos)) {
392392
overrideError("may not override a non-lazy value")
393393
} else if (other.is(Lazy) && !other.isRealMethod && !member.is(Lazy)) {
394394
overrideError("must be declared lazy to override a lazy value")

tests/neg/ovlazy.check

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-- Error: tests/neg/ovlazy.scala:5:20 ----------------------------------------------------------------------------------
2+
5 | override lazy val x: Int = 2 // error
3+
| ^
4+
| error overriding value x in class A of type Int;
5+
| lazy value x of type Int may not override a non-lazy value

tests/neg/ovlazy.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class A {
2+
val x: Int = 1
3+
}
4+
class B extends A {
5+
override lazy val x: Int = 2 // error
6+
}

0 commit comments

Comments
 (0)