提交 7352da34 编写于 作者: S Stepan Koltsov

resolve type parameters that reference type variables declared after

like

Aaa<B extends Bbb<C>, C>

#KT-1731 fixed
上级 615330ca
......@@ -869,10 +869,16 @@ public class JavaDescriptorResolver {
private void initializeTypeParameters(List<TypeParameterDescriptorInitialization> typeParametersInitialization, @NotNull DeclarationDescriptor typeParametersOwner, @NotNull String context) {
List<TypeParameterDescriptor> prevTypeParameters = new ArrayList<TypeParameterDescriptor>();
List<TypeParameterDescriptor> typeParameters = Lists.newArrayList();
for (TypeParameterDescriptorInitialization typeParameterDescriptor : typeParametersInitialization) {
typeParameters.add(typeParameterDescriptor.descriptor);
}
for (TypeParameterDescriptorInitialization psiTypeParameter : typeParametersInitialization) {
prevTypeParameters.add(psiTypeParameter.descriptor);
initializeTypeParameter(psiTypeParameter,
TypeVariableResolvers.typeVariableResolverFromTypeParameters(prevTypeParameters, typeParametersOwner, context));
TypeVariableResolvers.typeVariableResolverFromTypeParameters(typeParameters, typeParametersOwner, context));
}
}
......
package test;
interface Foo<Q> {
}
class ClassWithTypePRefNext<R extends Foo<P>, P> {
}
package test
trait Foo<erased Q> : java.lang.Object
open class ClassWithTypePRefNext<erased R : Foo<P>?, erased P>() : java.lang.Object()
namespace test
abstract trait test.Foo</*0*/ Q : jet.Any?> : java.lang.Object {
}
open class test.ClassWithTypePRefNext</*0*/ R : test.Foo<P>?, /*1*/ P : jet.Any?> : java.lang.Object {
final /*constructor*/ fun </*0*/ R : test.Foo<P>?, /*1*/ P : jet.Any?><init>(): test.ClassWithTypePRefNext<R, P>
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册