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"
|
||||
}
|
||||
}
|
||||
|
||||
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.builder.AbstractRawFirBuilderTestCase
|
||||
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.util.KT_OR_KTS_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")
|
||||
}
|
||||
}
|
||||
|
||||
testGroup("compiler/fir/resolve/tests", "compiler/fir/resolve/testData") {
|
||||
testClass<AbstractOwnFirTypeEnhancementTest> {
|
||||
model("enhancement", extension = "java")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user