Add IC scope expansion tests

#KT-13677
  #KT-28233
This commit is contained in:
Alexey Tsvetkov
2019-09-02 06:21:37 +03:00
parent b979be701e
commit c912f76d6f
16 changed files with 110 additions and 0 deletions
@@ -891,4 +891,53 @@ public class IncrementalJsKlibCompilerWithScopeExpansionRunnerTestGenerated exte
}
}
}
@TestMetadata("jps-plugin/testData/incremental/scopeExpansion")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class ScopeExpansion extends AbstractIncrementalJsKlibCompilerWithScopeExpansionRunnerTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
}
public void testAllFilesPresentInScopeExpansion() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("jps-plugin/testData/incremental/scopeExpansion"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, true);
}
@TestMetadata("changeTypeAliasAndUsage")
public void testChangeTypeAliasAndUsage() throws Exception {
runTest("jps-plugin/testData/incremental/scopeExpansion/changeTypeAliasAndUsage/");
}
@TestMetadata("protectedBecomesPublicAccessedTroughChild")
public void testProtectedBecomesPublicAccessedTroughChild() throws Exception {
runTest("jps-plugin/testData/incremental/scopeExpansion/protectedBecomesPublicAccessedTroughChild/");
}
@TestMetadata("jps-plugin/testData/incremental/scopeExpansion/changeTypeAliasAndUsage")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class ChangeTypeAliasAndUsage extends AbstractIncrementalJsKlibCompilerWithScopeExpansionRunnerTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
}
public void testAllFilesPresentInChangeTypeAliasAndUsage() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("jps-plugin/testData/incremental/scopeExpansion/changeTypeAliasAndUsage"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, true);
}
}
@TestMetadata("jps-plugin/testData/incremental/scopeExpansion/protectedBecomesPublicAccessedTroughChild")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class ProtectedBecomesPublicAccessedTroughChild extends AbstractIncrementalJsKlibCompilerWithScopeExpansionRunnerTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
}
public void testAllFilesPresentInProtectedBecomesPublicAccessedTroughChild() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("jps-plugin/testData/incremental/scopeExpansion/protectedBecomesPublicAccessedTroughChild"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, true);
}
}
}
}
@@ -1234,6 +1234,7 @@ fun main(args: Array<String>) {
model("incremental/pureKotlin", extension = null, recursive = false)
model("incremental/classHierarchyAffected", extension = null, recursive = false)
model("incremental/js", extension = null, excludeParentDirs = true)
model("incremental/scopeExpansion", extension = null, excludeParentDirs = true)
}
testClass<AbstractIncrementalJsCompilerRunnerWithFriendModulesDisabledTest> {
@@ -0,0 +1,3 @@
interface Foo {
val value: TypeAlias
}
@@ -0,0 +1,4 @@
class FooImpl : Foo {
override val value: TypeAlias
get() = "0"
}
@@ -0,0 +1,4 @@
class FooImpl : Foo {
override val value: TypeAlias
get() = 1
}
@@ -0,0 +1 @@
typealias TypeAlias = String
@@ -0,0 +1 @@
typealias TypeAlias = Int
@@ -0,0 +1,9 @@
================ Step #1 =================
Compiling files:
src/Foo.kt
src/FooImpl.kt
src/TypeAlias.kt
End of files
Exit code: OK
------------------------------------------
@@ -0,0 +1 @@
fun dummy() {}
@@ -0,0 +1,5 @@
package test
open class A {
protected open fun foo(): Int = 0
}
@@ -0,0 +1,5 @@
package test
open class A {
open fun foo(): Int = 0
}
@@ -0,0 +1,5 @@
package test
open class B : A() {
override fun foo(): Int = 1
}
@@ -0,0 +1,9 @@
================ Step #1 =================
Compiling files:
src/a.kt
src/b.kt
src/usage.kt
End of files
Exit code: OK
------------------------------------------
@@ -0,0 +1,3 @@
package other
fun other() = "other"
@@ -0,0 +1,5 @@
package test
fun main(args: Array<String>) {
}
@@ -0,0 +1,5 @@
package test
fun main(args: Array<String>) {
B().foo()
}