summaryrefslogtreecommitdiff
path: root/sources/scalac/typechecker/Analyzer.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/typechecker/Analyzer.java')
-rw-r--r--sources/scalac/typechecker/Analyzer.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/sources/scalac/typechecker/Analyzer.java b/sources/scalac/typechecker/Analyzer.java
index c4b404cc9a..b4b9d078d0 100644
--- a/sources/scalac/typechecker/Analyzer.java
+++ b/sources/scalac/typechecker/Analyzer.java
@@ -133,7 +133,7 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
// expressions may be packages and
// Java statics modules.
- static final int SUPERmode = 0x080; // orthogonal to above. When set
+ static final int SUPERmode = 0x080; // Goes with CONSTRmode. When set
// we are checking a superclass
// constructor invocation.
@@ -192,6 +192,11 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
if (!isAccessible(sym, site)) {
error(pos, sym + " cannot be accessed in " + site.type);
}
+ if (site instanceof Tree.Super && (sym.flags & DEFERRED) != 0) {
+ Symbol sym1 = context.enclClass.owner.thisSym().info().lookup(sym.name);
+ if ((sym1.flags & OVERRIDE) == 0 || (sym1.flags & DEFERRED) != 0)
+ error(pos, "symbol accessed from super may not be abstract");
+ }
}
/** Is `sym' accessible as a member of tree `site' in current context?