Ignoring SAM adapters when checking for unimplemented methods or methods to override.
This commit is contained in:
@@ -19,6 +19,7 @@ package org.jetbrains.jet.plugin.codeInsight;
|
||||
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||
import org.jetbrains.jet.lang.resolve.calls.CallResolverUtil;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
@@ -33,7 +34,9 @@ public class OverrideMethodsHandler extends OverrideImplementMethodsHandler {
|
||||
Set<CallableMemberDescriptor> result = new HashSet<CallableMemberDescriptor>();
|
||||
for (CallableMemberDescriptor superMethod : superMethods) {
|
||||
if (superMethod.getModality().isOverridable()) {
|
||||
result.add(superMethod);
|
||||
if (!CallResolverUtil.isOrOverridesSynthesized(superMethod)) {
|
||||
result.add(superMethod);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package foo;
|
||||
|
||||
public interface A {
|
||||
void foo(Runnable r);
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package foo;
|
||||
|
||||
public interface B extends A {
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package foo
|
||||
|
||||
class Impl: B {
|
||||
<caret>
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package foo
|
||||
|
||||
class Impl: B {
|
||||
|
||||
public override fun foo(r: Runnable?) {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package foo;
|
||||
|
||||
public class A {
|
||||
public void foo(Runnable r) {}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package foo;
|
||||
|
||||
public class B extends A {
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package foo
|
||||
|
||||
class Impl: B() {
|
||||
<caret>
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package foo
|
||||
|
||||
class Impl: B() {
|
||||
|
||||
public override fun foo(r: Runnable?) {
|
||||
super<B>.foo(r)
|
||||
}
|
||||
}
|
||||
@@ -154,6 +154,14 @@ public class OverrideImplementTest extends LightCodeInsightFixtureTestCase {
|
||||
doMultiOverrideFileTest();
|
||||
}
|
||||
|
||||
public void testImplementSamAdapters() {
|
||||
doImplementDirectoryTest();
|
||||
}
|
||||
|
||||
public void testOverrideSamAdapters() {
|
||||
doOverrideDirectoryTest("foo");
|
||||
}
|
||||
|
||||
private void doImplementFileTest() {
|
||||
doFileTest(new ImplementMethodsHandler());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user