fix KT-9843 Bug in incremental compilation: module is not recompiled when optional parameter added
and KT-8434 Removing parameter with default value from function in different module breaks incremental compilation #KT-9843 Fixed #KT-8434 Fixed
This commit is contained in:
@@ -669,7 +669,7 @@ public class FunctionCodegen {
|
||||
getDeprecatedAccessFlag(functionDescriptor) |
|
||||
ACC_SYNTHETIC;
|
||||
if (!(functionDescriptor instanceof ConstructorDescriptor)) {
|
||||
flags |= ACC_STATIC;
|
||||
flags |= ACC_STATIC | ACC_BRIDGE;
|
||||
}
|
||||
// $default methods are never private to be accessible from other class files (e.g. inner) without the need of synthetic accessors
|
||||
flags &= ~ACC_PRIVATE;
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
class MyClass() {
|
||||
fun test(s: String = "") {}
|
||||
}
|
||||
|
||||
// TESTED_OBJECT_KIND: function
|
||||
// TESTED_OBJECTS: MyClass, test$default
|
||||
// FLAGS: ACC_PUBLIC, ACC_STATIC, ACC_BRIDGE, ACC_SYNTHETIC
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
class MyClass() {
|
||||
companion object {
|
||||
fun test(s: String, x:Int = 10) {}
|
||||
}
|
||||
}
|
||||
|
||||
// TESTED_OBJECT_KIND: function
|
||||
// TESTED_OBJECTS: MyClass$Companion, test$default
|
||||
// FLAGS: ACC_PUBLIC, ACC_STATIC, ACC_BRIDGE, ACC_SYNTHETIC
|
||||
@@ -0,0 +1,5 @@
|
||||
fun test(s: String = "") {}
|
||||
|
||||
// TESTED_OBJECT_KIND: function
|
||||
// TESTED_OBJECTS: TopLevelFunKt, test$default
|
||||
// FLAGS: ACC_PUBLIC, ACC_STATIC, ACC_BRIDGE, ACC_SYNTHETIC
|
||||
@@ -516,6 +516,33 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/writeFlags/function/withDefaultArguments")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class WithDefaultArguments extends AbstractWriteFlagsTest {
|
||||
public void testAllFilesPresentInWithDefaultArguments() throws Exception {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/writeFlags/function/withDefaultArguments"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("funInClass.kt")
|
||||
public void testFunInClass() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/function/withDefaultArguments/funInClass.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("funInClassObject.kt")
|
||||
public void testFunInClassObject() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/function/withDefaultArguments/funInClassObject.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("topLevelFun.kt")
|
||||
public void testTopLevelFun() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/function/withDefaultArguments/topLevelFun.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/writeFlags/hidden")
|
||||
|
||||
@@ -61,6 +61,30 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("defaultParameterAdded")
|
||||
public void testDefaultParameterAdded() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/defaultParameterAdded/");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("defaultParameterAddedForTopLevelFun")
|
||||
public void testDefaultParameterAddedForTopLevelFun() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("defaultParameterRemoved")
|
||||
public void testDefaultParameterRemoved() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("defaultParameterRemovedForTopLevelFun")
|
||||
public void testDefaultParameterRemovedForTopLevelFun() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("inlineFunctionInlined")
|
||||
public void testInlineFunctionInlined() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/");
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
Cleaning output files:
|
||||
out/production/module1/a/A.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module1/src/module1_a.kt
|
||||
End of files
|
||||
Cleaning output files:
|
||||
out/production/module2/META-INF/module2.kotlin_module
|
||||
out/production/module2/usage/Module2_usageKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module2/src/module2_usage.kt
|
||||
End of files
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
module1->
|
||||
module2->module1
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package a
|
||||
|
||||
class A {
|
||||
fun foo(s: String, x: Int = 10) {
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package a
|
||||
|
||||
class A {
|
||||
fun foo(s: String, x: Int = 10, y:Int = 20) {}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package usage
|
||||
|
||||
import a.A
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
A().foo("")
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
Cleaning output files:
|
||||
out/production/module1/META-INF/module1.kotlin_module
|
||||
out/production/module1/a/Module1_aKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module1/src/module1_a.kt
|
||||
End of files
|
||||
Cleaning output files:
|
||||
out/production/module2/META-INF/module2.kotlin_module
|
||||
out/production/module2/usage/Module2_usageKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module2/src/module2_usage.kt
|
||||
End of files
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
module1->
|
||||
module2->module1
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
package a
|
||||
|
||||
fun foo(s: String, x: Int = 10) {}
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
package a
|
||||
|
||||
fun foo(s: String, x: Int = 10, y:Int = 20) {}
|
||||
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
package usage
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
a.foo("")
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
Cleaning output files:
|
||||
out/production/module1/a/A.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module1/src/module1_a.kt
|
||||
End of files
|
||||
Cleaning output files:
|
||||
out/production/module2/META-INF/module2.kotlin_module
|
||||
out/production/module2/usage/Module2_usageKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module2/src/module2_usage.kt
|
||||
End of files
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
module1->
|
||||
module2->module1
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package a
|
||||
|
||||
class A {
|
||||
fun foo(x:Int = 10) {
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package a
|
||||
|
||||
class A {
|
||||
fun foo() {
|
||||
}
|
||||
}
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package usage
|
||||
|
||||
fun b(param: a.A) {
|
||||
param.foo()
|
||||
}
|
||||
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
Cleaning output files:
|
||||
out/production/module1/META-INF/module1.kotlin_module
|
||||
out/production/module1/a/Module1_aKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module1/src/module1_a.kt
|
||||
End of files
|
||||
Cleaning output files:
|
||||
out/production/module2/META-INF/module2.kotlin_module
|
||||
out/production/module2/usage/Module2_usageKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module2/src/module2_usage.kt
|
||||
End of files
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
module1->
|
||||
module2->module1
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
package a
|
||||
|
||||
fun foo(x: Int = 10) {}
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
package a
|
||||
|
||||
fun foo() {}
|
||||
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
package usage
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
a.foo()
|
||||
}
|
||||
Reference in New Issue
Block a user