Skip to content

Commit a0f5c20

Browse files
committed
TreeChecker: check for absence of private abstract methods.
1 parent 24e20af commit a0f5c20

File tree

2 files changed

+5
-11
lines changed

2 files changed

+5
-11
lines changed

src/dotty/tools/dotc/transform/ExpandPrivate.scala

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,14 @@ import Decorators._
1616
import ast.Trees._
1717
import TreeTransforms._
1818

19-
/** Make private term members that are:
20-
* - accessed from another class
21-
* - deferred
19+
/** Make private term members that are accessed from another class
2220
* non-private by resetting the Private flag and expanding their name.
2321
*/
24-
class ExpandPrivate extends MiniPhaseTransform with SymTransformer { thisTransform =>
22+
class ExpandPrivate extends MiniPhaseTransform with IdentityDenotTransformer { thisTransform =>
2523
import ast.tpd._
2624

2725
override def phaseName: String = "expandPrivate"
2826

29-
30-
def transformSym(sym: SymDenotation)(implicit ctx: Context): SymDenotation = {
31-
if (sym.is(Method) && sym.is(Deferred))
32-
sym.ensureNotPrivate
33-
else sym
34-
}
35-
3627
/** Make private terms accessed from different classes non-private.
3728
* Note: this happens also for accesses between class and linked module class.
3829
* If we change the scheme at one point to make static module class computations

src/dotty/tools/dotc/transform/TreeChecker.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ class TreeChecker extends Phase with SymTransformer {
8080
testDuplicate(sym, seenClasses, "class")
8181
}
8282

83+
if (sym.is(Method) && sym.is(Deferred) && sym.is(Private))
84+
assert(false, s"$sym is both Deferred and Private")
85+
8386
checkCompanion(symd)
8487

8588
symd

0 commit comments

Comments
 (0)