diff options
author | Martin Odersky <odersky@gmail.com> | 2014-12-03 14:46:40 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-12-03 14:46:40 +0100 |
commit | c16e4b2bd8948be3a250373fb9eac98bb990e43a (patch) | |
tree | efc8cb734a2b017fe4ae9a19845094e27b52daca /src/dotty/tools/dotc/transform/SuperAccessors.scala | |
parent | 5ff3d0fe4370c525c8d29f6483892d0bf59cd4c0 (diff) | |
download | dotty-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.scala | 3 |
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)) |