Fix incremental compilation for delegated property with inline accessor

Original commit: a22e15449d
This commit is contained in:
Alexey Tsvetkov
2015-09-07 20:19:20 +03:00
parent 3c10ad29a6
commit 76f80a44b6
17 changed files with 162 additions and 0 deletions
@@ -239,6 +239,18 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest {
doTest(fileName);
}
@TestMetadata("delegatedPropertyInlineExtensionAccessor")
public void testDelegatedPropertyInlineExtensionAccessor() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/delegatedPropertyInlineExtensionAccessor/");
doTest(fileName);
}
@TestMetadata("delegatedPropertyInlineMethodAccessor")
public void testDelegatedPropertyInlineMethodAccessor() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/delegatedPropertyInlineMethodAccessor/");
doTest(fileName);
}
@TestMetadata("dependencyClassReferenced")
public void testDependencyClassReferenced() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/dependencyClassReferenced/");
@@ -0,0 +1,7 @@
package usage
import inline.*
class UsageVal {
val x: Int by Inline()
}
@@ -0,0 +1,7 @@
package usage
import inline.*
class UsageVar {
var x: Int by Inline()
}
@@ -0,0 +1,32 @@
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/inline/InlineGetKt.class
out/production/module/inline/InlinePackage.class
End of files
Compiling files:
src/inlineGet.kt
End of files
Cleaning output files:
out/production/module/usage/UsageVal.class
out/production/module/usage/UsageVar.class
End of files
Compiling files:
src/UsageVal.kt
src/UsageVar.kt
End of files
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/inline/InlinePackage.class
out/production/module/inline/InlineSetKt.class
End of files
Compiling files:
src/inlineSet.kt
End of files
Cleaning output files:
out/production/module/usage/UsageVar.class
End of files
Compiling files:
src/UsageVar.kt
End of files
@@ -0,0 +1,3 @@
package inline
class Inline
@@ -0,0 +1,5 @@
package inline
inline fun Inline.get(receiver: Any?, prop: PropertyMetadata): Int {
return 0
}
@@ -0,0 +1,5 @@
package inline
inline fun Inline.get(receiver: Any?, prop: PropertyMetadata): Int {
return 1
}
@@ -0,0 +1,5 @@
package inline
inline fun Inline.set(receiver: Any?, prop: PropertyMetadata, value: Int) {
println(value)
}
@@ -0,0 +1,5 @@
package inline
inline fun Inline.set(receiver: Any?, prop: PropertyMetadata, value: Int) {
println(value * 2)
}
@@ -0,0 +1,3 @@
package usage
fun other() {}
@@ -0,0 +1,7 @@
package usage
import inline.Inline
class UsageVal {
val x: Int by Inline()
}
@@ -0,0 +1,7 @@
package usage
import inline.Inline
class UsageVar {
var x: Int by Inline()
}
@@ -0,0 +1,28 @@
Cleaning output files:
out/production/module/inline/Inline.class
End of files
Compiling files:
src/inline.kt
End of files
Cleaning output files:
out/production/module/usage/UsageVal.class
out/production/module/usage/UsageVar.class
End of files
Compiling files:
src/UsageVal.kt
src/UsageVar.kt
End of files
Cleaning output files:
out/production/module/inline/Inline.class
End of files
Compiling files:
src/inline.kt
End of files
Cleaning output files:
out/production/module/usage/UsageVar.class
End of files
Compiling files:
src/UsageVar.kt
End of files
@@ -0,0 +1,11 @@
package inline
class Inline {
inline fun get(receiver: Any?, prop: PropertyMetadata): Int {
return 0
}
inline fun set(receiver: Any?, prop: PropertyMetadata, value: Int) {
println(value)
}
}
@@ -0,0 +1,11 @@
package inline
class Inline {
inline fun get(receiver: Any?, prop: PropertyMetadata): Int {
return 1
}
inline fun set(receiver: Any?, prop: PropertyMetadata, value: Int) {
println(value)
}
}
@@ -0,0 +1,11 @@
package inline
class Inline {
inline fun get(receiver: Any?, prop: PropertyMetadata): Int {
return 1
}
inline fun set(receiver: Any?, prop: PropertyMetadata, value: Int) {
println(value * 2)
}
}
@@ -0,0 +1,3 @@
package usage
fun other() {}