Add multi-module JS IC tests with JPS

This commit is contained in:
Alexey Tsvetkov
2018-07-18 12:26:57 +03:00
parent 3227300f18
commit 11977cc1c1
238 changed files with 1617 additions and 172 deletions
@@ -0,0 +1,39 @@
================ Step #1 =================
Building module1
Cleaning output files:
out/production/module1/META-INF/module1.kotlin_module
out/production/module1/a/A.class
out/production/module1/a/AKt.class
out/production/module1/a/ClassAnnotation.class
out/production/module1/a/FileAnnotation.class
End of files
Compiling files:
module1/src/a.kt
End of files
Marked as dirty by Kotlin:
module2/src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Exit code: NOTHING_DONE
------------------------------------------
Building module2
Cleaning output files:
out/production/module2/META-INF/module2.kotlin_module
out/production/module2/b/B.class
out/production/module2/b/BKt.class
End of files
Compiling files:
module2/src/b.kt
End of files
Exit code: ABORT
------------------------------------------
COMPILATION FAILED
Cannot access 'FileAnnotation': it is internal in 'a'
Cannot access 'A': it is internal in 'a'
Cannot access 'FileAnnotation': it is internal in 'a'
Cannot access 'ClassAnnotation': it is internal in 'a'
Cannot access 'ClassAnnotation': it is internal in 'a'
'public' function exposes its 'internal' parameter type A
Cannot access 'A': it is internal in 'a'
Cannot access 'a': it is internal in 'a'
@@ -0,0 +1,2 @@
module1->
module2->module1
@@ -0,0 +1,37 @@
================ Step #1 =================
Building module1
Cleaning output files:
out/production/module1/module1.js
out/production/module1/module1.meta.js
out/production/module1/module1/a/a.kjsm
End of files
Compiling files:
module1/src/a.kt
End of files
Marked as dirty by Kotlin:
module2/src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Exit code: NOTHING_DONE
------------------------------------------
Building module2
Cleaning output files:
out/production/module2/module2.js
out/production/module2/module2.meta.js
out/production/module2/module2/b/b.kjsm
End of files
Compiling files:
module2/src/b.kt
End of files
Exit code: ABORT
------------------------------------------
COMPILATION FAILED
Cannot access 'FileAnnotation': it is internal in 'a'
Cannot access 'A': it is internal in 'a'
Cannot access 'FileAnnotation': it is internal in 'a'
Cannot access 'ClassAnnotation': it is internal in 'a'
Cannot access 'ClassAnnotation': it is internal in 'a'
'public' function exposes its 'internal' parameter type A
Cannot access 'A': it is internal in 'a'
Cannot access 'a': it is internal in 'a'
@@ -0,0 +1,14 @@
package a
@Target(AnnotationTarget.FILE)
@Retention(AnnotationRetention.SOURCE)
annotation class FileAnnotation()
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.SOURCE)
annotation class ClassAnnotation()
class A
fun a() {
}
@@ -0,0 +1,15 @@
package a
@Target(AnnotationTarget.FILE)
@Retention(AnnotationRetention.SOURCE)
internal annotation class FileAnnotation()
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.SOURCE)
internal annotation class ClassAnnotation()
internal class A
internal fun a(): String {
return ":)"
}
@@ -0,0 +1,13 @@
@file:FileAnnotation
package b
import a.A
import a.FileAnnotation
import a.ClassAnnotation
@ClassAnnotation
class B
fun b(param: a.A) {
a.a()
}
@@ -0,0 +1,5 @@
package c
fun c() {
// This file doesn't use anything from module1, so it won't be recompiled after change
}