aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-05-03 20:09:48 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-05-03 20:09:48 +0200
commita0f5c20abb925b60ae879dc928e29f3f38eb24e1 (patch)
tree179ab98df4501078883ab9996226194b5b6f6812 /src
parent24e20af9ea7f778ea96321eb24082c465e188eda (diff)
downloaddotty-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.scala13
-rw-r--r--src/dotty/tools/dotc/transform/TreeChecker.scala3
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