Set return type for the fake constructor of a class object

This commit is contained in:
Andrey Breslav
2012-06-26 18:00:23 +02:00
parent 2c688a5e3c
commit fe394b9827
2 changed files with 16 additions and 3 deletions
@@ -292,7 +292,8 @@ public class TypeHierarchyResolver {
classObjectDescriptor.setVisibility(DescriptorResolver.resolveVisibilityFromModifiers(klass.getModifierList()));
classObjectDescriptor.setTypeParameterDescriptors(new ArrayList<TypeParameterDescriptor>(0));
classObjectDescriptor.createTypeConstructor();
createPrimaryConstructorForObject(null, classObjectDescriptor);
ConstructorDescriptorImpl primaryConstructorForObject = createPrimaryConstructorForObject(null, classObjectDescriptor);
primaryConstructorForObject.setReturnType(classObjectDescriptor.getDefaultType());
mutableClassDescriptor.getBuilder().setClassObjectDescriptor(classObjectDescriptor);
}
}
@@ -327,10 +328,12 @@ public class TypeHierarchyResolver {
return mutableClassDescriptor;
}
private void createPrimaryConstructorForObject(@Nullable PsiElement object, MutableClassDescriptor mutableClassDescriptor) {
ConstructorDescriptor constructorDescriptor = DescriptorResolver
private ConstructorDescriptorImpl createPrimaryConstructorForObject(@Nullable PsiElement object,
MutableClassDescriptor mutableClassDescriptor) {
ConstructorDescriptorImpl constructorDescriptor = DescriptorResolver
.createPrimaryConstructorForObject(object, mutableClassDescriptor, trace);
mutableClassDescriptor.setPrimaryConstructor(constructorDescriptor, trace);
return constructorDescriptor;
}
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
}
}