LTDA: Make supertypes in lazy type parameters be recorded in order of declaration
This commit is contained in:
+2
-2
@@ -65,13 +65,13 @@ public class LazyTypeParameterDescriptor extends AbstractLazyTypeParameterDescri
|
|||||||
|
|
||||||
JetTypeParameter jetTypeParameter = this.jetTypeParameter;
|
JetTypeParameter jetTypeParameter = this.jetTypeParameter;
|
||||||
|
|
||||||
resolveUpperBoundsFromWhereClause(upperBounds);
|
|
||||||
|
|
||||||
JetTypeReference extendsBound = jetTypeParameter.getExtendsBound();
|
JetTypeReference extendsBound = jetTypeParameter.getExtendsBound();
|
||||||
if (extendsBound != null) {
|
if (extendsBound != null) {
|
||||||
upperBounds.add(resolveBoundType(extendsBound));
|
upperBounds.add(resolveBoundType(extendsBound));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resolveUpperBoundsFromWhereClause(upperBounds);
|
||||||
|
|
||||||
if (upperBounds.isEmpty()) {
|
if (upperBounds.isEmpty()) {
|
||||||
upperBounds.add(KotlinBuiltIns.getInstance().getDefaultBound());
|
upperBounds.add(KotlinBuiltIns.getInstance().getDefaultBound());
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
// PARAM_TYPES: A<T>
|
// PARAM_TYPES: A<T>
|
||||||
// PARAM_TYPES: A.B<U>
|
// PARAM_TYPES: A.B<U>
|
||||||
// PARAM_TYPES: V, Data
|
// PARAM_TYPES: V, Data
|
||||||
// PARAM_DESCRIPTOR: internal final class A<T : DataEx> where T : Data defined in root package
|
// PARAM_DESCRIPTOR: internal final class A<T : Data> where T : DataEx defined in root package
|
||||||
// PARAM_DESCRIPTOR: internal final inner class B<U : DataExEx> where U : Data defined in A
|
// PARAM_DESCRIPTOR: internal final inner class B<U : Data> where U : DataExEx defined in A
|
||||||
// PARAM_DESCRIPTOR: value-parameter val v: V defined in A.B.foo
|
// PARAM_DESCRIPTOR: value-parameter val v: V defined in A.B.foo
|
||||||
open class Data(val x: Int)
|
open class Data(val x: Int)
|
||||||
trait DataEx
|
trait DataEx
|
||||||
|
|||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
// PARAM_TYPES: A<T>
|
// PARAM_TYPES: A<T>
|
||||||
// PARAM_TYPES: A.B<U>
|
// PARAM_TYPES: A.B<U>
|
||||||
// PARAM_TYPES: V, Data
|
// PARAM_TYPES: V, Data
|
||||||
// PARAM_DESCRIPTOR: internal final class A<T : DataEx> where T : Data defined in root package
|
// PARAM_DESCRIPTOR: internal final class A<T : Data> where T : DataEx defined in root package
|
||||||
// PARAM_DESCRIPTOR: internal final inner class B<U : DataExEx> where U : Data defined in A
|
// PARAM_DESCRIPTOR: internal final inner class B<U : Data> where U : DataExEx defined in A
|
||||||
// PARAM_DESCRIPTOR: value-parameter val v: V defined in A.B.foo
|
// PARAM_DESCRIPTOR: value-parameter val v: V defined in A.B.foo
|
||||||
open class Data(val x: Int)
|
open class Data(val x: Int)
|
||||||
trait DataEx
|
trait DataEx
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
// PARAM_TYPES: A.B<U>
|
// PARAM_TYPES: A.B<U>
|
||||||
// PARAM_TYPES: V, Data
|
// PARAM_TYPES: V, Data
|
||||||
// PARAM_DESCRIPTOR: internal final inner class B<U : DataExEx> where U : Data defined in A
|
// PARAM_DESCRIPTOR: internal final inner class B<U : Data> where U : DataExEx defined in A
|
||||||
// PARAM_DESCRIPTOR: value-parameter val v: V defined in A.B.foo
|
// PARAM_DESCRIPTOR: value-parameter val v: V defined in A.B.foo
|
||||||
open class Data(val x: Int)
|
open class Data(val x: Int)
|
||||||
trait DataEx
|
trait DataEx
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
// PARAM_TYPES: A.B<U>
|
// PARAM_TYPES: A.B<U>
|
||||||
// PARAM_TYPES: V, Data
|
// PARAM_TYPES: V, Data
|
||||||
// PARAM_DESCRIPTOR: internal final inner class B<U : DataExEx> where U : Data defined in A
|
// PARAM_DESCRIPTOR: internal final inner class B<U : Data> where U : DataExEx defined in A
|
||||||
// PARAM_DESCRIPTOR: value-parameter val v: V defined in A.B.foo
|
// PARAM_DESCRIPTOR: value-parameter val v: V defined in A.B.foo
|
||||||
open class Data(val x: Int)
|
open class Data(val x: Int)
|
||||||
trait DataEx
|
trait DataEx
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
// PARAM_TYPES: A<T>
|
// PARAM_TYPES: A<T>
|
||||||
// PARAM_TYPES: V, Data
|
// PARAM_TYPES: V, Data
|
||||||
// PARAM_DESCRIPTOR: internal final class A<T : DataEx> where T : Data defined in root package
|
// PARAM_DESCRIPTOR: internal final class A<T : Data> where T : DataEx defined in root package
|
||||||
// PARAM_DESCRIPTOR: value-parameter val v: V defined in A.foo
|
// PARAM_DESCRIPTOR: value-parameter val v: V defined in A.foo
|
||||||
open class Data(val x: Int)
|
open class Data(val x: Int)
|
||||||
trait DataEx
|
trait DataEx
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
// PARAM_TYPES: A<T>
|
// PARAM_TYPES: A<T>
|
||||||
// PARAM_TYPES: V, Data
|
// PARAM_TYPES: V, Data
|
||||||
// PARAM_DESCRIPTOR: internal final class A<T : DataEx> where T : Data defined in root package
|
// PARAM_DESCRIPTOR: internal final class A<T : Data> where T : DataEx defined in root package
|
||||||
// PARAM_DESCRIPTOR: value-parameter val v: V defined in A.foo
|
// PARAM_DESCRIPTOR: value-parameter val v: V defined in A.foo
|
||||||
open class Data(val x: Int)
|
open class Data(val x: Int)
|
||||||
trait DataEx
|
trait DataEx
|
||||||
|
|||||||
Reference in New Issue
Block a user