diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-05-03 20:09:48 +0200 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-05-03 20:09:48 +0200 |
commit | a0f5c20abb925b60ae879dc928e29f3f38eb24e1 (patch) | |
tree | 179ab98df4501078883ab9996226194b5b6f6812 /src | |
parent | 24e20af9ea7f778ea96321eb24082c465e188eda (diff) | |
download | dotty-a0f5c20abb925b60ae879dc928e29f3f38eb24e1.tar.gz dotty-a0f5c20abb925b60ae879dc928e29f3f38eb24e1.tar.bz2 dotty-a0f5c20abb925b60ae879dc928e29f3f38eb24e1.zip |
TreeChecker: check for absence of private abstract methods.
Diffstat (limited to 'src')
-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 |