Recompile implicit type usages when class signature is changed
This commit is contained in:
+24
@@ -1135,12 +1135,36 @@ public class ExperimentalIncrementalJpsTestGenerated extends AbstractExperimenta
|
||||
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")
|
||||
public void testJvmNameChanged() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/classHierarchyAffected/jvmNameChanged/");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("lambdaParameterAffected")
|
||||
public void testLambdaParameterAffected() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/classHierarchyAffected/lambdaParameterAffected/");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("methodAdded")
|
||||
public void testMethodAdded() throws Exception {
|
||||
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/FunctionParameterKt.class
|
||||
out/production/module/foo/GetAKt.class
|
||||
out/production/module/foo/ReturnTypeImplicitKt.class
|
||||
out/production/module/foo/ReturnTypeKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
@@ -28,6 +29,7 @@ src/importAGrandChild.kt
|
||||
src/importStar.kt
|
||||
src/referencedByFqName.kt
|
||||
src/returnType.kt
|
||||
src/returnTypeImplicit.kt
|
||||
End of files
|
||||
|
||||
|
||||
@@ -48,6 +50,7 @@ out/production/module/foo/ATypeParameter.class
|
||||
out/production/module/foo/ClassLiteralKt.class
|
||||
out/production/module/foo/FunctionParameterKt.class
|
||||
out/production/module/foo/GetAKt.class
|
||||
out/production/module/foo/ReturnTypeImplicitKt.class
|
||||
out/production/module/foo/ReturnTypeKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
@@ -62,4 +65,5 @@ src/importAGrandChild.kt
|
||||
src/importStar.kt
|
||||
src/referencedByFqName.kt
|
||||
src/returnType.kt
|
||||
src/returnTypeImplicit.kt
|
||||
End of files
|
||||
+4
@@ -14,6 +14,7 @@ out/production/module/foo/ATypeParameter.class
|
||||
out/production/module/foo/ClassLiteralKt.class
|
||||
out/production/module/foo/FunctionParameterKt.class
|
||||
out/production/module/foo/GetAKt.class
|
||||
out/production/module/foo/ReturnTypeImplicitKt.class
|
||||
out/production/module/foo/ReturnTypeKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
@@ -28,6 +29,7 @@ src/importAGrandChild.kt
|
||||
src/importStar.kt
|
||||
src/referencedByFqName.kt
|
||||
src/returnType.kt
|
||||
src/returnTypeImplicit.kt
|
||||
End of files
|
||||
COMPILATION FAILED
|
||||
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'
|
||||
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:
|
||||
@@ -64,4 +67,5 @@ src/importAGrandChild.kt
|
||||
src/importStar.kt
|
||||
src/referencedByFqName.kt
|
||||
src/returnType.kt
|
||||
src/returnTypeImplicit.kt
|
||||
End of files
|
||||
+3
@@ -7,11 +7,13 @@ End of files
|
||||
Cleaning output files:
|
||||
out/production/module/GetRandomEnumEntryKt.class
|
||||
out/production/module/META-INF/module.kotlin_module
|
||||
out/production/module/UseEnumImplicitlyKt.class
|
||||
out/production/module/UseKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
src/getRandomEnumEntry.kt
|
||||
src/use.kt
|
||||
src/useEnumImplicitly.kt
|
||||
End of files
|
||||
COMPILATION FAILED
|
||||
when expression must be exhaustive, add necessary 'C' branch or 'else' branch instead
|
||||
@@ -24,4 +26,5 @@ Compiling files:
|
||||
src/Enum.kt
|
||||
src/getRandomEnumEntry.kt
|
||||
src/use.kt
|
||||
src/useEnumImplicitly.kt
|
||||
End of files
|
||||
@@ -0,0 +1 @@
|
||||
open class A
|
||||
@@ -0,0 +1 @@
|
||||
open class B : A()
|
||||
+1
@@ -0,0 +1 @@
|
||||
open class B
|
||||
+1
@@ -0,0 +1 @@
|
||||
open class B : A()
|
||||
@@ -0,0 +1 @@
|
||||
class C : B()
|
||||
@@ -0,0 +1 @@
|
||||
class D : A()
|
||||
+37
@@ -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()
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
open class B
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
open class B : A()
|
||||
+1
@@ -0,0 +1 @@
|
||||
class C : B()
|
||||
+1
@@ -0,0 +1 @@
|
||||
class D : A()
|
||||
Vendored
+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
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
fun getListOfA() = listOf(A())
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
fun getListOfB() = listOf(B())
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
fun getListOfC() = listOf(C())
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
fun getListOfD() = listOf(D())
|
||||
Vendored
+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())
|
||||
}
|
||||
+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 @@
|
||||
class C : B()
|
||||
+1
@@ -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
|
||||
+1
@@ -0,0 +1 @@
|
||||
fun getA() = A()
|
||||
+1
@@ -0,0 +1 @@
|
||||
fun getAorD() = if (Math.random() > 0.5) getA() else getD()
|
||||
+1
@@ -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()
|
||||
+1
@@ -0,0 +1 @@
|
||||
fun getC() = C()
|
||||
+1
@@ -0,0 +1 @@
|
||||
fun getCorD() = if (Math.random() > 0.5) getC() else getD()
|
||||
+1
@@ -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) {}
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
fun consumeBExtLambda(fn: B.()->Unit) {
|
||||
B().fn()
|
||||
}
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
fun consumeBLambda(fn: (B)->Unit) {
|
||||
fn(B())
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
fun useConsumeBExtLambda() {
|
||||
consumeBExtLambda() { consumeA(this) }
|
||||
}
|
||||
Vendored
+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/FunctionParameterKt.class
|
||||
out/production/module/foo/GetAKt.class
|
||||
out/production/module/foo/ReturnTypeImplicitKt.class
|
||||
out/production/module/foo/ReturnTypeKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
@@ -29,6 +30,7 @@ src/importAGrandChild.kt
|
||||
src/importStar.kt
|
||||
src/referencedByFqName.kt
|
||||
src/returnType.kt
|
||||
src/returnTypeImplicit.kt
|
||||
End of files
|
||||
|
||||
|
||||
|
||||
+3
-22
@@ -9,39 +9,20 @@ out/production/module/D$Companion.class
|
||||
out/production/module/D.class
|
||||
out/production/module/META-INF/module.kotlin_module
|
||||
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
|
||||
End of files
|
||||
Compiling files:
|
||||
src/D.kt
|
||||
src/useA.kt
|
||||
src/useD.kt
|
||||
End of files
|
||||
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
|
||||
|
||||
|
||||
Cleaning output files:
|
||||
out/production/module/A.class
|
||||
out/production/module/D$Companion.class
|
||||
out/production/module/D.class
|
||||
out/production/module/UseAKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
src/A.kt
|
||||
|
||||
Reference in New Issue
Block a user