Fix JavaClassifierType.getTypeArguments impls

Make them return arguments both for current classifier and for the outer one
This commit is contained in:
Denis Zharkov
2015-11-03 18:17:28 +03:00
parent 910718ff45
commit c5103f9ac4
11 changed files with 102 additions and 9 deletions
@@ -0,0 +1,14 @@
package test
public open class InnerClassesInGeneric</*0*/ P : kotlin.Any!, /*1*/ Q : kotlin.Any!> {
public constructor InnerClassesInGeneric</*0*/ P : kotlin.Any!, /*1*/ Q : kotlin.Any!>()
public open inner class Inner {
public constructor Inner()
}
public open inner class Inner2 : test.InnerClassesInGeneric<kotlin.Any!, kotlin.Any!>.Inner {
public constructor Inner2()
public open operator fun iterator(): kotlin.(Mutable)Iterator<P!>!
}
}
@@ -7,7 +7,7 @@ public open class InnerClassesInGeneric</*0*/ P : kotlin.Any!, /*1*/ Q : kotlin.
public constructor Inner()
}
public open inner class Inner2 : test.InnerClassesInGeneric.Inner {
public open inner class Inner2 : test.InnerClassesInGeneric<P!, Q!>.Inner {
public constructor Inner2()
public open operator fun iterator(): kotlin.(Mutable)Iterator<P!>!
}
@@ -0,0 +1,28 @@
package test
public open class InnerOfGeneric {
public constructor InnerOfGeneric()
public abstract inner class A</*0*/ K : kotlin.Any!> {
public constructor A</*0*/ K : kotlin.Any!>()
public abstract inner class Inner : test.InnerOfGeneric.S<K!> {
public constructor Inner()
public open override /*1*/ /*fake_override*/ fun iterator(): kotlin.(Mutable)Iterator<K!>!
}
}
public open inner class B</*0*/ L : kotlin.Any!> : test.InnerOfGeneric.A<L!> {
public constructor B</*0*/ L : kotlin.Any!>()
public open inner class SubInner : test.InnerOfGeneric.A<kotlin.Any!>.Inner {
public constructor SubInner()
public open override /*1*/ fun iterator(): kotlin.(Mutable)Iterator<L!>!
}
}
public open inner class S</*0*/ E : kotlin.Any!> {
public constructor S</*0*/ E : kotlin.Any!>()
public open operator fun iterator(): kotlin.(Mutable)Iterator<E!>!
}
}
+1 -1
View File
@@ -15,7 +15,7 @@ public open class InnerOfGeneric {
public open inner class B</*0*/ L : kotlin.Any!> : test.InnerOfGeneric.A<L!> {
public constructor B</*0*/ L : kotlin.Any!>()
public open inner class SubInner : test.InnerOfGeneric.A.Inner {
public open inner class SubInner : test.InnerOfGeneric.A<L!>.Inner {
public constructor SubInner()
public open override /*1*/ fun iterator(): kotlin.(Mutable)Iterator<L!>!
}
@@ -0,0 +1,22 @@
package test
public interface ReturnInnerSubclassOfSupersInner {
public open class Sub</*0*/ B : kotlin.Any!> : test.ReturnInnerSubclassOfSupersInner.Super<B!> {
public constructor Sub</*0*/ B : kotlin.Any!>()
public/*package*/ open inner class Inner : test.ReturnInnerSubclassOfSupersInner.Super<kotlin.Any!>.Inner {
public/*package*/ constructor Inner()
public/*package*/ open override /*1*/ fun get(): test.ReturnInnerSubclassOfSupersInner.Sub<B!>!
}
}
public open class Super</*0*/ A : kotlin.Any!> {
public constructor Super</*0*/ A : kotlin.Any!>()
public/*package*/ open inner class Inner {
public/*package*/ constructor Inner()
public/*package*/ open fun get(): test.ReturnInnerSubclassOfSupersInner.Super<A!>!
}
}
}
@@ -5,7 +5,7 @@ public interface ReturnInnerSubclassOfSupersInner {
public open class Sub</*0*/ B : kotlin.Any!> : test.ReturnInnerSubclassOfSupersInner.Super<B!> {
public constructor Sub</*0*/ B : kotlin.Any!>()
public/*package*/ open inner class Inner : test.ReturnInnerSubclassOfSupersInner.Super.Inner {
public/*package*/ open inner class Inner : test.ReturnInnerSubclassOfSupersInner.Super<B!>.Inner {
public/*package*/ constructor Inner()
public/*package*/ open override /*1*/ fun get(): test.ReturnInnerSubclassOfSupersInner.Sub<B!>!
}
@@ -5,7 +5,7 @@ public interface ReturnInnerSubclassOfSupersInner {
public open class Sub</*0*/ B : kotlin.Any!> : test.ReturnInnerSubclassOfSupersInner.Super<B!> {
public constructor Sub</*0*/ B : kotlin.Any!>()
public/*package*/ open inner class Inner : test.ReturnInnerSubclassOfSupersInner.Super.Inner {
public/*package*/ open inner class Inner : test.ReturnInnerSubclassOfSupersInner.Super<B!>.Inner {
public/*package*/ constructor Inner()
public/*package*/ open override /*1*/ fun get(): test.ReturnInnerSubclassOfSupersInner.Sub<B!>!
}
@@ -8,6 +8,7 @@ public interface WrongNumberOfGenericParameters {
Zero<String> z();
One o0();
// Our Java resolve supposes that return type has exactly one argument
One<String, String> o2();
// This does not produce the expected result, because IDEA thinks Two<X> is a raw type
@@ -2,7 +2,7 @@ package test
public interface WrongNumberOfGenericParameters {
public abstract fun o0(): test.WrongNumberOfGenericParameters.One<(raw) kotlin.Any!>!
public abstract fun o2(): test.WrongNumberOfGenericParameters.One<[ERROR : T]>!
public abstract fun o2(): test.WrongNumberOfGenericParameters.One<kotlin.String!>!
public abstract fun t1(): test.WrongNumberOfGenericParameters.Two<(raw) kotlin.Any!, (raw) kotlin.Any!>!
public abstract fun z(): test.WrongNumberOfGenericParameters.Zero!