Add FIR enhancement tests, fix some exceptions / problems around them

Test data and tests themselves are based on
compiler/testData/loadJava/compiledJava
This commit is contained in:
Mikhail Glukhikh
2019-03-04 14:09:48 +03:00
parent f31faafd72
commit 4255c9f774
274 changed files with 2636 additions and 43 deletions
@@ -0,0 +1,4 @@
public final class ArrayTypeVariance : R|java/lang/Object| {
public final operator function toArray(p0: R|kotlin/Array<ft<java/lang/Object, java/lang/Object?>>|): R|kotlin/Array<ft<java/lang/Object, java/lang/Object?>>|
}
@@ -0,0 +1,2 @@
public abstract class ClassDoesNotOverrideMethod : R|java/util/Date| {
}
@@ -0,0 +1,2 @@
public final class ClassWithConstVal : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
<P> public final class ClassWithTypeP : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
<P> public abstract class ClassWithTypePExtendsIterableP : R|java/lang/Object|, R|java/lang/Iterable<P>| {
}
@@ -0,0 +1,2 @@
<P, Q> public final class ClassWithTypePP : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
<R, P> public open class ClassWithTypePRefNext : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
<P> public final class ClassWithTypePRefSelf : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
<P> public final class ClassWithTypePRefSelfAndClass : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public final class FieldAsVar : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class FieldOfArrayType : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public final class FinalFieldAsVal : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public final class InheritMethodsDifferentReturnTypes : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public final class InheritMethodsDifferentReturnTypesGeneric : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class InnerClass : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
<P> public open class InnerClassReferencesOuterTP : R|java/lang/Object| {
}
@@ -0,0 +1,4 @@
public open class InnerClassTypeMultipleGeneric : R|java/lang/Object| {
public open operator function staticType(): R|ft<test/InnerClassTypeMultipleGeneric.Outer.Inner<ft<java/lang/Byte, java/lang/Byte?>, ft<java/lang/Character, java/lang/Character?>, ft<java/lang/Boolean, java/lang/Boolean?>>, test/InnerClassTypeMultipleGeneric.Outer.Inner<ft<java/lang/Byte, java/lang/Byte?>, ft<java/lang/Character, java/lang/Character?>, ft<java/lang/Boolean, java/lang/Boolean?>>>|
}
@@ -0,0 +1,2 @@
<P, Q> public open class InnerClassesInGeneric : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class InnerOfGeneric : R|java/lang/Object| {
}
@@ -0,0 +1,12 @@
public abstract interface IntrinsicCompanionObject : R|java/lang/Object| {
public abstract operator function testInt(i: R|ft<kotlin/jvm/internal/IntCompanionObject, kotlin/jvm/internal/IntCompanionObject?>|!): R|kotlin/Unit|
public abstract operator function testChar(c: R|ft<kotlin/jvm/internal/CharCompanionObject, kotlin/jvm/internal/CharCompanionObject?>|!): R|kotlin/Unit|
public abstract operator function testString(s: R|ft<kotlin/jvm/internal/StringCompanionObject, kotlin/jvm/internal/StringCompanionObject?>|!): R|kotlin/Unit|
public abstract operator function testBoolean(b: R|ft<kotlin/jvm/internal/BooleanCompanionObject, kotlin/jvm/internal/BooleanCompanionObject?>|!): R|kotlin/Unit|
public abstract operator function testEnum(e: R|ft<kotlin/jvm/internal/EnumCompanionObject, kotlin/jvm/internal/EnumCompanionObject?>|!): R|kotlin/Unit|
}
@@ -0,0 +1,2 @@
<P> public final class MethodReferencesOuterClassTP : R|java/lang/Object| {
}
@@ -0,0 +1,4 @@
public open class MethodTypePOneUpperBound : R|java/lang/Object| {
public open operator function bar(): R|kotlin/Unit|
}
@@ -0,0 +1,4 @@
public open class MethodTypePTwoUpperBounds : R|java/lang/Object| {
public open operator function foo(): R|kotlin/Unit|
}
@@ -0,0 +1,4 @@
public final class MethodWithTypeP : R|java/lang/Object| {
public final operator function f(): R|kotlin/Unit|
}
@@ -0,0 +1,4 @@
public final class MethodWithTypePP : R|java/lang/Object| {
public final operator function f(): R|kotlin/Unit|
}
@@ -0,0 +1,4 @@
<P> public open class MethodWithTypePRefClassP : R|java/lang/Object| {
public final operator function f(): R|kotlin/Unit|
}
@@ -0,0 +1,4 @@
public final class MethosWithPRefTP : R|java/lang/Object| {
public final operator function f(p: R|ft<P, P?>|!): R|kotlin/Unit|
}
@@ -0,0 +1,2 @@
public open class MyException : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class NestedClass : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class OverrideMethod : R|java/lang/Object| {
}
@@ -0,0 +1,4 @@
public open class Frame : R|java/lang/Object| {
}
public open class JFrame : R|awt/Frame| {
}
@@ -0,0 +1,4 @@
public open class PrivateMembers : R|java/lang/Object| {
private open operator function method(): R|kotlin/Unit|
}
@@ -0,0 +1,2 @@
public open class PrivateMembersInHierarchy : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class RawOverrides : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public abstract interface RawTypeWithUpperBound : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
<T> public abstract interface RawUpperBound : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
<T> public abstract interface RecursiveRawUpperBound : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
<T> public abstract interface RecursiveWildcardUpperBound : R|java/lang/Object| {
}
@@ -0,0 +1,6 @@
public abstract interface RemoveRedundantProjectionKind : R|java/lang/Object| {
public abstract operator function f(collection: R|ft<java/util/Collection<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? extends CharSequence>, java/util/Collection<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? extends CharSequence>?>|!): R|kotlin/Unit|
public abstract operator function f(comparator: R|ft<java/lang/Comparable<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? super CharSequence>, java/lang/Comparable<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? super CharSequence>?>|!): R|kotlin/Unit|
}
@@ -0,0 +1,2 @@
public final class Simple : R|java/lang/Object| {
}
@@ -1,3 +1,4 @@
// SKIP_IN_FIR_TEST
package test;
public class SubclassFromNested implements B.C {
@@ -0,0 +1,4 @@
public open class TopLevel$Class : R|java/lang/Object| {
public open operator function foo(other: R|ft<test/TopLevel$Class, test/TopLevel$Class?>|!): R|kotlin/Unit|
}
@@ -0,0 +1,2 @@
public final class TwoFields : R|java/lang/Object| {
}
@@ -0,0 +1,6 @@
public final class UnboundWildcard : R|java/lang/Object| {
public final operator function foo(): R|ft<test/UnboundWildcard.MyClass<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:?>, test/UnboundWildcard.MyClass<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:?>?>|!
public final operator function collection(): R|ft<java/util/Collection<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:?>, java/util/Collection<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:?>?>|!
}
@@ -0,0 +1,4 @@
public open class WildcardBounds : R|java/lang/Object| {
public/*package*/ open operator function foo(x: R|ft<test/WildcardBounds.A<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? extends CharSequence>, test/WildcardBounds.A<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? extends CharSequence>?>|!, y: R|ft<test/WildcardBounds.A<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? super String>, test/WildcardBounds.A<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? super String>?>|!): R|kotlin/Unit|
}
@@ -0,0 +1,2 @@
@R|test/AnnotatedAnnotation|() public abstract annotation class AnnotatedAnnotation : R|java/lang/annotation/Annotation| {
}
@@ -0,0 +1,2 @@
public open class AnnotatedConstructor : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public final enum class AnnotatedEnumEntry : R|java/lang/Enum<test/AnnotatedEnumEntry>| {
}
@@ -0,0 +1,2 @@
public open class AnnotatedField : R|java/lang/Object| {
}
@@ -0,0 +1,4 @@
public open class AnnotatedMethod : R|java/lang/Object| {
@R|test/AnnotatedMethod.Anno|(Int(42)) public open operator function f(): R|kotlin/Unit|
}
@@ -1,3 +1,4 @@
// SKIP_IN_FIR_TEST
package test;
class AnnotatedParameterInInnerClassConstructor {
@@ -0,0 +1,2 @@
public/*package*/ open class AnnotatedParameterInInnerClassConstructor : R|java/lang/Object| {
}
@@ -1,3 +1,4 @@
// SKIP_IN_FIR_TEST
// SKIP_IN_RUNTIME_TEST
package test;
@@ -1,3 +1,4 @@
// SKIP_IN_FIR_TEST
// SKIP_IN_RUNTIME_TEST
package test;
@@ -0,0 +1,4 @@
public/*package*/ open class AnnotatedTypeInFun : R|java/lang/Object| {
public/*package*/ open operator function foo(@R|test/AnnotatedTypeInFun.Anno|(String(a)) a: @R|test/AnnotatedTypeInFun.Anno|(String(a)) R|ft<java/lang/String, java/lang/String?>|!, @R|test/AnnotatedTypeInFun.Anno|(String(b)) b: @R|test/AnnotatedTypeInFun.Anno|(String(b)) R|ft<java/lang/String, java/lang/String?>|!): R|kotlin/Unit|
}
@@ -1,3 +1,4 @@
// SKIP_IN_FIR_TEST
// SKIP_IN_RUNTIME_TEST
package test;
@@ -1,3 +1,4 @@
// SKIP_IN_FIR_TEST
// SKIP_IN_RUNTIME_TEST
package test;
@@ -0,0 +1,4 @@
public open class AnnotatedValueParameter : R|java/lang/Object| {
public open operator function f(@R|test/AnnotatedValueParameter.Anno|(String(non-empty)) parameter: R|ft<java/util/List<ft<java/lang/String, java/lang/String?>>, java/util/List<ft<java/lang/String, java/lang/String?>>>|): R|kotlin/Unit|
}
@@ -0,0 +1,2 @@
public abstract interface AnnotationInParam : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class AnnotationRetentions : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class AnnotationTargets : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class ArithmeticExpressionInParam : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public abstract interface ArrayOfEnumInParam : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public abstract interface ArrayOfStringInParam : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class ClassObjectArrayInParam : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class ClassObjectInParam : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class ClassObjectInParamRaw : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class ClassObjectInParamVariance : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public abstract interface CustomAnnotation : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public abstract interface CustomAnnotationWithDefaultParameter : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public abstract interface EmptyArrayInParam : R|java/lang/Object| {
}
@@ -0,0 +1,4 @@
public open class EnumArgumentWithCustomToString : R|java/lang/Object| {
@R|test/EnumArgumentWithCustomToString.EnumAnno|(<Strange Java enum value: test/EnumArgumentWithCustomToString.E.CAKE>#()) @R|test/EnumArgumentWithCustomToString.EnumArrayAnno|(<implicitArrayOf>(<Strange Java enum value: test/EnumArgumentWithCustomToString.E.CAKE>#(), <Strange Java enum value: test/EnumArgumentWithCustomToString.E.CAKE>#())) public/*package*/ open operator function annotated(): R|kotlin/Unit|
}
@@ -0,0 +1,2 @@
public final enum class EnumConstructorParameter : R|java/lang/Enum<test/EnumConstructorParameter>| {
}
@@ -0,0 +1,2 @@
public abstract interface EnumInParam : R|java/lang/Object| {
}
@@ -0,0 +1,4 @@
public open class JavaDocDeprecated : R|java/lang/Object| {
public open operator function getFoo(text: R|ft<java/lang/String, java/lang/String?>|!): R|ft<java/lang/String, java/lang/String?>|!
}
@@ -0,0 +1,4 @@
public open class NestedEnumArgument : R|java/lang/Object| {
@R|test/NestedEnumArgument.Anno|(<Strange Java enum value: test/NestedEnumArgument.E.FIRST>#()) public/*package*/ open operator function foo(): R|kotlin/Unit|
}
@@ -0,0 +1,2 @@
public abstract interface PrimitiveValueInParam : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public abstract interface RecursiveAnnotation : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public abstract interface RecursiveAnnotation2 : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public abstract annotation class SimpleAnnotation : R|java/lang/annotation/Annotation| {
}
@@ -0,0 +1,2 @@
public abstract interface StringConcatenationInParam : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public abstract interface StringConstantInParam : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public abstract interface StringInParam : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class ConstructorGenericDeep : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class ConstructorGenericSimple : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class ConstructorGenericUpperBound : R|java/lang/Object| {
}
@@ -0,0 +1,4 @@
public final enum class EnumMembers : R|java/lang/Enum<test/EnumMembers>| {
public open operator function first(): R|kotlin/Boolean|
}
@@ -0,0 +1,2 @@
public open enum class EnumWithSpecializedEntry : R|java/lang/Enum<test/EnumWithSpecializedEntry>| {
}
@@ -0,0 +1,2 @@
public final enum class JavaEnum : R|java/lang/Enum<test/JavaEnum>| {
}
@@ -0,0 +1,6 @@
public open class DifferentGetterAndSetter : R|java/lang/Object| {
public open operator function setSomething(color: R|ft<java/lang/String, java/lang/String?>|!): R|kotlin/Unit|
public open operator function getSomething(): R|kotlin/Int|
}
@@ -0,0 +1,6 @@
public abstract interface JavaBeanAbstractGetter : R|java/lang/Object| {
public abstract operator function getRed(): R|kotlin/Int|
public abstract operator function getBlue(): R|kotlin/Int|
}
@@ -0,0 +1,4 @@
public open class JavaBeanVal : R|java/lang/Object| {
public open operator function getColor(): R|ft<java/lang/String, java/lang/String?>|!
}
@@ -0,0 +1,6 @@
public open class JavaBeanVar : R|java/lang/Object| {
public open operator function getColor(): R|ft<java/lang/String, java/lang/String?>|!
public open operator function setColor(string: R|ft<java/lang/String, java/lang/String?>|!): R|kotlin/Unit|
}
@@ -0,0 +1,6 @@
<P> public open class JavaBeanVarOfGenericType : R|java/lang/Object| {
public open operator function getCharacters(): R|ft<java/util/ArrayList<ft<P, P?>>, java/util/ArrayList<ft<P, P?>>>|
public open operator function setCharacters(characters: R|ft<java/util/ArrayList<ft<P, P?>>, java/util/ArrayList<ft<P, P?>>>|): R|kotlin/Unit|
}
@@ -0,0 +1,6 @@
public open class TwoSetters : R|java/lang/Object| {
public open operator function setSize(size: R|ft<java/lang/String, java/lang/String?>|!): R|kotlin/Unit|
public open operator function setSize(size: R|kotlin/Int|): R|kotlin/Unit|
}
@@ -0,0 +1,4 @@
public open class AllBoundsInWhen : R|java/lang/Object| {
public open operator function foo(): R|kotlin/Unit|
}
@@ -0,0 +1,4 @@
public open class ArrayType : R|java/lang/Object| {
public open operator function foo(): R|kotlin/Array<ft<java/lang/String, java/lang/String?>>|
}
@@ -0,0 +1,2 @@
<T> public open class ConstructorWithNewTypeParams : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
<T> public open class ConstructorWithParentTypeParams : R|java/lang/Object| {
}
@@ -0,0 +1,2 @@
public open class ConstructorWithSeveralParams : R|java/lang/Object| {
}

Some files were not shown because too many files have changed in this diff Show More