Recompile implicit type usages when class signature is changed
Original commit: f32ff42ba3
This commit is contained in:
+24
@@ -1135,12 +1135,36 @@ public class ExperimentalIncrementalJpsTestGenerated extends AbstractExperimenta
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("implcitUpcast")
|
||||||
|
public void testImplcitUpcast() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/classHierarchyAffected/implcitUpcast/");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("inferredTypeArgumentChanged")
|
||||||
|
public void testInferredTypeArgumentChanged() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/classHierarchyAffected/inferredTypeArgumentChanged/");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("inferredTypeChanged")
|
||||||
|
public void testInferredTypeChanged() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/classHierarchyAffected/inferredTypeChanged/");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("jvmNameChanged")
|
@TestMetadata("jvmNameChanged")
|
||||||
public void testJvmNameChanged() throws Exception {
|
public void testJvmNameChanged() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/classHierarchyAffected/jvmNameChanged/");
|
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/classHierarchyAffected/jvmNameChanged/");
|
||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("lambdaParameterAffected")
|
||||||
|
public void testLambdaParameterAffected() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/classHierarchyAffected/lambdaParameterAffected/");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("methodAdded")
|
@TestMetadata("methodAdded")
|
||||||
public void testMethodAdded() throws Exception {
|
public void testMethodAdded() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/classHierarchyAffected/methodAdded/");
|
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/classHierarchyAffected/methodAdded/");
|
||||||
|
|||||||
+4
@@ -14,6 +14,7 @@ out/production/module/foo/ATypeParameter.class
|
|||||||
out/production/module/foo/ClassLiteralKt.class
|
out/production/module/foo/ClassLiteralKt.class
|
||||||
out/production/module/foo/FunctionParameterKt.class
|
out/production/module/foo/FunctionParameterKt.class
|
||||||
out/production/module/foo/GetAKt.class
|
out/production/module/foo/GetAKt.class
|
||||||
|
out/production/module/foo/ReturnTypeImplicitKt.class
|
||||||
out/production/module/foo/ReturnTypeKt.class
|
out/production/module/foo/ReturnTypeKt.class
|
||||||
End of files
|
End of files
|
||||||
Compiling files:
|
Compiling files:
|
||||||
@@ -28,6 +29,7 @@ src/importAGrandChild.kt
|
|||||||
src/importStar.kt
|
src/importStar.kt
|
||||||
src/referencedByFqName.kt
|
src/referencedByFqName.kt
|
||||||
src/returnType.kt
|
src/returnType.kt
|
||||||
|
src/returnTypeImplicit.kt
|
||||||
End of files
|
End of files
|
||||||
|
|
||||||
|
|
||||||
@@ -48,6 +50,7 @@ out/production/module/foo/ATypeParameter.class
|
|||||||
out/production/module/foo/ClassLiteralKt.class
|
out/production/module/foo/ClassLiteralKt.class
|
||||||
out/production/module/foo/FunctionParameterKt.class
|
out/production/module/foo/FunctionParameterKt.class
|
||||||
out/production/module/foo/GetAKt.class
|
out/production/module/foo/GetAKt.class
|
||||||
|
out/production/module/foo/ReturnTypeImplicitKt.class
|
||||||
out/production/module/foo/ReturnTypeKt.class
|
out/production/module/foo/ReturnTypeKt.class
|
||||||
End of files
|
End of files
|
||||||
Compiling files:
|
Compiling files:
|
||||||
@@ -62,4 +65,5 @@ src/importAGrandChild.kt
|
|||||||
src/importStar.kt
|
src/importStar.kt
|
||||||
src/referencedByFqName.kt
|
src/referencedByFqName.kt
|
||||||
src/returnType.kt
|
src/returnType.kt
|
||||||
|
src/returnTypeImplicit.kt
|
||||||
End of files
|
End of files
|
||||||
+4
@@ -14,6 +14,7 @@ out/production/module/foo/ATypeParameter.class
|
|||||||
out/production/module/foo/ClassLiteralKt.class
|
out/production/module/foo/ClassLiteralKt.class
|
||||||
out/production/module/foo/FunctionParameterKt.class
|
out/production/module/foo/FunctionParameterKt.class
|
||||||
out/production/module/foo/GetAKt.class
|
out/production/module/foo/GetAKt.class
|
||||||
|
out/production/module/foo/ReturnTypeImplicitKt.class
|
||||||
out/production/module/foo/ReturnTypeKt.class
|
out/production/module/foo/ReturnTypeKt.class
|
||||||
End of files
|
End of files
|
||||||
Compiling files:
|
Compiling files:
|
||||||
@@ -28,6 +29,7 @@ src/importAGrandChild.kt
|
|||||||
src/importStar.kt
|
src/importStar.kt
|
||||||
src/referencedByFqName.kt
|
src/referencedByFqName.kt
|
||||||
src/returnType.kt
|
src/returnType.kt
|
||||||
|
src/returnTypeImplicit.kt
|
||||||
End of files
|
End of files
|
||||||
COMPILATION FAILED
|
COMPILATION FAILED
|
||||||
Cannot access 'A': it is 'private' in file
|
Cannot access 'A': it is 'private' in file
|
||||||
@@ -46,6 +48,7 @@ Cannot access 'A': it is 'private' in file
|
|||||||
Function effective visibility 'public' should be the same or less permissive than its return type effective visibility 'private'
|
Function effective visibility 'public' should be the same or less permissive than its return type effective visibility 'private'
|
||||||
Cannot access 'A': it is 'private' in file
|
Cannot access 'A': it is 'private' in file
|
||||||
Cannot access 'A': it is 'private' in file
|
Cannot access 'A': it is 'private' in file
|
||||||
|
Function effective visibility 'public' should be the same or less permissive than its return type effective visibility 'private'
|
||||||
|
|
||||||
|
|
||||||
Cleaning output files:
|
Cleaning output files:
|
||||||
@@ -64,4 +67,5 @@ src/importAGrandChild.kt
|
|||||||
src/importStar.kt
|
src/importStar.kt
|
||||||
src/referencedByFqName.kt
|
src/referencedByFqName.kt
|
||||||
src/returnType.kt
|
src/returnType.kt
|
||||||
|
src/returnTypeImplicit.kt
|
||||||
End of files
|
End of files
|
||||||
@@ -7,11 +7,13 @@ End of files
|
|||||||
Cleaning output files:
|
Cleaning output files:
|
||||||
out/production/module/GetRandomEnumEntryKt.class
|
out/production/module/GetRandomEnumEntryKt.class
|
||||||
out/production/module/META-INF/module.kotlin_module
|
out/production/module/META-INF/module.kotlin_module
|
||||||
|
out/production/module/UseEnumImplicitlyKt.class
|
||||||
out/production/module/UseKt.class
|
out/production/module/UseKt.class
|
||||||
End of files
|
End of files
|
||||||
Compiling files:
|
Compiling files:
|
||||||
src/getRandomEnumEntry.kt
|
src/getRandomEnumEntry.kt
|
||||||
src/use.kt
|
src/use.kt
|
||||||
|
src/useEnumImplicitly.kt
|
||||||
End of files
|
End of files
|
||||||
COMPILATION FAILED
|
COMPILATION FAILED
|
||||||
when expression must be exhaustive, add necessary 'C' branch or 'else' branch instead
|
when expression must be exhaustive, add necessary 'C' branch or 'else' branch instead
|
||||||
@@ -24,4 +26,5 @@ Compiling files:
|
|||||||
src/Enum.kt
|
src/Enum.kt
|
||||||
src/getRandomEnumEntry.kt
|
src/getRandomEnumEntry.kt
|
||||||
src/use.kt
|
src/use.kt
|
||||||
|
src/useEnumImplicitly.kt
|
||||||
End of files
|
End of files
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
open class A
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
open class B : A()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
open class B
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
open class B : A()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
class C : B()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
class D : A()
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
Cleaning output files:
|
||||||
|
out/production/module/B.class
|
||||||
|
End of files
|
||||||
|
Compiling files:
|
||||||
|
src/B.kt
|
||||||
|
End of files
|
||||||
|
Cleaning output files:
|
||||||
|
out/production/module/C.class
|
||||||
|
out/production/module/CallUseAWithBKt.class
|
||||||
|
out/production/module/CallUseAWithCKt.class
|
||||||
|
out/production/module/GetBKt.class
|
||||||
|
out/production/module/GetCKt.class
|
||||||
|
out/production/module/META-INF/module.kotlin_module
|
||||||
|
End of files
|
||||||
|
Compiling files:
|
||||||
|
src/C.kt
|
||||||
|
src/callUseAWithB.kt
|
||||||
|
src/callUseAWithC.kt
|
||||||
|
src/getB.kt
|
||||||
|
src/getC.kt
|
||||||
|
End of files
|
||||||
|
COMPILATION FAILED
|
||||||
|
Type mismatch: inferred type is B but A was expected
|
||||||
|
Type mismatch: inferred type is C but A was expected
|
||||||
|
|
||||||
|
|
||||||
|
Cleaning output files:
|
||||||
|
out/production/module/B.class
|
||||||
|
End of files
|
||||||
|
Compiling files:
|
||||||
|
src/B.kt
|
||||||
|
src/C.kt
|
||||||
|
src/callUseAWithB.kt
|
||||||
|
src/callUseAWithC.kt
|
||||||
|
src/getB.kt
|
||||||
|
src/getC.kt
|
||||||
|
End of files
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun callUseAWithA() {
|
||||||
|
useA(getA())
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun callUseAWithB() {
|
||||||
|
useA(getB())
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun callUseAWithC() {
|
||||||
|
useA(getC())
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun callUseAWithD() {
|
||||||
|
useA(getD())
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
fun getA() = A()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
fun getB() = B()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
fun getC() = C()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
fun getD() = D()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
fun useA(a: A) {}
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
open class A
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
open class B : A()
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
open class B
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
open class B : A()
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
class C : B()
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
class D : A()
|
||||||
+43
@@ -0,0 +1,43 @@
|
|||||||
|
Cleaning output files:
|
||||||
|
out/production/module/B.class
|
||||||
|
End of files
|
||||||
|
Compiling files:
|
||||||
|
src/B.kt
|
||||||
|
End of files
|
||||||
|
Cleaning output files:
|
||||||
|
out/production/module/C.class
|
||||||
|
out/production/module/GetListOfAKt.class
|
||||||
|
out/production/module/GetListOfBKt.class
|
||||||
|
out/production/module/GetListOfCKt.class
|
||||||
|
out/production/module/META-INF/module.kotlin_module
|
||||||
|
out/production/module/UseListOfAKt.class
|
||||||
|
out/production/module/UseListOfAWithListOfBKt.class
|
||||||
|
out/production/module/UseListOfAWithListOfCKt.class
|
||||||
|
End of files
|
||||||
|
Compiling files:
|
||||||
|
src/C.kt
|
||||||
|
src/getListOfA.kt
|
||||||
|
src/getListOfB.kt
|
||||||
|
src/getListOfC.kt
|
||||||
|
src/useListOfA.kt
|
||||||
|
src/useListOfAWithListOfB.kt
|
||||||
|
src/useListOfAWithListOfC.kt
|
||||||
|
End of files
|
||||||
|
COMPILATION FAILED
|
||||||
|
Type mismatch: inferred type is kotlin.collections.List<B> but kotlin.collections.List<A> was expected
|
||||||
|
Type mismatch: inferred type is kotlin.collections.List<C> but kotlin.collections.List<A> was expected
|
||||||
|
|
||||||
|
|
||||||
|
Cleaning output files:
|
||||||
|
out/production/module/B.class
|
||||||
|
End of files
|
||||||
|
Compiling files:
|
||||||
|
src/B.kt
|
||||||
|
src/C.kt
|
||||||
|
src/getListOfA.kt
|
||||||
|
src/getListOfB.kt
|
||||||
|
src/getListOfC.kt
|
||||||
|
src/useListOfA.kt
|
||||||
|
src/useListOfAWithListOfB.kt
|
||||||
|
src/useListOfAWithListOfC.kt
|
||||||
|
End of files
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fun getListOfA() = listOf(A())
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fun getListOfB() = listOf(B())
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fun getListOfC() = listOf(C())
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fun getListOfD() = listOf(D())
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fun useListOfA(aas: List<A>) {}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun useListOfAWithListOfA() {
|
||||||
|
useListOfA(getListOfA())
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun useListOfAWithListOfB() {
|
||||||
|
useListOfA(getListOfB())
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun useListOfAWithListOfC() {
|
||||||
|
useListOfA(getListOfC())
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun useListOfAWithListOfD() {
|
||||||
|
useListOfA(getListOfD())
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
open class A
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
open class B : A()
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
open class B
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
class C : B()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
class D : A()
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
Cleaning output files:
|
||||||
|
out/production/module/B.class
|
||||||
|
End of files
|
||||||
|
Compiling files:
|
||||||
|
src/B.kt
|
||||||
|
End of files
|
||||||
|
Cleaning output files:
|
||||||
|
out/production/module/C.class
|
||||||
|
out/production/module/GetBKt.class
|
||||||
|
out/production/module/GetBorCKt.class
|
||||||
|
out/production/module/GetBorDKt.class
|
||||||
|
out/production/module/GetCKt.class
|
||||||
|
out/production/module/GetCorDKt.class
|
||||||
|
out/production/module/META-INF/module.kotlin_module
|
||||||
|
End of files
|
||||||
|
Compiling files:
|
||||||
|
src/C.kt
|
||||||
|
src/getB.kt
|
||||||
|
src/getBorC.kt
|
||||||
|
src/getBorD.kt
|
||||||
|
src/getC.kt
|
||||||
|
src/getCorD.kt
|
||||||
|
End of files
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
fun getA() = A()
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fun getAorD() = if (Math.random() > 0.5) getA() else getD()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
fun getB() = B()
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fun getBorC() = if (Math.random() > 0.5) getB() else getC()
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fun getBorD() = if (Math.random() > 0.5) getB() else getD()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
fun getC() = C()
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fun getCorD() = if (Math.random() > 0.5) getC() else getD()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
fun getD() = D()
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
open class A
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
class B : A()
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
class B
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
class B : A()
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
Cleaning output files:
|
||||||
|
out/production/module/B.class
|
||||||
|
End of files
|
||||||
|
Compiling files:
|
||||||
|
src/B.kt
|
||||||
|
End of files
|
||||||
|
Cleaning output files:
|
||||||
|
out/production/module/ConsumeBExtLambdaKt.class
|
||||||
|
out/production/module/ConsumeBLambdaKt.class
|
||||||
|
out/production/module/META-INF/module.kotlin_module
|
||||||
|
out/production/module/UseConsumeBExtLambdaKt$useConsumeBExtLambda$1.class
|
||||||
|
out/production/module/UseConsumeBExtLambdaKt.class
|
||||||
|
out/production/module/UseConsumeBLambdaKt$useConsumeBLambda$1.class
|
||||||
|
out/production/module/UseConsumeBLambdaKt.class
|
||||||
|
End of files
|
||||||
|
Compiling files:
|
||||||
|
src/consumeBExtLambda.kt
|
||||||
|
src/consumeBLambda.kt
|
||||||
|
src/useConsumeBExtLambda.kt
|
||||||
|
src/useConsumeBLambda.kt
|
||||||
|
End of files
|
||||||
|
COMPILATION FAILED
|
||||||
|
Type mismatch: inferred type is B but A was expected
|
||||||
|
Type mismatch: inferred type is B but A was expected
|
||||||
|
|
||||||
|
|
||||||
|
Cleaning output files:
|
||||||
|
out/production/module/B.class
|
||||||
|
End of files
|
||||||
|
Compiling files:
|
||||||
|
src/B.kt
|
||||||
|
src/consumeBExtLambda.kt
|
||||||
|
src/consumeBLambda.kt
|
||||||
|
src/useConsumeBExtLambda.kt
|
||||||
|
src/useConsumeBLambda.kt
|
||||||
|
End of files
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fun consumeA(a: A) {}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun consumeBExtLambda(fn: B.()->Unit) {
|
||||||
|
B().fn()
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun consumeBLambda(fn: (B)->Unit) {
|
||||||
|
fn(B())
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun useConsumeBExtLambda() {
|
||||||
|
consumeBExtLambda() { consumeA(this) }
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun useConsumeBLambda() {
|
||||||
|
consumeBLambda() { consumeA(it) }
|
||||||
|
}
|
||||||
+2
@@ -15,6 +15,7 @@ out/production/module/foo/ATypeParameter.class
|
|||||||
out/production/module/foo/ClassLiteralKt.class
|
out/production/module/foo/ClassLiteralKt.class
|
||||||
out/production/module/foo/FunctionParameterKt.class
|
out/production/module/foo/FunctionParameterKt.class
|
||||||
out/production/module/foo/GetAKt.class
|
out/production/module/foo/GetAKt.class
|
||||||
|
out/production/module/foo/ReturnTypeImplicitKt.class
|
||||||
out/production/module/foo/ReturnTypeKt.class
|
out/production/module/foo/ReturnTypeKt.class
|
||||||
End of files
|
End of files
|
||||||
Compiling files:
|
Compiling files:
|
||||||
@@ -29,6 +30,7 @@ src/importAGrandChild.kt
|
|||||||
src/importStar.kt
|
src/importStar.kt
|
||||||
src/referencedByFqName.kt
|
src/referencedByFqName.kt
|
||||||
src/returnType.kt
|
src/returnType.kt
|
||||||
|
src/returnTypeImplicit.kt
|
||||||
End of files
|
End of files
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+3
-22
@@ -9,39 +9,20 @@ out/production/module/D$Companion.class
|
|||||||
out/production/module/D.class
|
out/production/module/D.class
|
||||||
out/production/module/META-INF/module.kotlin_module
|
out/production/module/META-INF/module.kotlin_module
|
||||||
out/production/module/UseAKt.class
|
out/production/module/UseAKt.class
|
||||||
End of files
|
|
||||||
Compiling files:
|
|
||||||
src/D.kt
|
|
||||||
src/useA.kt
|
|
||||||
End of files
|
|
||||||
COMPILATION FAILED
|
|
||||||
Type mismatch: inferred type is A<B> but A<C> was expected
|
|
||||||
|
|
||||||
|
|
||||||
Cleaning output files:
|
|
||||||
out/production/module/A.class
|
|
||||||
End of files
|
|
||||||
Compiling files:
|
|
||||||
src/A.kt
|
|
||||||
src/D.kt
|
|
||||||
src/useA.kt
|
|
||||||
End of files
|
|
||||||
Cleaning output files:
|
|
||||||
out/production/module/META-INF/module.kotlin_module
|
|
||||||
out/production/module/UseDKt.class
|
out/production/module/UseDKt.class
|
||||||
End of files
|
End of files
|
||||||
Compiling files:
|
Compiling files:
|
||||||
|
src/D.kt
|
||||||
|
src/useA.kt
|
||||||
src/useD.kt
|
src/useD.kt
|
||||||
End of files
|
End of files
|
||||||
COMPILATION FAILED
|
COMPILATION FAILED
|
||||||
Type mismatch: inferred type is A<B> but A<C> was expected
|
Type mismatch: inferred type is A<B> but A<C> was expected
|
||||||
|
Type mismatch: inferred type is A<B> but A<C> was expected
|
||||||
|
|
||||||
|
|
||||||
Cleaning output files:
|
Cleaning output files:
|
||||||
out/production/module/A.class
|
out/production/module/A.class
|
||||||
out/production/module/D$Companion.class
|
|
||||||
out/production/module/D.class
|
|
||||||
out/production/module/UseAKt.class
|
|
||||||
End of files
|
End of files
|
||||||
Compiling files:
|
Compiling files:
|
||||||
src/A.kt
|
src/A.kt
|
||||||
|
|||||||
Reference in New Issue
Block a user