New J2K: add multi-file conversion tests from old j2k
This commit is contained in:
@@ -140,6 +140,7 @@ import org.jetbrains.kotlin.kapt.cli.test.AbstractArgumentParsingTest
|
|||||||
import org.jetbrains.kotlin.kapt.cli.test.AbstractKaptToolIntegrationTest
|
import org.jetbrains.kotlin.kapt.cli.test.AbstractKaptToolIntegrationTest
|
||||||
import org.jetbrains.kotlin.kapt3.test.AbstractClassFileToSourceStubConverterTest
|
import org.jetbrains.kotlin.kapt3.test.AbstractClassFileToSourceStubConverterTest
|
||||||
import org.jetbrains.kotlin.kapt3.test.AbstractKotlinKaptContextTest
|
import org.jetbrains.kotlin.kapt3.test.AbstractKotlinKaptContextTest
|
||||||
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterMultiFileTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterSingleFileTest
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterSingleFileTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinCopyPasteConversionTest
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinCopyPasteConversionTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractTextNewJavaToKotlinCopyPasteConversionTest
|
import org.jetbrains.kotlin.nj2k.AbstractTextNewJavaToKotlinCopyPasteConversionTest
|
||||||
@@ -1085,6 +1086,9 @@ fun main(args: Array<String>) {
|
|||||||
testClass<AbstractTextNewJavaToKotlinCopyPasteConversionTest> {
|
testClass<AbstractTextNewJavaToKotlinCopyPasteConversionTest> {
|
||||||
model("copyPastePlainText", pattern = """^([^\.]+)\.txt$""")
|
model("copyPastePlainText", pattern = """^([^\.]+)\.txt$""")
|
||||||
}
|
}
|
||||||
|
testClass<AbstractNewJavaToKotlinConverterMultiFileTest> {
|
||||||
|
model("multiFile", extension = null, recursive = false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testGroup("jps-plugin/jps-tests/test", "jps-plugin/testData") {
|
testGroup("jps-plugin/jps-tests/test", "jps-plugin/testData") {
|
||||||
|
|||||||
@@ -150,6 +150,7 @@ import org.jetbrains.kotlin.kapt.cli.test.AbstractArgumentParsingTest
|
|||||||
import org.jetbrains.kotlin.kapt.cli.test.AbstractKaptToolIntegrationTest
|
import org.jetbrains.kotlin.kapt.cli.test.AbstractKaptToolIntegrationTest
|
||||||
import org.jetbrains.kotlin.kapt3.test.AbstractClassFileToSourceStubConverterTest
|
import org.jetbrains.kotlin.kapt3.test.AbstractClassFileToSourceStubConverterTest
|
||||||
import org.jetbrains.kotlin.kapt3.test.AbstractKotlinKaptContextTest
|
import org.jetbrains.kotlin.kapt3.test.AbstractKotlinKaptContextTest
|
||||||
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterMultiFileTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterSingleFileTest
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterSingleFileTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinCopyPasteConversionTest
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinCopyPasteConversionTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractTextNewJavaToKotlinCopyPasteConversionTest
|
import org.jetbrains.kotlin.nj2k.AbstractTextNewJavaToKotlinCopyPasteConversionTest
|
||||||
@@ -1035,6 +1036,9 @@ fun main(args: Array<String>) {
|
|||||||
testClass<AbstractTextNewJavaToKotlinCopyPasteConversionTest> {
|
testClass<AbstractTextNewJavaToKotlinCopyPasteConversionTest> {
|
||||||
model("copyPastePlainText", pattern = """^([^\.]+)\.txt$""")
|
model("copyPastePlainText", pattern = """^([^\.]+)\.txt$""")
|
||||||
}
|
}
|
||||||
|
testClass<AbstractNewJavaToKotlinConverterMultiFileTest> {
|
||||||
|
model("multiFile", extension = null, recursive = false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testGroup("jps-plugin/jps-tests/test", "jps-plugin/testData") {
|
testGroup("jps-plugin/jps-tests/test", "jps-plugin/testData") {
|
||||||
|
|||||||
@@ -143,6 +143,7 @@ import org.jetbrains.kotlin.kapt.cli.test.AbstractArgumentParsingTest
|
|||||||
import org.jetbrains.kotlin.kapt.cli.test.AbstractKaptToolIntegrationTest
|
import org.jetbrains.kotlin.kapt.cli.test.AbstractKaptToolIntegrationTest
|
||||||
import org.jetbrains.kotlin.kapt3.test.AbstractClassFileToSourceStubConverterTest
|
import org.jetbrains.kotlin.kapt3.test.AbstractClassFileToSourceStubConverterTest
|
||||||
import org.jetbrains.kotlin.kapt3.test.AbstractKotlinKaptContextTest
|
import org.jetbrains.kotlin.kapt3.test.AbstractKotlinKaptContextTest
|
||||||
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterMultiFileTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterSingleFileTest
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterSingleFileTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinCopyPasteConversionTest
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinCopyPasteConversionTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractTextNewJavaToKotlinCopyPasteConversionTest
|
import org.jetbrains.kotlin.nj2k.AbstractTextNewJavaToKotlinCopyPasteConversionTest
|
||||||
@@ -1017,6 +1018,9 @@ fun main(args: Array<String>) {
|
|||||||
testClass<AbstractTextNewJavaToKotlinCopyPasteConversionTest> {
|
testClass<AbstractTextNewJavaToKotlinCopyPasteConversionTest> {
|
||||||
model("copyPastePlainText", pattern = """^([^\.]+)\.txt$""")
|
model("copyPastePlainText", pattern = """^([^\.]+)\.txt$""")
|
||||||
}
|
}
|
||||||
|
testClass<AbstractNewJavaToKotlinConverterMultiFileTest> {
|
||||||
|
model("multiFile", extension = null, recursive = false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* There is no jps in AS
|
/* There is no jps in AS
|
||||||
|
|||||||
@@ -143,6 +143,7 @@ import org.jetbrains.kotlin.kapt.cli.test.AbstractArgumentParsingTest
|
|||||||
import org.jetbrains.kotlin.kapt.cli.test.AbstractKaptToolIntegrationTest
|
import org.jetbrains.kotlin.kapt.cli.test.AbstractKaptToolIntegrationTest
|
||||||
import org.jetbrains.kotlin.kapt3.test.AbstractClassFileToSourceStubConverterTest
|
import org.jetbrains.kotlin.kapt3.test.AbstractClassFileToSourceStubConverterTest
|
||||||
import org.jetbrains.kotlin.kapt3.test.AbstractKotlinKaptContextTest
|
import org.jetbrains.kotlin.kapt3.test.AbstractKotlinKaptContextTest
|
||||||
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterMultiFileTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterSingleFileTest
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterSingleFileTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinCopyPasteConversionTest
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinCopyPasteConversionTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractTextNewJavaToKotlinCopyPasteConversionTest
|
import org.jetbrains.kotlin.nj2k.AbstractTextNewJavaToKotlinCopyPasteConversionTest
|
||||||
@@ -1017,6 +1018,9 @@ fun main(args: Array<String>) {
|
|||||||
testClass<AbstractTextNewJavaToKotlinCopyPasteConversionTest> {
|
testClass<AbstractTextNewJavaToKotlinCopyPasteConversionTest> {
|
||||||
model("copyPastePlainText", pattern = """^([^\.]+)\.txt$""")
|
model("copyPastePlainText", pattern = """^([^\.]+)\.txt$""")
|
||||||
}
|
}
|
||||||
|
testClass<AbstractNewJavaToKotlinConverterMultiFileTest> {
|
||||||
|
model("multiFile", extension = null, recursive = false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* There is no jps in AS
|
/* There is no jps in AS
|
||||||
|
|||||||
@@ -143,6 +143,7 @@ import org.jetbrains.kotlin.kapt.cli.test.AbstractArgumentParsingTest
|
|||||||
import org.jetbrains.kotlin.kapt.cli.test.AbstractKaptToolIntegrationTest
|
import org.jetbrains.kotlin.kapt.cli.test.AbstractKaptToolIntegrationTest
|
||||||
import org.jetbrains.kotlin.kapt3.test.AbstractClassFileToSourceStubConverterTest
|
import org.jetbrains.kotlin.kapt3.test.AbstractClassFileToSourceStubConverterTest
|
||||||
import org.jetbrains.kotlin.kapt3.test.AbstractKotlinKaptContextTest
|
import org.jetbrains.kotlin.kapt3.test.AbstractKotlinKaptContextTest
|
||||||
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterMultiFileTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterSingleFileTest
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinConverterSingleFileTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinCopyPasteConversionTest
|
import org.jetbrains.kotlin.nj2k.AbstractNewJavaToKotlinCopyPasteConversionTest
|
||||||
import org.jetbrains.kotlin.nj2k.AbstractTextNewJavaToKotlinCopyPasteConversionTest
|
import org.jetbrains.kotlin.nj2k.AbstractTextNewJavaToKotlinCopyPasteConversionTest
|
||||||
@@ -1017,6 +1018,9 @@ fun main(args: Array<String>) {
|
|||||||
testClass<AbstractTextNewJavaToKotlinCopyPasteConversionTest> {
|
testClass<AbstractTextNewJavaToKotlinCopyPasteConversionTest> {
|
||||||
model("copyPastePlainText", pattern = """^([^\.]+)\.txt$""")
|
model("copyPastePlainText", pattern = """^([^\.]+)\.txt$""")
|
||||||
}
|
}
|
||||||
|
testClass<AbstractNewJavaToKotlinConverterMultiFileTest> {
|
||||||
|
model("multiFile", extension = null, recursive = false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* There is no jps in AS
|
/* There is no jps in AS
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ abstract class AbstractJavaToKotlinConverterMultiFileTest : AbstractJavaToKotlin
|
|||||||
val (results, externalCodeProcessor) = converter.filesToKotlin(psiFilesToConvert, J2kPostProcessor(formatCode = true))
|
val (results, externalCodeProcessor) = converter.filesToKotlin(psiFilesToConvert, J2kPostProcessor(formatCode = true))
|
||||||
|
|
||||||
val process = externalCodeProcessor?.prepareWriteOperation(EmptyProgressIndicator())
|
val process = externalCodeProcessor?.prepareWriteOperation(EmptyProgressIndicator())
|
||||||
project.executeWriteCommand("") { process?.invoke() }
|
project.executeWriteCommand("") { process?.invoke(emptyList()) }
|
||||||
|
|
||||||
fun expectedResultFile(i: Int) = File(filesToConvert[i].path.replace(".java", ".kt"))
|
fun expectedResultFile(i: Int) = File(filesToConvert[i].path.replace(".java", ".kt"))
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public class Some {
|
||||||
|
@SomeAnnotation(some = "Foo", same = 0)
|
||||||
|
public void foo() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@SomeAnnotation(some = {"Bar", "Buz"}, same = {1, 2})
|
||||||
|
public void bar() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
class Some {
|
||||||
|
@SomeAnnotation(some = ["Foo"], same = [0])
|
||||||
|
fun foo() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@SomeAnnotation(some = ["Bar", "Buz"], same = [1, 2])
|
||||||
|
fun bar() {
|
||||||
|
}
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target({ElementType.TYPE, ElementType.METHOD})
|
||||||
|
public @interface SomeAnnotation {
|
||||||
|
String[] some() default {};
|
||||||
|
int[] same() default {};
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target({ElementType.TYPE, ElementType.METHOD})
|
||||||
|
public @interface SomeAnnotation {
|
||||||
|
String[] some() default {};
|
||||||
|
int[] same() default {};
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public class JavaClass {
|
||||||
|
public int field = 0;
|
||||||
|
|
||||||
|
protected int myProperty = 0;
|
||||||
|
|
||||||
|
public int getProperty() {
|
||||||
|
return myProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final String NAME = "Bar";
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
open class JavaClass {
|
||||||
|
@JvmField
|
||||||
|
var field = 0
|
||||||
|
var property = 0
|
||||||
|
protected set
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val NAME = "Bar"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public class C extends JavaClass {
|
||||||
|
public void foo(JavaClass javaClass) {
|
||||||
|
javaClass.field++;
|
||||||
|
--javaClass.field;
|
||||||
|
myProperty = javaClass.field;
|
||||||
|
javaClass.field -= field;
|
||||||
|
field = myProperty;
|
||||||
|
field *= 2;
|
||||||
|
field = field * 2;
|
||||||
|
|
||||||
|
String s = JavaClass.NAME;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public class C extends JavaClass {
|
||||||
|
public void foo(JavaClass javaClass) {
|
||||||
|
javaClass.field++;
|
||||||
|
--javaClass.field;
|
||||||
|
property = javaClass.field;
|
||||||
|
javaClass.field -= field;
|
||||||
|
field = property;
|
||||||
|
field *= 2;
|
||||||
|
field = field * 2;
|
||||||
|
|
||||||
|
String s = JavaClass.NAME;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
class C : JavaClass() {
|
||||||
|
public fun foo(javaClass: JavaClass) {
|
||||||
|
javaClass.field++
|
||||||
|
myProperty = javaClass.field
|
||||||
|
field = myProperty
|
||||||
|
field *= 2
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
class C : JavaClass() {
|
||||||
|
public fun foo(javaClass: JavaClass) {
|
||||||
|
javaClass.field++
|
||||||
|
property = javaClass.field
|
||||||
|
field = property
|
||||||
|
field *= 2
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public class Stage {
|
||||||
|
public void context(Acceptor acceptor) {
|
||||||
|
acceptor.acceptFace(new Face() {
|
||||||
|
@Override
|
||||||
|
public void subject(String p) {
|
||||||
|
System.out.println(p);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
acceptor.setFace(new Face() {
|
||||||
|
@Override
|
||||||
|
public void subject(String p) {
|
||||||
|
System.out.println(p);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
class Stage {
|
||||||
|
fun context(acceptor: Acceptor) {
|
||||||
|
acceptor.acceptFace { p -> println(p) }
|
||||||
|
acceptor.face = Face { p -> println(p) }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public class Acceptor {
|
||||||
|
private Face face;
|
||||||
|
|
||||||
|
public Face getFace() {
|
||||||
|
return face;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFace(Face face) {
|
||||||
|
this.face = face;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void acceptFace(Face face) {
|
||||||
|
}
|
||||||
|
}
|
||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public class Acceptor {
|
||||||
|
private Face face;
|
||||||
|
|
||||||
|
public Face getFace() {
|
||||||
|
return face;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFace(Face face) {
|
||||||
|
this.face = face;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void acceptFace(Face face) {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public interface Face {
|
||||||
|
void subject(String p);
|
||||||
|
}
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public interface Face {
|
||||||
|
void subject(String p);
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public class AAA {
|
||||||
|
private int x = 42;
|
||||||
|
|
||||||
|
public int getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setX(int x) {
|
||||||
|
this.x = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void foo() {
|
||||||
|
setX(getX() + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void bar(B b) {
|
||||||
|
System.out.println(b.getYY());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
// ERROR: Unresolved reference: yy
|
||||||
|
package test
|
||||||
|
|
||||||
|
class AAA {
|
||||||
|
var x = 42
|
||||||
|
|
||||||
|
fun foo() {
|
||||||
|
x = x + 1
|
||||||
|
}
|
||||||
|
|
||||||
|
fun bar(b: B) {
|
||||||
|
println(b.yy)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public class B {
|
||||||
|
void foo(AAA a) {
|
||||||
|
a.setX(a.getX() + 1);
|
||||||
|
y += "a";
|
||||||
|
}
|
||||||
|
|
||||||
|
private String y = "";
|
||||||
|
|
||||||
|
public String getYY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
class B {
|
||||||
|
fun foo(a: AAA) {
|
||||||
|
a.x = a.x + 1
|
||||||
|
yY += "a"
|
||||||
|
}
|
||||||
|
|
||||||
|
var yY = ""
|
||||||
|
private set
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import test.AAA
|
||||||
|
|
||||||
|
fun foo1(a: AAA) {
|
||||||
|
a.setX(a.getX() + 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun foo2(a: AAA?) {
|
||||||
|
a?.setX((a?.getX() ?: 0) + 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun AAA.foo() {
|
||||||
|
setX(getX() + 1)
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import test.AAA
|
||||||
|
|
||||||
|
fun foo1(a: AAA) {
|
||||||
|
a.x = a.x + 1
|
||||||
|
}
|
||||||
|
|
||||||
|
fun foo2(a: AAA?) {
|
||||||
|
a?.x = (a?.x ?: 0) + 1
|
||||||
|
}
|
||||||
|
|
||||||
|
fun AAA.foo() {
|
||||||
|
x = x + 1
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
class JavaClass {
|
||||||
|
void foo(AAA a) {
|
||||||
|
a.setX(a.getX() + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
class JavaClass {
|
||||||
|
void foo(AAA a) {
|
||||||
|
a.x = a.x + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
import test.Bar;
|
||||||
|
|
||||||
|
public class Foo {
|
||||||
|
public static void foo() {
|
||||||
|
Object o = Bar.SET;
|
||||||
|
}
|
||||||
|
}
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
import test.Bar
|
||||||
|
|
||||||
|
object Foo {
|
||||||
|
fun foo() {
|
||||||
|
val o: Any = Bar.SET
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public interface Bar {
|
||||||
|
Set<String> SET = new HashSet<String>() { };
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public interface Bar {
|
||||||
|
Set<String> SET = new HashSet<String>() { };
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
|
||||||
|
public class SomeServiceUsage {
|
||||||
|
|
||||||
|
public SomeService getService() {
|
||||||
|
return SomeService.getInstanceNotNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
public SomeService getServiceNullable() {
|
||||||
|
return SomeService.getInstanceNullable();
|
||||||
|
}
|
||||||
|
|
||||||
|
// elvis
|
||||||
|
public SomeService getServiceNotNullByDataFlow() {
|
||||||
|
SomeService s = SomeService.getInstanceNullable();
|
||||||
|
return s == null ? SomeService.getInstanceNotNull() : s;
|
||||||
|
}
|
||||||
|
|
||||||
|
// nullable, bang-bang
|
||||||
|
public String aString1() {
|
||||||
|
return getServiceNullable().nullableString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// nullable
|
||||||
|
public String aString2() {
|
||||||
|
return getService().nullableString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// not nullable
|
||||||
|
public String aString3() {
|
||||||
|
return getService().notNullString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// nullable, no bang-bang
|
||||||
|
public String aString4() {
|
||||||
|
return getServiceNotNullByDataFlow().nullableString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// not nullable, no bang-bang
|
||||||
|
public String aString5() {
|
||||||
|
return getServiceNotNullByDataFlow().notNullString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// nullable, safe-call
|
||||||
|
public String aString6() {
|
||||||
|
SomeService s = getServiceNullable();
|
||||||
|
if (s != null) {
|
||||||
|
return s.nullableString();
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
class SomeServiceUsage {
|
||||||
|
val service: SomeService
|
||||||
|
get() = SomeService.getInstanceNotNull()
|
||||||
|
|
||||||
|
val serviceNullable: SomeService
|
||||||
|
get() = SomeService.getInstanceNullable()
|
||||||
|
|
||||||
|
// elvis
|
||||||
|
val serviceNotNullByDataFlow: SomeService
|
||||||
|
get() {
|
||||||
|
val s = SomeService.getInstanceNullable()
|
||||||
|
return s ?: SomeService.getInstanceNotNull()
|
||||||
|
}
|
||||||
|
|
||||||
|
// nullable, bang-bang
|
||||||
|
fun aString1(): String {
|
||||||
|
return serviceNullable.nullableString()
|
||||||
|
}
|
||||||
|
|
||||||
|
// nullable
|
||||||
|
fun aString2(): String {
|
||||||
|
return service.nullableString()
|
||||||
|
}
|
||||||
|
|
||||||
|
// not nullable
|
||||||
|
fun aString3(): String {
|
||||||
|
return service.notNullString()
|
||||||
|
}
|
||||||
|
|
||||||
|
// nullable, no bang-bang
|
||||||
|
fun aString4(): String {
|
||||||
|
return serviceNotNullByDataFlow.nullableString()
|
||||||
|
}
|
||||||
|
|
||||||
|
// not nullable, no bang-bang
|
||||||
|
fun aString5(): String {
|
||||||
|
return serviceNotNullByDataFlow.notNullString()
|
||||||
|
}
|
||||||
|
|
||||||
|
// nullable, safe-call
|
||||||
|
fun aString6(): String? {
|
||||||
|
val s = serviceNullable
|
||||||
|
return s?.nullableString()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
public class SomeService {
|
||||||
|
|
||||||
|
public static SomeService getInstanceNotNull() {
|
||||||
|
return new SomeService();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SomeService getInstanceNullable() {
|
||||||
|
if (Math.random() > 0.5)
|
||||||
|
return null;
|
||||||
|
return new SomeService();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String nullableString() {
|
||||||
|
if (Math.random() < 0.5)
|
||||||
|
return null;
|
||||||
|
return Math.random() + "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String notNullString() {
|
||||||
|
String s = nullableString();
|
||||||
|
if (s != null)
|
||||||
|
return s;
|
||||||
|
return "null";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
public class SomeService {
|
||||||
|
|
||||||
|
public static SomeService getInstanceNotNull() {
|
||||||
|
return new SomeService();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SomeService getInstanceNullable() {
|
||||||
|
if (Math.random() > 0.5)
|
||||||
|
return null;
|
||||||
|
return new SomeService();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String nullableString() {
|
||||||
|
if (Math.random() < 0.5)
|
||||||
|
return null;
|
||||||
|
return Math.random() + "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String notNullString() {
|
||||||
|
String s = nullableString();
|
||||||
|
if (s != null)
|
||||||
|
return s;
|
||||||
|
return "null";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public class BaseOtherPackage {
|
||||||
|
protected BaseOtherPackage() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void foo() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected int i = 1;
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
open class BaseOtherPackage protected constructor() {
|
||||||
|
protected fun foo() {}
|
||||||
|
protected var i = 1
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package test2;
|
||||||
|
|
||||||
|
import test.*;
|
||||||
|
|
||||||
|
public class DerivedOtherPackage extends BaseOtherPackage {
|
||||||
|
protected DerivedOtherPackage() {
|
||||||
|
super();
|
||||||
|
foo();
|
||||||
|
int i = this.i;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package test2
|
||||||
|
|
||||||
|
import test.BaseOtherPackage
|
||||||
|
|
||||||
|
class DerivedOtherPackage protected constructor() : BaseOtherPackage() {
|
||||||
|
init {
|
||||||
|
foo()
|
||||||
|
val i = i
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package test3
|
||||||
|
|
||||||
|
import test.*
|
||||||
|
|
||||||
|
class DerivedOtherPackageKotlin : BaseOtherPackage() {
|
||||||
|
init {
|
||||||
|
foo()
|
||||||
|
val i = this.i
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package test3
|
||||||
|
|
||||||
|
import test.*
|
||||||
|
|
||||||
|
class DerivedOtherPackageKotlin : BaseOtherPackage() {
|
||||||
|
init {
|
||||||
|
foo()
|
||||||
|
val i = this.i
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
class ClassWithStatics {
|
||||||
|
public void instanceMethod() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void staticMethod(int p) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int staticField = 1;
|
||||||
|
public static int staticNonFinalField = 1;
|
||||||
|
|
||||||
|
protected static int ourValue = 0;
|
||||||
|
|
||||||
|
public static int getValue() {
|
||||||
|
return ourValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setValue(int value) {
|
||||||
|
ourValue = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
internal open class ClassWithStatics {
|
||||||
|
fun instanceMethod() {}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
@JvmStatic
|
||||||
|
fun staticMethod(p: Int) {}
|
||||||
|
const val staticField = 1
|
||||||
|
@JvmField
|
||||||
|
var staticNonFinalField = 1
|
||||||
|
var value = 0
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
class C {
|
||||||
|
void foo(ClassWithStatics c) {
|
||||||
|
ClassWithStatics.staticMethod(ClassWithStatics.staticField);
|
||||||
|
c.instanceMethod();
|
||||||
|
ClassWithStatics.staticNonFinalField += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void methodReferences() {
|
||||||
|
Object staticMethod = ClassWithStatics::staticMethod;
|
||||||
|
Object instanceMethod = ClassWithStatics::instanceMethod;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class D extends ClassWithStatics {
|
||||||
|
void foo() {
|
||||||
|
staticMethod(staticField);
|
||||||
|
ourValue *= 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
class C {
|
||||||
|
void foo(ClassWithStatics c) {
|
||||||
|
ClassWithStatics.staticMethod(ClassWithStatics.staticField);
|
||||||
|
c.instanceMethod();
|
||||||
|
ClassWithStatics.staticNonFinalField += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void methodReferences() {
|
||||||
|
Object staticMethod = ClassWithStatics::staticMethod;
|
||||||
|
Object instanceMethod = ClassWithStatics::instanceMethod;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class D extends ClassWithStatics {
|
||||||
|
void foo() {
|
||||||
|
staticMethod(staticField);
|
||||||
|
value *= 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
fun foo() {
|
||||||
|
ClassWithStatics.staticMethod(ClassWithStatics.staticField)
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
fun foo() {
|
||||||
|
ClassWithStatics.staticMethod(ClassWithStatics.staticField)
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public class PureUtils {
|
||||||
|
public static void foo1(int p) {}
|
||||||
|
public static int foo2() { return 1; }
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
object PureUtils {
|
||||||
|
@JvmStatic
|
||||||
|
fun foo1(p: Int) {}
|
||||||
|
@JvmStatic
|
||||||
|
fun foo2(): Int {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
public class Utils {
|
||||||
|
public static void foo1(int p) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int foo2() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int staticField = 1;
|
||||||
|
}
|
||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
object Utils {
|
||||||
|
@JvmStatic
|
||||||
|
fun foo1(p: Int) {}
|
||||||
|
@JvmStatic
|
||||||
|
fun foo2(): Int {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmField
|
||||||
|
var staticField = 1
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class C {
|
||||||
|
void foo() {
|
||||||
|
Utils.foo1(Utils.staticField);
|
||||||
|
Utils.staticField += Utils.foo2();
|
||||||
|
PureUtils.foo1(PureUtils.foo2());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package test;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class C {
|
||||||
|
void foo() {
|
||||||
|
Utils.foo1(Utils.staticField);
|
||||||
|
Utils.staticField += Utils.foo2();
|
||||||
|
PureUtils.foo1(PureUtils.foo2());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
fun foo() {
|
||||||
|
Utils.foo1(Utils.staticField)
|
||||||
|
PureUtils.foo1(PureUtils.foo2())
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
fun foo() {
|
||||||
|
Utils.foo1(Utils.staticField)
|
||||||
|
PureUtils.foo1(PureUtils.foo2())
|
||||||
|
}
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.nj2k
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiJavaFile
|
||||||
|
import com.intellij.psi.PsiManager
|
||||||
|
import org.jetbrains.kotlin.idea.formatter.commitAndUnblockDocument
|
||||||
|
import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices
|
||||||
|
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||||
|
import org.jetbrains.kotlin.idea.test.dumpTextWithErrors
|
||||||
|
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||||
|
import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterTest
|
||||||
|
import org.jetbrains.kotlin.j2k.ConverterSettings
|
||||||
|
import org.jetbrains.kotlin.nj2k.postProcessing.NewJ2kPostProcessor
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
abstract class AbstractNewJavaToKotlinConverterMultiFileTest : AbstractJavaToKotlinConverterTest() {
|
||||||
|
fun doTest(dirPath: String) {
|
||||||
|
val psiManager = PsiManager.getInstance(project)
|
||||||
|
val filesToConvert = File(dirPath).listFiles { _, name -> name.endsWith(".java") }!!
|
||||||
|
val psiFilesToConvert = filesToConvert.map { javaFile ->
|
||||||
|
val virtualFile = addFile(javaFile, "test")
|
||||||
|
psiManager.findFile(virtualFile) as PsiJavaFile
|
||||||
|
}
|
||||||
|
|
||||||
|
val externalFiles = File(dirPath + File.separator + "external").listFiles { _, name ->
|
||||||
|
name.endsWith(".java") || name.endsWith(".kt")
|
||||||
|
}!!
|
||||||
|
|
||||||
|
val externalPsiFiles = externalFiles.map { file ->
|
||||||
|
val virtualFile = addFile(file, "test")
|
||||||
|
val psiFile = psiManager.findFile(virtualFile)!!
|
||||||
|
assert(psiFile is PsiJavaFile || psiFile is KtFile)
|
||||||
|
psiFile
|
||||||
|
}
|
||||||
|
|
||||||
|
val converter = NewJavaToKotlinConverter(project, module, ConverterSettings.defaultSettings, IdeaJavaToKotlinServices)
|
||||||
|
val (results, externalCodeProcessor) = converter.filesToKotlin(
|
||||||
|
psiFilesToConvert,
|
||||||
|
NewJ2kPostProcessor()
|
||||||
|
)
|
||||||
|
val process = externalCodeProcessor?.prepareWriteOperation(progress = null)
|
||||||
|
|
||||||
|
fun expectedResultFile(i: Int) = File(filesToConvert[i].path.replace(".java", ".kt"))
|
||||||
|
|
||||||
|
val resultFiles = psiFilesToConvert.mapIndexed { i, javaFile ->
|
||||||
|
deleteFile(javaFile.virtualFile)
|
||||||
|
val virtualFile = addFile(results[i], expectedResultFile(i).name, "test")
|
||||||
|
psiManager.findFile(virtualFile) as KtFile
|
||||||
|
}
|
||||||
|
|
||||||
|
resultFiles.forEach { it.commitAndUnblockDocument() }
|
||||||
|
|
||||||
|
project.executeWriteCommand("") {
|
||||||
|
process?.invoke(resultFiles)
|
||||||
|
}
|
||||||
|
|
||||||
|
for ((i, kotlinFile) in resultFiles.withIndex()) {
|
||||||
|
KotlinTestUtils.assertEqualsToFile(expectedResultFile(i), kotlinFile.dumpTextWithErrors())
|
||||||
|
}
|
||||||
|
|
||||||
|
for ((externalFile, externalPsiFile) in externalFiles.zip(externalPsiFiles)) {
|
||||||
|
val expectedFile = File(externalFile.path + ".expected")
|
||||||
|
val resultText = when (externalPsiFile) {
|
||||||
|
is KtFile -> externalPsiFile.dumpTextWithErrors()
|
||||||
|
else -> externalPsiFile.text
|
||||||
|
}
|
||||||
|
KotlinTestUtils.assertEqualsToFile(expectedFile, resultText)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
|
||||||
|
}
|
||||||
+76
@@ -0,0 +1,76 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.nj2k;
|
||||||
|
|
||||||
|
import com.intellij.testFramework.TestDataPath;
|
||||||
|
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
|
||||||
|
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
||||||
|
import org.jetbrains.kotlin.test.TargetBackend;
|
||||||
|
import org.jetbrains.kotlin.test.TestMetadata;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
|
||||||
|
@SuppressWarnings("all")
|
||||||
|
@TestMetadata("nj2k/testData/multiFile")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public class NewJavaToKotlinConverterMultiFileTestGenerated extends AbstractNewJavaToKotlinConverterMultiFileTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInMultiFile() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("nj2k/testData/multiFile"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("AnnotationWithArrayParameter")
|
||||||
|
public void testAnnotationWithArrayParameter() throws Exception {
|
||||||
|
runTest("nj2k/testData/multiFile/AnnotationWithArrayParameter/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("FieldToProperty")
|
||||||
|
public void testFieldToProperty() throws Exception {
|
||||||
|
runTest("nj2k/testData/multiFile/FieldToProperty/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("FunctionalInterfaceAcceptor")
|
||||||
|
public void testFunctionalInterfaceAcceptor() throws Exception {
|
||||||
|
runTest("nj2k/testData/multiFile/FunctionalInterfaceAcceptor/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("GetterAndSetterUsages")
|
||||||
|
public void testGetterAndSetterUsages() throws Exception {
|
||||||
|
runTest("nj2k/testData/multiFile/GetterAndSetterUsages/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("KT11952")
|
||||||
|
public void testKT11952() throws Exception {
|
||||||
|
runTest("nj2k/testData/multiFile/KT11952/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("NullabilityByDFa")
|
||||||
|
public void testNullabilityByDFa() throws Exception {
|
||||||
|
runTest("nj2k/testData/multiFile/NullabilityByDFa/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("ProtectedVisibility")
|
||||||
|
public void testProtectedVisibility() throws Exception {
|
||||||
|
runTest("nj2k/testData/multiFile/ProtectedVisibility/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("ToCompanionObject")
|
||||||
|
public void testToCompanionObject() throws Exception {
|
||||||
|
runTest("nj2k/testData/multiFile/ToCompanionObject/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("ToObject")
|
||||||
|
public void testToObject() throws Exception {
|
||||||
|
runTest("nj2k/testData/multiFile/ToObject/");
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user