| // RUN_PIPELINE_TILL: CODEGEN | |
| // FILE: Test.java | |
| public class Test { | |
| public interface I1 {} | |
| public interface I2 {} | |
| public interface I3 {} | |
| public interface I123 extends I1, I2, I3 {} | |
| public static class Base { | |
| public <P extends I1 & I2 & I3> void foo(P p) {} | |
| } | |
| public static class Derived extends Base { | |
| @Override | |
| public <P extends I1 & I3 & I2> void foo(P p) {} | |
| } | |
| public static class DerivedRaw extends Base { | |
| public void foo(I1 p) {} | |
| } | |
| } | |
| // FILE: main.kt | |
| interface KI1 | |
| interface KI2 | |
| interface KI12 : KI1, KI2 | |
| open class KBase { | |
| open fun <P> foo() | |
| where P : KI1, P : KI2 {} | |
| } | |
| class KDerived : KBase() { | |
| override fun <P> foo() | |
| where P : KI2, P : KI1 {} | |
| } | |
| fun callJava(derived: Test.Derived, derivedRaw: Test.DerivedRaw, v: Test.I123) { | |
| derived.foo(v) | |
| derivedRaw.foo(v) | |
| } | |
| fun callKotlin(derived: KDerived) { | |
| derived.foo<KI12>() | |
| } | |
| /* GENERATED_FIR_TAGS: classDeclaration, flexibleType, functionDeclaration, interfaceDeclaration, javaFunction, javaType, | |
| override, typeConstraint, typeParameter */ |