LTDA: Make supertypes in lazy type parameters be recorded in order of declaration

This commit is contained in:
Nikolay Krasko
2014-09-11 16:18:01 +04:00
parent 261d4293ae
commit 365319a8e6
7 changed files with 10 additions and 10 deletions
@@ -65,13 +65,13 @@ public class LazyTypeParameterDescriptor extends AbstractLazyTypeParameterDescri
JetTypeParameter jetTypeParameter = this.jetTypeParameter;
resolveUpperBoundsFromWhereClause(upperBounds);
JetTypeReference extendsBound = jetTypeParameter.getExtendsBound();
if (extendsBound != null) {
upperBounds.add(resolveBoundType(extendsBound));
}
resolveUpperBoundsFromWhereClause(upperBounds);
if (upperBounds.isEmpty()) {
upperBounds.add(KotlinBuiltIns.getInstance().getDefaultBound());
}
@@ -1,8 +1,8 @@
// PARAM_TYPES: A<T>
// PARAM_TYPES: A.B<U>
// PARAM_TYPES: V, Data
// PARAM_DESCRIPTOR: internal final class A<T : DataEx> where T : Data defined in root package
// PARAM_DESCRIPTOR: internal final inner class B<U : DataExEx> where U : Data defined in A
// PARAM_DESCRIPTOR: internal final class A<T : Data> where T : DataEx defined in root package
// 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
open class Data(val x: Int)
trait DataEx
@@ -1,8 +1,8 @@
// PARAM_TYPES: A<T>
// PARAM_TYPES: A.B<U>
// PARAM_TYPES: V, Data
// PARAM_DESCRIPTOR: internal final class A<T : DataEx> where T : Data defined in root package
// PARAM_DESCRIPTOR: internal final inner class B<U : DataExEx> where U : Data defined in A
// PARAM_DESCRIPTOR: internal final class A<T : Data> where T : DataEx defined in root package
// 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
open class Data(val x: Int)
trait DataEx
@@ -1,6 +1,6 @@
// PARAM_TYPES: A.B<U>
// 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
open class Data(val x: Int)
trait DataEx
@@ -1,6 +1,6 @@
// PARAM_TYPES: A.B<U>
// 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
open class Data(val x: Int)
trait DataEx
@@ -1,6 +1,6 @@
// PARAM_TYPES: A<T>
// 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
open class Data(val x: Int)
trait DataEx
@@ -1,6 +1,6 @@
// PARAM_TYPES: A<T>
// 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
open class Data(val x: Int)
trait DataEx