diff options
-rw-r--r-- | src/dotty/tools/dotc/transform/ExpandPrivate.scala | 13 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/TreeChecker.scala | 3 |
2 files changed, 5 insertions, 11 deletions
diff --git a/src/dotty/tools/dotc/transform/ExpandPrivate.scala b/src/dotty/tools/dotc/transform/ExpandPrivate.scala index 471ed6465..dfd24290f 100644 --- a/src/dotty/tools/dotc/transform/ExpandPrivate.scala +++ b/src/dotty/tools/dotc/transform/ExpandPrivate.scala @@ -16,23 +16,14 @@ import Decorators._ import ast.Trees._ import TreeTransforms._ -/** Make private term members that are: - * - accessed from another class - * - deferred +/** Make private term members that are accessed from another class * non-private by resetting the Private flag and expanding their name. */ -class ExpandPrivate extends MiniPhaseTransform with SymTransformer { thisTransform => +class ExpandPrivate extends MiniPhaseTransform with IdentityDenotTransformer { thisTransform => import ast.tpd._ override def phaseName: String = "expandPrivate" - - def transformSym(sym: SymDenotation)(implicit ctx: Context): SymDenotation = { - if (sym.is(Method) && sym.is(Deferred)) - sym.ensureNotPrivate - else sym - } - /** Make private terms accessed from different classes non-private. * Note: this happens also for accesses between class and linked module class. * If we change the scheme at one point to make static module class computations diff --git a/src/dotty/tools/dotc/transform/TreeChecker.scala b/src/dotty/tools/dotc/transform/TreeChecker.scala index 7c8ba8432..19e6aca62 100644 --- a/src/dotty/tools/dotc/transform/TreeChecker.scala +++ b/src/dotty/tools/dotc/transform/TreeChecker.scala @@ -80,6 +80,9 @@ class TreeChecker extends Phase with SymTransformer { testDuplicate(sym, seenClasses, "class") } + if (sym.is(Method) && sym.is(Deferred) && sym.is(Private)) + assert(false, s"$sym is both Deferred and Private") + checkCompanion(symd) symd |