File tree 4 files changed +36
-0
lines changed
compiler/src/dotty/tools/dotc/typer 4 files changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -362,6 +362,8 @@ object RefChecks {
362
362
s " $clazz inherits conflicting members: \n "
363
363
+ infoStringWithLocation(other) + " and\n " + infoStringWithLocation(member)
364
364
+ " \n (Note: this can be resolved by declaring an override in " + clazz + " .)" )
365
+ else if member.is(Exported ) then
366
+ overrideError(" cannot override since it comes from an export" )
365
367
else
366
368
overrideError(" needs `override` modifier" )
367
369
else if (other.is(AbsOverride ) && other.isIncompleteIn(clazz) && ! member.is(AbsOverride ))
Original file line number Diff line number Diff line change
1
+ object A :
2
+ def f : String = " "
3
+
4
+ trait B :
5
+ def f : String = " abc"
6
+
7
+ trait B2 extends B :
8
+ override def f : String = " abc"
9
+
10
+ object D extends B :
11
+ object b extends B
12
+ export b ._ // ok
13
+
14
+ object D1 extends B :
15
+ object b extends B
16
+ export b .f // error
17
+
18
+ object D2 extends B :
19
+ object b2 extends B2
20
+ export b2 .f // error
Original file line number Diff line number Diff line change
1
+ -- Error: tests/neg/exports2.scala:8:11 --------------------------------------------------------------------------------
2
+ 8 | export A._ // error
3
+ | ^
4
+ | error overriding method f in trait B of type => String;
5
+ | method f of type => String cannot override since it comes from an export
Original file line number Diff line number Diff line change
1
+ object A :
2
+ def f : String = " "
3
+
4
+ trait B :
5
+ def f : String = " abc"
6
+
7
+ object C extends B :
8
+ export A ._ // error
9
+
You can’t perform that action at this time.
0 commit comments