From 1a2ec87c0964ad3bf42d49bbdaebd66b45506210 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Tue, 3 Jul 2012 23:59:39 +0200 Subject: SI-6013 Disallow deferred members from intermediate java parents. 76c76b28f allowed for the fact that a Java method can override a super class method without matching its type in a Scala sense; it need only match its type after erasure. However that change went too far, and considered a concrete method in a base class to override a deferred method in a subclass. --- test/files/neg/t6013/Base.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 test/files/neg/t6013/Base.java (limited to 'test/files/neg/t6013/Base.java') diff --git a/test/files/neg/t6013/Base.java b/test/files/neg/t6013/Base.java new file mode 100644 index 0000000000..b73d7fd821 --- /dev/null +++ b/test/files/neg/t6013/Base.java @@ -0,0 +1,10 @@ +abstract public class Base { + // This must considered to be overridden by Abstract#foo based + // on the erased signatures. This special case is handled by + // `javaErasedOverridingSym` in `RefChecks`. + public abstract void bar(java.util.List foo) { return; } + + // But, a concrete method in a Java superclass must not excuse + // a deferred method in the Java subclass! + public boolean foo() { return true; } +} -- cgit v1.2.3