FIR Java: fix creation & handling of type parameter symbols
Before this commit, we created type parameter symbols each time when type parameter was referenced or created. In this commit, we introduced class-bound Java type parameter stack and use it to find referenced type parameter symbol. So now they are created only when Java type parameter is created
This commit is contained in:
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class AllBoundsInWhen : R|java/lang/Object| {
|
||||
public open operator fun foo(): R|kotlin/Unit|
|
||||
public open operator fun <T : R|java/io/Serializable|> foo(): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class ConstructorWithNewTypeParams<T> : R|java/lang/Object| {
|
||||
public constructor(first: R|ft<U, U?>|!): R|test/ConstructorWithNewTypeParams<T>|
|
||||
public constructor<T, U>(first: R|ft<U, U?>|!): R|test/ConstructorWithNewTypeParams<T>|
|
||||
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class ConstructorWithParentTypeParams<T> : R|java/lang/Object| {
|
||||
public constructor(first: R|ft<T, T?>|!): R|test/ConstructorWithParentTypeParams<T>|
|
||||
public constructor<T>(first: R|ft<T, T?>|!): R|test/ConstructorWithParentTypeParams<T>|
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
public open class MethodWithMappedClasses : R|java/lang/Object| {
|
||||
public open operator fun 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 fun <T> 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 fun 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|
|
||||
public open operator fun <T> 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
-1
@@ -1,4 +1,4 @@
|
||||
public open class MethodWithTypeParameters : R|java/lang/Object| {
|
||||
public open operator fun 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|
|
||||
public open operator fun <A, B : R|java/lang/Runnable|, R|java/util/List<java/lang/Cloneable>|> 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|
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class WrongTypeParameterBoundStructure1 : R|java/lang/Object| {
|
||||
public open operator fun foo(a: R|ft<A, A?>|!, b: R|ft<kotlin/collections/MutableList<out B>, kotlin/collections/List<out B>?>|!): R|kotlin/Unit|
|
||||
public open operator fun <A, B : R|java/lang/Runnable|, R|java/util/List<java/lang/Cloneable>|> foo(a: R|ft<A, A?>|!, b: R|ft<kotlin/collections/MutableList<out B>, kotlin/collections/List<out B>?>|!): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user