package plugin;
import java.util.function.Consumer;
import library.JavaClass;
import library.JavaInterface;
import library.KotlinClass;
import library.KotlinInterface;
import library.JavaClassOverrideOnly;
import library.JavaInterfaceOverrideOnly;
import library.JavaMembersOverrideOnly;
import library.KotlinClassOverrideOnly;
import library.KotlinInterfaceOverrideOnly;
class Invoker {
public void invocations(
JavaClass javaClass,
JavaInterface javaInterface,
KotlinClass kotlinClass,
KotlinInterface kotlinInterface,
JavaClassOverrideOnly javaClassOverrideOnly,
JavaInterfaceOverrideOnly javaInterfaceOverrideOnly,
JavaMembersOverrideOnly javeMembersOverrideOnly,
KotlinClassOverrideOnly kotlinClassOverrideOnly,
KotlinInterfaceOverrideOnly kotlinInterfaceOverrideOnly
) {
javaClass.overrideOnlyMethod();
javaInterface.implementOnlyMethod();
kotlinClass.overrideOnlyMethod();
kotlinInterface.implementOnlyMethod();
javaClassOverrideOnly.overrideOnlyMethod();
javaClassOverrideOnly.finalMethod(); // no warning because it's a final method
javaInterfaceOverrideOnly.implementOnlyMethod();
javeMembersOverrideOnly.implementOnlyMethod();
javeMembersOverrideOnly.finalMethod(); // no warning because it's a final method
kotlinClassOverrideOnly.overrideOnlyMethod();
kotlinInterfaceOverrideOnly.implementOnlyMethod();
//No warning
JavaClassOverrideOnly.staticMethod();
JavaInterfaceOverrideOnly.staticMethod();
JavaMembersOverrideOnly.staticMethod();
KotlinClassOverrideOnly.staticMethod();
KotlinInterfaceOverrideOnly.staticMethod();
}
public void methodReferences() {
Consumer a = JavaClass::overrideOnlyMethod;
Consumer b = JavaInterface::implementOnlyMethod;
Consumer c = KotlinClass::overrideOnlyMethod;
Consumer d = KotlinInterface::implementOnlyMethod;
Consumer a1 = JavaClassOverrideOnly::overrideOnlyMethod;
Consumer a2 = JavaClassOverrideOnly::finalMethod; // no warning because it's a final method
Consumer b1 = JavaInterfaceOverrideOnly::implementOnlyMethod;
Consumer c1 = JavaMembersOverrideOnly::implementOnlyMethod;
Consumer c2 = JavaMembersOverrideOnly::finalMethod; // no warning because it's a final method
Consumer d1 = KotlinClassOverrideOnly::overrideOnlyMethod;
Consumer e1 = KotlinInterfaceOverrideOnly::implementOnlyMethod;
//No warning
Runnable a3 = JavaClassOverrideOnly::staticMethod;
Runnable b2 = JavaInterfaceOverrideOnly::staticMethod;
Runnable c3 = JavaMembersOverrideOnly::staticMethod;
Runnable d2 = KotlinClassOverrideOnly::staticMethod;
Runnable e2 = KotlinInterfaceOverrideOnly::staticMethod;
}
}
class JavaInheritor extends JavaClass {
//No warning
@Override
public void overrideOnlyMethod() {
}
}
class JavaImplementor implements JavaInterface {
//No warning
@Override
public void implementOnlyMethod() {
}
}
class KotlinInheritor extends KotlinClass {
//No warning
@Override
public void overrideOnlyMethod() {
}
}
class KotlinImplementor implements KotlinInterface {
//No warning
@Override
public void implementOnlyMethod() {
}
}
class JavaInheritorOverrideOnly extends JavaClassOverrideOnly {
//No warning
@Override
public void overrideOnlyMethod() {
}
}
class JavaImplementorOverrideOnly implements JavaInterfaceOverrideOnly {
//No warning
@Override
public void implementOnlyMethod() {
}
}
class KotlinInheritorOverrideOnly extends KotlinClassOverrideOnly {
//No warning
@Override
public void overrideOnlyMethod() {
}
}
class KotlinImplementorOverrideOnly implements KotlinInterfaceOverrideOnly {
//No warning
@Override
public void implementOnlyMethod() {
}
}