FIR type enhancement: make J2K mapping and changed handling more exact

Related to KT-29937
This commit is contained in:
Mikhail Glukhikh
2019-02-28 14:39:13 +03:00
parent 9bb2278fd4
commit 7563a98999
40 changed files with 91 additions and 104 deletions
@@ -1,4 +1,4 @@
public open class CustomProjectionKind : R|java/lang/Object| {
public open operator function foo(): R|ft<kotlin/collections/MutableList<ft<java/lang/Number, java/lang/Number?>>, kotlin/collections/List<ft<java/lang/Number, java/lang/Number?>>>|
public open operator function foo(): R|ft<kotlin/collections/MutableList<ft<kotlin/Number, kotlin/Number?>>, kotlin/collections/List<ft<kotlin/Number, kotlin/Number?>>?>|!
}
@@ -1,4 +1,4 @@
public open class MethodWithFunctionTypes : R|java/lang/Object| {
public open operator function foo(f: R|ft<kotlin/Function1<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/Function1<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>|): R|ft<kotlin/Function0<ft<java/lang/String, java/lang/String?>>, kotlin/Function0<ft<java/lang/String, java/lang/String?>>>|
public open operator function foo(f: R|ft<kotlin/Function1<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/Function1<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>|!): R|ft<kotlin/Function0<ft<kotlin/String, kotlin/String?>>, kotlin/Function0<ft<kotlin/String, kotlin/String?>>?>|!
}
@@ -1,4 +1,4 @@
public open class MethodWithGenerics : R|java/lang/Object| {
public open operator function foo(a: R|ft<java/lang/String, java/lang/String?>|!, b: R|ft<kotlin/collections/MutableList<ft<kotlin/collections/MutableMap.MutableEntry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/collections/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>, kotlin/collections/List<ft<kotlin/collections/MutableMap.MutableEntry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/collections/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>>|): R|ft<java/lang/String, java/lang/String?>|!
public open operator function foo(a: R|ft<kotlin/String, kotlin/String?>|!, b: R|ft<kotlin/collections/MutableList<ft<kotlin/collections/MutableMap.MutableEntry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>>, kotlin/collections/List<ft<kotlin/collections/MutableMap.MutableEntry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>>?>|!): R|ft<kotlin/String, kotlin/String?>|!
}
@@ -1,6 +1,6 @@
public open class MethodWithMappedClasses : R|java/lang/Object| {
public open operator function copy(dest: R|ft<java/util/List<in T>, java/util/List<in T>?>|!, src: R|ft<kotlin/collections/MutableList<ft<T, T?>>, kotlin/collections/List<ft<T, T?>>>|): R|kotlin/Unit|
public open operator function copy(dest: R|ft<kotlin/collections/MutableList<in T>, kotlin/collections/List<in T>?>|!, src: R|ft<kotlin/collections/MutableList<ft<T, T?>>, kotlin/collections/List<ft<T, T?>>?>|!): R|kotlin/Unit|
public open operator function copyMap(dest: R|ft<kotlin/collections/MutableMap<ft<java/lang/String, java/lang/String?>, *>, kotlin/collections/Map<ft<java/lang/String, java/lang/String?>, *>>|, src: R|ft<kotlin/collections/MutableMap<ft<java/lang/String, java/lang/String?>, ft<T, T?>>, kotlin/collections/Map<ft<java/lang/String, java/lang/String?>, ft<T, T?>>>|): R|kotlin/Unit|
public open operator function copyMap(dest: R|ft<kotlin/collections/MutableMap<ft<kotlin/String, kotlin/String?>, in T>, kotlin/collections/Map<ft<kotlin/String, kotlin/String?>, in T>?>|!, src: R|ft<kotlin/collections/MutableMap<ft<kotlin/String, kotlin/String?>, ft<T, T?>>, kotlin/collections/Map<ft<kotlin/String, kotlin/String?>, ft<T, T?>>?>|!): R|kotlin/Unit|
}
@@ -1,4 +1,4 @@
public open class MethodWithTypeParameters : R|java/lang/Object| {
public open operator function foo(a: R|ft<A, A?>|!, b: R|ft<java/util/List<out B>, java/util/List<out B>?>|!, list: R|ft<java/util/List<in java/lang/String>, java/util/List<in java/lang/String>?>|!): R|kotlin/Unit|
public open operator function foo(a: R|ft<A, A?>|!, b: R|ft<kotlin/collections/MutableList<out B>, kotlin/collections/List<out B>?>|!, list: R|ft<kotlin/collections/MutableList<in java/lang/String>, kotlin/collections/List<in java/lang/String>?>|!): R|kotlin/Unit|
}
@@ -3,16 +3,16 @@
public get(): R|ft<T, T?>|!
public set(value: R|ft<T, T?>|!): kotlin/Unit
public open property listDefinedGeneric(var): R|ft<java/util/ArrayList<ft<java/lang/String, java/lang/String?>>, java/util/ArrayList<ft<java/lang/String, java/lang/String?>>>|
public get(): R|ft<java/util/ArrayList<ft<java/lang/String, java/lang/String?>>, java/util/ArrayList<ft<java/lang/String, java/lang/String?>>>|
public set(value: R|ft<java/util/ArrayList<ft<java/lang/String, java/lang/String?>>, java/util/ArrayList<ft<java/lang/String, java/lang/String?>>>|): kotlin/Unit
public open property listDefinedGeneric(var): R|ft<java/util/ArrayList<ft<kotlin/String, kotlin/String?>>, java/util/ArrayList<ft<kotlin/String, kotlin/String?>>?>|!
public get(): R|ft<java/util/ArrayList<ft<kotlin/String, kotlin/String?>>, java/util/ArrayList<ft<kotlin/String, kotlin/String?>>?>|!
public set(value: R|ft<java/util/ArrayList<ft<kotlin/String, kotlin/String?>>, java/util/ArrayList<ft<kotlin/String, kotlin/String?>>?>|!): kotlin/Unit
public open property listGeneric(var): R|ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>>|
public get(): R|ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>>|
public set(value: R|ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>>|): kotlin/Unit
public open property listGeneric(var): R|ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>?>|!
public get(): R|ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>?>|!
public set(value: R|ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>?>|!): kotlin/Unit
public open property listOfGenericList(var): R|ft<java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>>>, java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>>>>|
public get(): R|ft<java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>>>, java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>>>>|
public set(value: R|ft<java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>>>, java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>>>>|): kotlin/Unit
public open property listOfGenericList(var): R|ft<java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>?>>, java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>?>>?>|!
public get(): R|ft<java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>?>>, java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>?>>?>|!
public set(value: R|ft<java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>?>>, java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>?>>?>|!): kotlin/Unit
}
@@ -1,10 +1,10 @@
public open class PropertySimpleType : R|java/lang/Object| {
public open property fieldOne(var): R|ft<java/lang/String, java/lang/String?>|!
public get(): R|ft<java/lang/String, java/lang/String?>|!
public set(value: R|ft<java/lang/String, java/lang/String?>|!): kotlin/Unit
public open property fieldOne(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
public open property fieldTwo(var): R|ft<java/lang/String, java/lang/String?>|!
public get(): R|ft<java/lang/String, java/lang/String?>|!
public set(value: R|ft<java/lang/String, java/lang/String?>|!): kotlin/Unit
public open property fieldTwo(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
}
@@ -1,4 +1,4 @@
public open class WrongProjectionKind : R|java/lang/Object| {
public open operator function copy(from: R|kotlin/Array<ft<java/lang/Number, java/lang/Number?>>|, to: R|kotlin/Array<ft<java/lang/Number, java/lang/Number?>>|): R|ft<kotlin/collections/MutableList<ft<java/lang/Number, java/lang/Number?>>, kotlin/collections/List<ft<java/lang/Number, java/lang/Number?>>>|
public open operator function copy(from: R|kotlin/Array<ft<java/lang/Number, java/lang/Number?>>|, to: R|kotlin/Array<ft<java/lang/Number, java/lang/Number?>>|): R|ft<kotlin/collections/MutableList<ft<kotlin/Number, kotlin/Number?>>, kotlin/collections/List<ft<kotlin/Number, kotlin/Number?>>?>|!
}
@@ -1,4 +1,4 @@
public open class WrongReturnTypeStructure : R|java/lang/Object| {
public open operator function foo(a: R|ft<java/lang/String, java/lang/String?>|!, b: R|ft<kotlin/collections/MutableList<ft<kotlin/collections/MutableMap.MutableEntry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/collections/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>, kotlin/collections/List<ft<kotlin/collections/MutableMap.MutableEntry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/collections/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>>|): R|ft<java/lang/String, java/lang/String?>|!
public open operator function foo(a: R|ft<kotlin/String, kotlin/String?>|!, b: R|ft<kotlin/collections/MutableList<ft<kotlin/collections/MutableMap.MutableEntry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>>, kotlin/collections/List<ft<kotlin/collections/MutableMap.MutableEntry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>>?>|!): R|ft<kotlin/String, kotlin/String?>|!
}
@@ -1,4 +1,4 @@
public open class WrongTypeParameterBoundStructure1 : R|java/lang/Object| {
public open operator function foo(a: R|ft<A, A?>|!, b: R|ft<java/util/List<out B>, java/util/List<out B>?>|!): R|kotlin/Unit|
public open operator function foo(a: R|ft<A, A?>|!, b: R|ft<kotlin/collections/MutableList<out B>, kotlin/collections/List<out B>?>|!): R|kotlin/Unit|
}
@@ -1,4 +1,4 @@
public open class WrongValueParameterStructure1 : R|java/lang/Object| {
public open operator function foo(a: R|ft<java/lang/String, java/lang/String?>|!, b: R|ft<kotlin/collections/MutableList<ft<kotlin/collections/MutableMap.MutableEntry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/collections/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>, kotlin/collections/List<ft<kotlin/collections/MutableMap.MutableEntry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/collections/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>>|): R|ft<java/lang/String, java/lang/String?>|!
public open operator function foo(a: R|ft<kotlin/String, kotlin/String?>|!, b: R|ft<kotlin/collections/MutableList<ft<kotlin/collections/MutableMap.MutableEntry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>>, kotlin/collections/List<ft<kotlin/collections/MutableMap.MutableEntry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>>?>|!): R|ft<kotlin/String, kotlin/String?>|!
}
@@ -1,4 +1,4 @@
<E> public abstract interface SubclassOfCollection : R|java/util/Collection<E>| {
public abstract operator function iterator(): R|ft<kotlin/collections/MutableIterator<ft<E, E?>>, kotlin/collections/Iterator<ft<E, E?>>>|
public abstract operator function iterator(): R|ft<kotlin/collections/MutableIterator<ft<E, E?>>, kotlin/collections/Iterator<ft<E, E?>>?>|!
}