Ability to generate light classes when a type parameter appears in supertypes
This commit is contained in:
@@ -347,13 +347,15 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
|||||||
for (JetDelegationSpecifier specifier : myClass.getDelegationSpecifiers()) {
|
for (JetDelegationSpecifier specifier : myClass.getDelegationSpecifiers()) {
|
||||||
JetType superType = bindingContext.get(BindingContext.TYPE, specifier.getTypeReference());
|
JetType superType = bindingContext.get(BindingContext.TYPE, specifier.getTypeReference());
|
||||||
assert superType != null : "No supertype for class: " + myClass.getText();
|
assert superType != null : "No supertype for class: " + myClass.getText();
|
||||||
ClassDescriptor superClassDescriptor = (ClassDescriptor) superType.getConstructor().getDeclarationDescriptor();
|
ClassifierDescriptor classifierDescriptor = superType.getConstructor().getDeclarationDescriptor();
|
||||||
if (isInterface(superClassDescriptor)) {
|
if (classifierDescriptor instanceof ClassDescriptor) {
|
||||||
interfaceSupertypes.add(superType);
|
ClassDescriptor superClassDescriptor = (ClassDescriptor) classifierDescriptor;
|
||||||
|
if (isInterface(superClassDescriptor)) {
|
||||||
|
interfaceSupertypes.add(superType);
|
||||||
|
|
||||||
assert superClassDescriptor != null : "should be already checked by isInterface()";
|
if (JvmAbi.K_OBJECT.equalsTo(DescriptorUtils.getFqName(superClassDescriptor))) {
|
||||||
if (JvmAbi.K_OBJECT.equalsTo(DescriptorUtils.getFqName(superClassDescriptor))) {
|
explicitKObject = true;
|
||||||
explicitKObject = true;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -400,8 +402,10 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
|||||||
assert superType != null :
|
assert superType != null :
|
||||||
String.format("No type recorded for \n---\n%s\n---\n", JetPsiUtil.getElementTextWithContext(specifier));
|
String.format("No type recorded for \n---\n%s\n---\n", JetPsiUtil.getElementTextWithContext(specifier));
|
||||||
|
|
||||||
ClassDescriptor superClassDescriptor = (ClassDescriptor) superType.getConstructor().getDeclarationDescriptor();
|
ClassifierDescriptor classifierDescriptor = superType.getConstructor().getDeclarationDescriptor();
|
||||||
assert superClassDescriptor != null;
|
if (!(classifierDescriptor instanceof ClassDescriptor)) continue;
|
||||||
|
|
||||||
|
ClassDescriptor superClassDescriptor = (ClassDescriptor) classifierDescriptor;
|
||||||
if (!isInterface(superClassDescriptor)) {
|
if (!isInterface(superClassDescriptor)) {
|
||||||
superClassType = superType;
|
superClassType = superType;
|
||||||
superClassAsmType = typeMapper.mapClass(superClassDescriptor);
|
superClassAsmType = typeMapper.mapClass(superClassDescriptor);
|
||||||
|
|||||||
Reference in New Issue
Block a user