Set return type for the fake constructor of a class object
This commit is contained in:
@@ -292,7 +292,8 @@ public class TypeHierarchyResolver {
|
|||||||
classObjectDescriptor.setVisibility(DescriptorResolver.resolveVisibilityFromModifiers(klass.getModifierList()));
|
classObjectDescriptor.setVisibility(DescriptorResolver.resolveVisibilityFromModifiers(klass.getModifierList()));
|
||||||
classObjectDescriptor.setTypeParameterDescriptors(new ArrayList<TypeParameterDescriptor>(0));
|
classObjectDescriptor.setTypeParameterDescriptors(new ArrayList<TypeParameterDescriptor>(0));
|
||||||
classObjectDescriptor.createTypeConstructor();
|
classObjectDescriptor.createTypeConstructor();
|
||||||
createPrimaryConstructorForObject(null, classObjectDescriptor);
|
ConstructorDescriptorImpl primaryConstructorForObject = createPrimaryConstructorForObject(null, classObjectDescriptor);
|
||||||
|
primaryConstructorForObject.setReturnType(classObjectDescriptor.getDefaultType());
|
||||||
mutableClassDescriptor.getBuilder().setClassObjectDescriptor(classObjectDescriptor);
|
mutableClassDescriptor.getBuilder().setClassObjectDescriptor(classObjectDescriptor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -327,10 +328,12 @@ public class TypeHierarchyResolver {
|
|||||||
return mutableClassDescriptor;
|
return mutableClassDescriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createPrimaryConstructorForObject(@Nullable PsiElement object, MutableClassDescriptor mutableClassDescriptor) {
|
private ConstructorDescriptorImpl createPrimaryConstructorForObject(@Nullable PsiElement object,
|
||||||
ConstructorDescriptor constructorDescriptor = DescriptorResolver
|
MutableClassDescriptor mutableClassDescriptor) {
|
||||||
|
ConstructorDescriptorImpl constructorDescriptor = DescriptorResolver
|
||||||
.createPrimaryConstructorForObject(object, mutableClassDescriptor, trace);
|
.createPrimaryConstructorForObject(object, mutableClassDescriptor, trace);
|
||||||
mutableClassDescriptor.setPrimaryConstructor(constructorDescriptor, trace);
|
mutableClassDescriptor.setPrimaryConstructor(constructorDescriptor, trace);
|
||||||
|
return constructorDescriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void prepareForDeferredCall(@NotNull JetScope outerScope,
|
private void prepareForDeferredCall(@NotNull JetScope outerScope,
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
namespace <root>
|
||||||
|
|
||||||
|
internal final enum class Test : jet.Any {
|
||||||
|
public final /*constructor*/ fun <init>(/*0*/ a: jet.Int): Test
|
||||||
|
internal final object Test.<class-object-for-Test> {
|
||||||
|
internal final /*constructor*/ fun <init>(): Test.<class-object-for-Test>
|
||||||
|
internal final val A: Test.<class-object-for-Test>.A
|
||||||
|
internal final val C: Test.<class-object-for-Test>.C
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user