FIR: add initial JSR 305 tests for Java type enhancements
This commit is contained in:
@@ -0,0 +1,10 @@
|
|||||||
|
@R|java/lang/annotation/Documented|() @R|javax/annotation/meta/TypeQualifierNickname|() @R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.NEVER>#()) @R|java/lang/annotation/Retention|(<Strange Java enum value: java/lang/annotation/RetentionPolicy.RUNTIME>#()) public abstract annotation class MyNullable : R|java/lang/annotation/Annotation| {
|
||||||
|
}
|
||||||
|
public open class NonNullNever : R|java/lang/Object| {
|
||||||
|
@R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.NEVER>#()) public open property field(var): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
public get(): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
public set(value: R|ft<kotlin/String, kotlin/String>|): kotlin/Unit
|
||||||
|
|
||||||
|
@R|MyNullable|() public open operator function foo(@R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.NEVER>#()) x: R|ft<kotlin/String, kotlin/String>|, @R|MyNullable|() y: R|ft<kotlin/CharSequence, kotlin/CharSequence>|): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
// FOREIGN_ANNOTATIONS
|
||||||
|
|
||||||
|
// FILE: MyNullable.java
|
||||||
|
|
||||||
|
import javax.annotation.*;
|
||||||
|
import java.lang.annotation.Documented;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
|
||||||
|
import javax.annotation.meta.TypeQualifierNickname;
|
||||||
|
import javax.annotation.meta.When;
|
||||||
|
|
||||||
|
@Documented
|
||||||
|
@TypeQualifierNickname
|
||||||
|
@Nonnull(when = When.NEVER)
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface MyNullable {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: NonNullNever.java
|
||||||
|
|
||||||
|
import javax.annotation.*;
|
||||||
|
import javax.annotation.meta.When;
|
||||||
|
|
||||||
|
public class NonNullNever {
|
||||||
|
@Nonnull(when = When.NEVER) public String field = null;
|
||||||
|
|
||||||
|
@MyNullable
|
||||||
|
public String foo(@Nonnull(when = When.NEVER) String x, @MyNullable CharSequence y) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
public open class Simple : R|java/lang/Object| {
|
||||||
|
@R|javax/annotation/Nullable|() public open property field(var): R|ft<kotlin/String?, kotlin/String?>|?
|
||||||
|
public get(): R|ft<kotlin/String?, kotlin/String?>|?
|
||||||
|
public set(value: R|ft<kotlin/String?, kotlin/String?>|?): kotlin/Unit
|
||||||
|
|
||||||
|
@R|javax/annotation/Nullable|() public open operator function foo(@R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|, @R|javax/annotation/CheckForNull|() y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String?, kotlin/String?>|?
|
||||||
|
|
||||||
|
@R|javax/annotation/Nonnull|() public open operator function bar(): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
// FOREIGN_ANNOTATIONS
|
||||||
|
import javax.annotation.*;
|
||||||
|
|
||||||
|
public class Simple {
|
||||||
|
@Nullable public String field = null;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public String foo(@Nonnull String x, @CheckForNull CharSequence y) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
public String bar() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
public open class Strange : R|java/lang/Object| {
|
||||||
|
@R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.UNKNOWN>#()) public open property field(var): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
public get(): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
public set(value: R|ft<kotlin/String, kotlin/String>|): kotlin/Unit
|
||||||
|
|
||||||
|
@R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.MAYBE>#()) public open operator function foo(@R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.ALWAYS>#()) x: R|ft<kotlin/String, kotlin/String>|, @R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.NEVER>#()) y: R|ft<kotlin/CharSequence, kotlin/CharSequence>|): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
|
||||||
|
@R|javax/annotation/Nonnull|() public open operator function bar(): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
// FOREIGN_ANNOTATIONS
|
||||||
|
import javax.annotation.*;
|
||||||
|
import javax.annotation.meta.*;
|
||||||
|
|
||||||
|
public class Strange {
|
||||||
|
@Nonnull(when=When.UNKNOWN) public String field = null;
|
||||||
|
|
||||||
|
@Nonnull(when=When.MAYBE)
|
||||||
|
public String foo(@Nonnull(when=When.ALWAYS) String x, @Nonnull(when=When.NEVER) CharSequence y) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
public String bar() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
FIR enhancement tests use compiler/testData/loadJava/compilerJava
|
Most FIR enhancement tests use compiler/testData/loadJava/compilerJava
|
||||||
+2
@@ -236,3 +236,5 @@ abstract class AbstractFirTypeEnhancementTest : KtUsefulTestCase() {
|
|||||||
private const val FOREIGN_ANNOTATIONS_SOURCES_PATH = "third-party/annotations"
|
private const val FOREIGN_ANNOTATIONS_SOURCES_PATH = "third-party/annotations"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
abstract class AbstractOwnFirTypeEnhancementTest : AbstractFirTypeEnhancementTest()
|
||||||
Generated
+59
@@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. 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.fir.java;
|
||||||
|
|
||||||
|
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("compiler/fir/resolve/testData/enhancement")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public class OwnFirTypeEnhancementTestGenerated extends AbstractOwnFirTypeEnhancementTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInEnhancement() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/fir/resolve/testData/enhancement"), Pattern.compile("^(.+)\\.java$"), TargetBackend.ANY, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/fir/resolve/testData/enhancement/jsr305")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class Jsr305 extends AbstractOwnFirTypeEnhancementTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInJsr305() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/fir/resolve/testData/enhancement/jsr305"), Pattern.compile("^(.+)\\.java$"), TargetBackend.ANY, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("NonNullNever.java")
|
||||||
|
public void testNonNullNever() throws Exception {
|
||||||
|
runTest("compiler/fir/resolve/testData/enhancement/jsr305/NonNullNever.java");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("Simple.java")
|
||||||
|
public void testSimple() throws Exception {
|
||||||
|
runTest("compiler/fir/resolve/testData/enhancement/jsr305/Simple.java");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("Strange.java")
|
||||||
|
public void testStrange() throws Exception {
|
||||||
|
runTest("compiler/fir/resolve/testData/enhancement/jsr305/Strange.java");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.fir.AbstractFirResolveTestCase
|
|||||||
import org.jetbrains.kotlin.fir.AbstractFirResolveTestCaseWithStdlib
|
import org.jetbrains.kotlin.fir.AbstractFirResolveTestCaseWithStdlib
|
||||||
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
|
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
|
||||||
import org.jetbrains.kotlin.fir.java.AbstractFirTypeEnhancementTest
|
import org.jetbrains.kotlin.fir.java.AbstractFirTypeEnhancementTest
|
||||||
|
import org.jetbrains.kotlin.fir.java.AbstractOwnFirTypeEnhancementTest
|
||||||
import org.jetbrains.kotlin.generators.tests.generator.testGroup
|
import org.jetbrains.kotlin.generators.tests.generator.testGroup
|
||||||
import org.jetbrains.kotlin.generators.util.KT_OR_KTS_WITHOUT_DOTS_IN_NAME
|
import org.jetbrains.kotlin.generators.util.KT_OR_KTS_WITHOUT_DOTS_IN_NAME
|
||||||
import org.jetbrains.kotlin.generators.util.KT_WITHOUT_DOTS_IN_NAME
|
import org.jetbrains.kotlin.generators.util.KT_WITHOUT_DOTS_IN_NAME
|
||||||
@@ -403,4 +404,11 @@ fun main(args: Array<String>) {
|
|||||||
model("loadJava/compiledJava", extension = "java")
|
model("loadJava/compiledJava", extension = "java")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testGroup("compiler/fir/resolve/tests", "compiler/fir/resolve/testData") {
|
||||||
|
testClass<AbstractOwnFirTypeEnhancementTest> {
|
||||||
|
model("enhancement", extension = "java")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user