[Lombok] Convert tests with compilation errors to diagnostic tests

This commit is contained in:
Dmitriy Novozhilov
2022-05-27 10:53:01 +03:00
committed by teamcity
parent fb57e1ecd5
commit 430ea414a9
42 changed files with 413 additions and 199 deletions
@@ -0,0 +1,28 @@
// FIR_IDENTICAL
// KT-46529
// FILE: PrefixJava.java
import lombok.*;
import lombok.experimental.*;
@Getter @Setter @Accessors(chain = false, fluent = true, prefix = {"pxo"})
public class PrefixJava {
private String pxaPropA = "A";
@Accessors(chain = true) private String pxoPropC = "C";
@Accessors private String pxaPropD = "D";
}
// FILE: test.kt
fun test() {
//not generated because doesn't have prefix from class level @Accessors
assertEquals(PrefixJava().<!UNRESOLVED_REFERENCE!>propA<!>, "A")
//not generated because doesn't have prefix from config
assertEquals(PrefixJava().<!UNRESOLVED_REFERENCE!>propC<!>, "C")
assertEquals(PrefixJava().propD, "D")
}
// FILE: lombok.config
lombok.accessors.prefix += pxa
@@ -0,0 +1,16 @@
package
public fun </*0*/ T> assertEquals(/*0*/ a: T, /*1*/ b: T): kotlin.Unit
public fun test(): kotlin.Unit
@lombok.Getter @lombok.Setter @lombok.experimental.Accessors(chain = false, fluent = true, prefix = {"pxo"}) public open class PrefixJava {
public constructor PrefixJava()
private final var pxaPropA: kotlin.String!
@lombok.experimental.Accessors private final var pxaPropD: kotlin.String!
@lombok.experimental.Accessors(chain = true) private final var pxoPropC: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open /*synthesized*/ fun getPropD(): kotlin.String!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open /*synthesized*/ fun setPropD(/*0*/ pxaPropD: kotlin.String!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
+30
View File
@@ -0,0 +1,30 @@
// FIR_IDENTICAL
// FILE: Anno.java
import java.lang.*;
import java.lang.annotation.*;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface Anno {
String value() default "sdf";
}
// FILE: Foo.java
import lombok.*;
import org.jetbrains.annotations.*;
public class Foo {
private Integer age = 10;
private String name;
}
// FILE: test.kt
<!WRONG_ANNOTATION_TARGET!>@Anno<!>
fun box(): String {
val obj = Foo()
return "OK"
}
+21
View File
@@ -0,0 +1,21 @@
package
public fun </*0*/ T> assertEquals(/*0*/ a: T, /*1*/ b: T): kotlin.Unit
@Anno public fun box(): kotlin.String
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FILE}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Anno : kotlin.Annotation {
public constructor Anno(/*0*/ value: kotlin.String = ...)
public final val value: kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class Foo {
public constructor Foo()
private final var age: kotlin.Int!
private final var name: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
+109
View File
@@ -0,0 +1,109 @@
// FIR_IDENTICAL
// FILE: SuperClass.java
import lombok.*;
import java.util.*;
public class SuperClass {
public void setName(String name) {
}
}
// FILE: ClashTest.java
import lombok.*;
import java.util.*;
@Getter
@Setter
public class ClashTest extends SuperClass {
private int age = 10;
private String name;
private boolean human;
private Integer toOverride;
public int getAge() {
return age;
}
public void setAge(String age) {
}
public boolean isHuman(String arg) {
return human;
}
static void test() {
val obj = new ClashTest();
obj.getAge();
// obj.setAge(41);
obj.getName();
obj.setName("Al");
obj.isHuman();
obj.setHuman(true);
obj.isHuman("sdf");
}
}
// FILE: ChildClass.java
import lombok.*;
import java.util.*;
public class ChildClass extends ClashTest{
@Override
public Integer getToOverride() {
return super.getToOverride();
}
}
// FILE: test.kt
class KotlinChildClass : ClashTest() {
override fun getToOverride(): Int? = super.getToOverride()
}
fun test() {
val obj = ClashTest()
obj.getAge()
//thats shouldn't work because lombok doesn't generate clashing method
obj.setAge(<!CONSTANT_EXPECTED_TYPE_MISMATCH!>41<!>)
<!VAL_REASSIGNMENT!>obj.age<!> = 12
val age = obj.age
obj.getName()
obj.setName("Al")
val name = obj.name
obj.name = "sdf"
obj.isHuman()
obj.setHuman(true)
obj.isHuman("sdf")
val isHuman = obj.isHuman
obj.isHuman = false
val childObj = KotlinChildClass()
childObj.getToOverride()
childObj.setToOverride(34)
childObj.toOverride
childObj.toOverride = 412
}
+78
View File
@@ -0,0 +1,78 @@
package
public fun </*0*/ T> assertEquals(/*0*/ a: T, /*1*/ b: T): kotlin.Unit
public fun test(): kotlin.Unit
public open class ChildClass : ClashTest {
public constructor ChildClass()
invisible_fake final override /*1*/ /*fake_override*/ var age: kotlin.Int
invisible_fake final override /*1*/ /*fake_override*/ var human: kotlin.Boolean
invisible_fake final override /*1*/ /*fake_override*/ var name: kotlin.String!
invisible_fake final override /*1*/ /*fake_override*/ var toOverride: kotlin.Int!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun getAge(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun getName(): kotlin.String!
@java.lang.Override public open override /*1*/ fun getToOverride(): kotlin.Int!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun isHuman(): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun isHuman(/*0*/ arg: kotlin.String!): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun setAge(/*0*/ age: kotlin.String!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun setHuman(/*0*/ human: kotlin.Boolean): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun setName(/*0*/ name: kotlin.String!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun setToOverride(/*0*/ toOverride: kotlin.Int!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public/*package*/ open override /*1*/ /*fake_override*/ fun test(): kotlin.Unit
}
@lombok.Getter @lombok.Setter public open class ClashTest : SuperClass {
public constructor ClashTest()
private final var age: kotlin.Int
private final var human: kotlin.Boolean
private final var name: kotlin.String!
private final var toOverride: kotlin.Int!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun getAge(): kotlin.Int
public open /*synthesized*/ fun getName(): kotlin.String!
public open /*synthesized*/ fun getToOverride(): kotlin.Int!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open /*synthesized*/ fun isHuman(): kotlin.Boolean
public open fun isHuman(/*0*/ arg: kotlin.String!): kotlin.Boolean
public open fun setAge(/*0*/ age: kotlin.String!): kotlin.Unit
public open /*synthesized*/ fun setHuman(/*0*/ human: kotlin.Boolean): kotlin.Unit
public open override /*1*/ /*synthesized*/ fun setName(/*0*/ name: kotlin.String!): kotlin.Unit
public open /*synthesized*/ fun setToOverride(/*0*/ toOverride: kotlin.Int!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public/*package*/ open fun test(): kotlin.Unit
}
public final class KotlinChildClass : ClashTest {
public constructor KotlinChildClass()
invisible_fake final override /*1*/ /*fake_override*/ var age: kotlin.Int
invisible_fake final override /*1*/ /*fake_override*/ var human: kotlin.Boolean
invisible_fake final override /*1*/ /*fake_override*/ var name: kotlin.String!
invisible_fake final override /*1*/ /*fake_override*/ var toOverride: kotlin.Int!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun getAge(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun getName(): kotlin.String!
public open override /*1*/ fun getToOverride(): kotlin.Int?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun isHuman(): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun isHuman(/*0*/ arg: kotlin.String!): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun setAge(/*0*/ age: kotlin.String!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun setHuman(/*0*/ human: kotlin.Boolean): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun setName(/*0*/ name: kotlin.String!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun setToOverride(/*0*/ toOverride: kotlin.Int!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class SuperClass {
public constructor SuperClass()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open fun setName(/*0*/ name: kotlin.String!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
+54
View File
@@ -0,0 +1,54 @@
// FIR_IDENTICAL
// FILE: GetterTest.java
import lombok.AccessLevel;
import lombok.Getter;
public class GetterTest {
@Getter private int age = 10;
@Getter(AccessLevel.PROTECTED) private String name;
@Getter private boolean primitiveBoolean;
@Getter private Boolean boxedBoolean;
@Getter(AccessLevel.NONE) private Boolean invisible;
void test() {
getAge();
isPrimitiveBoolean();
// getInvisible();
}
}
// FILE: test.kt
fun test() {
val obj = GetterTest()
val getter = obj.getAge()
val property = obj.age
//todo kotlin doesn't seee isBoolean methods as property
obj.<!INVISIBLE_MEMBER!>primitiveBoolean<!>
obj.isPrimitiveBoolean()
obj.boxedBoolean
obj.getBoxedBoolean()
//shouldn't be accesible from here
obj.<!INVISIBLE_MEMBER!>getName<!>()
obj.<!UNRESOLVED_REFERENCE!>getInvisible<!>()
OverridenGetterTest().usage()
}
class OverridenGetterTest : GetterTest() {
fun usage() {
getName()
}
}
+39
View File
@@ -0,0 +1,39 @@
package
public fun </*0*/ T> assertEquals(/*0*/ a: T, /*1*/ b: T): kotlin.Unit
public fun test(): kotlin.Unit
public open class GetterTest {
public constructor GetterTest()
@lombok.Getter private final var age: kotlin.Int
@lombok.Getter private final var boxedBoolean: kotlin.Boolean!
@lombok.Getter(value = AccessLevel.NONE) private final var invisible: kotlin.Boolean!
@lombok.Getter(value = AccessLevel.PROTECTED) private final var name: kotlin.String!
@lombok.Getter private final var primitiveBoolean: kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open /*synthesized*/ fun getAge(): kotlin.Int
public open /*synthesized*/ fun getBoxedBoolean(): kotlin.Boolean!
protected open /*synthesized*/ fun getName(): kotlin.String!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open /*synthesized*/ fun isPrimitiveBoolean(): kotlin.Boolean
public/*package*/ open fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class OverridenGetterTest : GetterTest {
public constructor OverridenGetterTest()
@lombok.Getter invisible_fake final override /*1*/ /*fake_override*/ var age: kotlin.Int
@lombok.Getter invisible_fake final override /*1*/ /*fake_override*/ var boxedBoolean: kotlin.Boolean!
@lombok.Getter(value = AccessLevel.NONE) invisible_fake final override /*1*/ /*fake_override*/ var invisible: kotlin.Boolean!
@lombok.Getter(value = AccessLevel.PROTECTED) invisible_fake final override /*1*/ /*fake_override*/ var name: kotlin.String!
@lombok.Getter invisible_fake final override /*1*/ /*fake_override*/ var primitiveBoolean: kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun getAge(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun getBoxedBoolean(): kotlin.Boolean!
protected open override /*1*/ /*fake_override*/ fun getName(): kotlin.String!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun isPrimitiveBoolean(): kotlin.Boolean
public/*package*/ open override /*1*/ /*fake_override*/ fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final fun usage(): kotlin.Unit
}
@@ -0,0 +1,47 @@
// FIR_IDENTICAL
// FILE: ClassLevelGetterTest.java
import lombok.AccessLevel;
import lombok.Getter;
@Getter
public class ClassLevelGetterTest {
private int age = 10;
@Getter(AccessLevel.PROTECTED) private String name;
private boolean primitiveBoolean;
private Boolean boxedBoolean;
void test() {
getAge();
isPrimitiveBoolean();
}
}
// FILE: test.kt
fun test() {
val obj = ClassLevelGetterTest()
val getter = obj.getAge()
val property = obj.age
obj.isPrimitiveBoolean()
obj.boxedBoolean
obj.getBoxedBoolean()
//shouldn't be accesible from here
obj.<!INVISIBLE_MEMBER!>getName<!>()
OverridenGetterTest().usage()
}
class OverridenGetterTest : ClassLevelGetterTest() {
fun usage() {
getName()
}
}
@@ -0,0 +1,37 @@
package
public fun </*0*/ T> assertEquals(/*0*/ a: T, /*1*/ b: T): kotlin.Unit
public fun test(): kotlin.Unit
@lombok.Getter public open class ClassLevelGetterTest {
public constructor ClassLevelGetterTest()
private final var age: kotlin.Int
private final var boxedBoolean: kotlin.Boolean!
@lombok.Getter(value = AccessLevel.PROTECTED) private final var name: kotlin.String!
private final var primitiveBoolean: kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open /*synthesized*/ fun getAge(): kotlin.Int
public open /*synthesized*/ fun getBoxedBoolean(): kotlin.Boolean!
protected open /*synthesized*/ fun getName(): kotlin.String!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open /*synthesized*/ fun isPrimitiveBoolean(): kotlin.Boolean
public/*package*/ open fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class OverridenGetterTest : ClassLevelGetterTest {
public constructor OverridenGetterTest()
invisible_fake final override /*1*/ /*fake_override*/ var age: kotlin.Int
invisible_fake final override /*1*/ /*fake_override*/ var boxedBoolean: kotlin.Boolean!
@lombok.Getter(value = AccessLevel.PROTECTED) invisible_fake final override /*1*/ /*fake_override*/ var name: kotlin.String!
invisible_fake final override /*1*/ /*fake_override*/ var primitiveBoolean: kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun getAge(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun getBoxedBoolean(): kotlin.Boolean!
protected open override /*1*/ /*fake_override*/ fun getName(): kotlin.String!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun isPrimitiveBoolean(): kotlin.Boolean
public/*package*/ open override /*1*/ /*fake_override*/ fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final fun usage(): kotlin.Unit
}
+43
View File
@@ -0,0 +1,43 @@
// FIR_IDENTICAL
// FILE: SetterTest.java
import lombok.AccessLevel;
import lombok.Setter;
import lombok.Getter;
public class SetterTest {
@Getter @Setter private int age = 10;
@Setter(AccessLevel.PROTECTED) private String name;
@Setter private boolean primitiveBoolean;
void test() {
setAge(12);
setPrimitiveBoolean(true);
}
}
// FILE: test.kt
fun test() {
val obj = SetterTest()
obj.setAge(42)
obj.age = 42
//synthetic property generated only when there is a getter
obj.<!INVISIBLE_MEMBER!>primitiveBoolean<!> = false
obj.setPrimitiveBoolean(true)
//shouldn't be accesible from here
obj.<!INVISIBLE_MEMBER!>setName<!>("abc")
OverridenGetterTest().usage()
}
class OverridenGetterTest : SetterTest() {
fun usage() {
setName("abc")
}
}
+35
View File
@@ -0,0 +1,35 @@
package
public fun </*0*/ T> assertEquals(/*0*/ a: T, /*1*/ b: T): kotlin.Unit
public fun test(): kotlin.Unit
public final class OverridenGetterTest : SetterTest {
public constructor OverridenGetterTest()
@lombok.Getter @lombok.Setter invisible_fake final override /*1*/ /*fake_override*/ var age: kotlin.Int
@lombok.Setter(value = AccessLevel.PROTECTED) invisible_fake final override /*1*/ /*fake_override*/ var name: kotlin.String!
@lombok.Setter invisible_fake final override /*1*/ /*fake_override*/ var primitiveBoolean: kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun getAge(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun setAge(/*0*/ age: kotlin.Int): kotlin.Unit
protected open override /*1*/ /*fake_override*/ fun setName(/*0*/ name: kotlin.String!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun setPrimitiveBoolean(/*0*/ primitiveBoolean: kotlin.Boolean): kotlin.Unit
public/*package*/ open override /*1*/ /*fake_override*/ fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final fun usage(): kotlin.Unit
}
public open class SetterTest {
public constructor SetterTest()
@lombok.Getter @lombok.Setter private final var age: kotlin.Int
@lombok.Setter(value = AccessLevel.PROTECTED) private final var name: kotlin.String!
@lombok.Setter private final var primitiveBoolean: kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open /*synthesized*/ fun getAge(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open /*synthesized*/ fun setAge(/*0*/ age: kotlin.Int): kotlin.Unit
protected open /*synthesized*/ fun setName(/*0*/ name: kotlin.String!): kotlin.Unit
public open /*synthesized*/ fun setPrimitiveBoolean(/*0*/ primitiveBoolean: kotlin.Boolean): kotlin.Unit
public/*package*/ open fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,39 @@
// FIR_IDENTICAL
// FILE: SetterTest.java
import lombok.AccessLevel;
import lombok.Setter;
import lombok.Getter;
@Getter @Setter
public class SetterTest {
private int age = 10;
private final String finalName = "zzz";
private boolean primitiveBoolean;
void test() {
setAge(12);
setPrimitiveBoolean(true);
//no setters generated for final variable
// setFinalName("adsf");
}
}
// FILE: test.kt
fun test() {
val obj = SetterTest()
obj.setAge(42)
assertEquals(obj.age, 42)
obj.age = 43
assertEquals(obj.age, 43)
obj.setPrimitiveBoolean(true)
// no setters generated for final variable
obj.<!UNRESOLVED_REFERENCE!>setFinalName<!>("error")
}
@@ -0,0 +1,20 @@
package
public fun </*0*/ T> assertEquals(/*0*/ a: T, /*1*/ b: T): kotlin.Unit
public fun test(): kotlin.Unit
@lombok.Getter @lombok.Setter public open class SetterTest {
public constructor SetterTest()
private final var age: kotlin.Int
private final val finalName: kotlin.String! = "zzz"
private final var primitiveBoolean: kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open /*synthesized*/ fun getAge(): kotlin.Int
public open /*synthesized*/ fun getFinalName(): kotlin.String!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open /*synthesized*/ fun isPrimitiveBoolean(): kotlin.Boolean
public open /*synthesized*/ fun setAge(/*0*/ age: kotlin.Int): kotlin.Unit
public open /*synthesized*/ fun setPrimitiveBoolean(/*0*/ primitiveBoolean: kotlin.Boolean): kotlin.Unit
public/*package*/ open fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}