use standard method index
This commit is contained in:
@@ -1330,9 +1330,8 @@ public class ExpressionCodegen extends JetVisitor {
|
|||||||
if (declarationDescriptor instanceof TypeParameterDescriptor) {
|
if (declarationDescriptor instanceof TypeParameterDescriptor) {
|
||||||
DeclarationDescriptor containingDeclaration = declarationDescriptor.getContainingDeclaration();
|
DeclarationDescriptor containingDeclaration = declarationDescriptor.getContainingDeclaration();
|
||||||
if (containingDeclaration == contextType && contextType instanceof ClassDescriptor) {
|
if (containingDeclaration == contextType && contextType instanceof ClassDescriptor) {
|
||||||
int index = indexOfTypeParameter((ClassDescriptor) contextType, (TypeParameterDescriptor) declarationDescriptor);
|
|
||||||
loadTypeInfo((ClassDescriptor) contextType, v);
|
loadTypeInfo((ClassDescriptor) contextType, v);
|
||||||
v.iconst(index);
|
v.iconst(((TypeParameterDescriptor) declarationDescriptor).getIndex());
|
||||||
v.invokevirtual("jet/typeinfo/TypeInfo", "getTypeParameter", "(I)Ljet/typeinfo/TypeInfo;");
|
v.invokevirtual("jet/typeinfo/TypeInfo", "getTypeParameter", "(I)Ljet/typeinfo/TypeInfo;");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1361,15 +1360,6 @@ public class ExpressionCodegen extends JetVisitor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int indexOfTypeParameter(ClassDescriptor classDescriptor, TypeParameterDescriptor typeParameterDescriptor) {
|
|
||||||
List<TypeParameterDescriptor> parameters = classDescriptor.getTypeConstructor().getParameters();
|
|
||||||
int index = parameters.indexOf(typeParameterDescriptor);
|
|
||||||
if (index < 0) {
|
|
||||||
throw new UnsupportedOperationException("can't find type parameter index");
|
|
||||||
}
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class CompilationException extends RuntimeException {
|
private static class CompilationException extends RuntimeException {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user