aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/SuperAccessors.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-12-03 14:46:40 +0100
committerMartin Odersky <odersky@gmail.com>2014-12-03 14:46:40 +0100
commitc16e4b2bd8948be3a250373fb9eac98bb990e43a (patch)
treeefc8cb734a2b017fe4ae9a19845094e27b52daca /src/dotty/tools/dotc/transform/SuperAccessors.scala
parent5ff3d0fe4370c525c8d29f6483892d0bf59cd4c0 (diff)
downloaddotty-c16e4b2bd8948be3a250373fb9eac98bb990e43a.tar.gz
dotty-c16e4b2bd8948be3a250373fb9eac98bb990e43a.tar.bz2
dotty-c16e4b2bd8948be3a250373fb9eac98bb990e43a.zip
Make sure all non-deferred methods are implemented
Checked by a new post condition after memoize. Two bugs were detected and fixed by the condition (1) Memoize did not implement getters and setters of ParamAccessors (2) ResolveSuper did not implement super accessors in non-trait classes.
Diffstat (limited to 'src/dotty/tools/dotc/transform/SuperAccessors.scala')
-rw-r--r--src/dotty/tools/dotc/transform/SuperAccessors.scala3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/SuperAccessors.scala b/src/dotty/tools/dotc/transform/SuperAccessors.scala
index 8a531de8d..f727201b2 100644
--- a/src/dotty/tools/dotc/transform/SuperAccessors.scala
+++ b/src/dotty/tools/dotc/transform/SuperAccessors.scala
@@ -89,8 +89,9 @@ class SuperAccessors extends MacroTransform with IdentityDenotTransformer { this
val superAcc = clazz.info.decl(supername).suchThat(_.signature == sym.signature).symbol orElse {
ctx.debuglog(s"add super acc ${sym.showLocated} to $clazz")
+ val maybeDeferred = if (clazz is Trait) Deferred else EmptyFlags
val acc = ctx.newSymbol(
- clazz, supername, SuperAccessor | Private | Artifact | Method,
+ clazz, supername, SuperAccessor | Private | Artifact | Method | maybeDeferred,
ensureMethodic(sel.tpe.widenSingleton), coord = sym.coord).enteredAfter(thisTransformer)
// Diagnostic for SI-7091
if (!accDefs.contains(clazz))