From fe394b9827b3388a29a511be238625035335cf00 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 26 Jun 2012 18:00:23 +0200 Subject: [PATCH] Set return type for the fake constructor of a class object --- .../jet/lang/resolve/TypeHierarchyResolver.java | 9 ++++++--- .../testData/lazyResolve/namespaceComparator/enum.txt | 10 ++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 compiler/testData/lazyResolve/namespaceComparator/enum.txt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java index 2abd4eea273..764085363b3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java @@ -292,7 +292,8 @@ public class TypeHierarchyResolver { classObjectDescriptor.setVisibility(DescriptorResolver.resolveVisibilityFromModifiers(klass.getModifierList())); classObjectDescriptor.setTypeParameterDescriptors(new ArrayList(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, diff --git a/compiler/testData/lazyResolve/namespaceComparator/enum.txt b/compiler/testData/lazyResolve/namespaceComparator/enum.txt new file mode 100644 index 00000000000..d6911f6f63d --- /dev/null +++ b/compiler/testData/lazyResolve/namespaceComparator/enum.txt @@ -0,0 +1,10 @@ +namespace + +internal final enum class Test : jet.Any { + public final /*constructor*/ fun (/*0*/ a: jet.Int): Test + internal final object Test. { + internal final /*constructor*/ fun (): Test. + internal final val A: Test..A + internal final val C: Test..C + } +}