diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java index a6621dfc241..797cb0983cc 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java @@ -22,7 +22,6 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.asm4.Opcodes; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.java.JvmPrimitiveType; import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe; @@ -36,6 +35,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getClassObjectName; + /** * @author yole * @author alex.tkachman @@ -145,7 +146,8 @@ public class IntrinsicMethods { for (PrimitiveType type : PrimitiveType.NUMBER_TYPES) { intrinsicsMap.registerIntrinsic( - JetStandardClasses.STANDARD_CLASSES_FQNAME.child(type.getRangeTypeName()).toUnsafe().child(JetPsiUtil.NO_NAME_PROVIDED), + JetStandardClasses.STANDARD_CLASSES_FQNAME.child(type.getRangeTypeName()).toUnsafe().child( + getClassObjectName(type.getRangeTypeName())), Name.identifier("EMPTY"), -1, new EmptyRange(type)); } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index 44f298cdf4a..6d839159dc1 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -28,7 +28,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.constants.*; import org.jetbrains.jet.lang.resolve.constants.StringValue; @@ -48,6 +47,8 @@ import org.jetbrains.jet.utils.ExceptionUtils; import javax.inject.Inject; import java.util.*; +import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getClassObjectName; + /** * @author abreslav */ @@ -534,7 +535,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes classDescriptorCache.put(fqName, classData); classData.classDescriptor.setSupertypes(getSupertypes(new PsiClassWrapper(classObjectPsiClass), classData, new ArrayList(0))); - classData.classDescriptor.setName(JetPsiUtil.NO_NAME_PROVIDED); // TODO + classData.classDescriptor.setName(getClassObjectName(containing.getName())); classData.classDescriptor.setModality(Modality.FINAL); classData.classDescriptor.setVisibility(containing.getVisibility()); classData.classDescriptor.setTypeParameterDescriptors(new ArrayList(0)); 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 589cc4961c2..6f769c354a3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java @@ -25,6 +25,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; +import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.RedeclarationHandler; import org.jetbrains.jet.lang.resolve.scopes.WritableScope; @@ -230,7 +231,8 @@ public class TypeHierarchyResolver { @Override public void visitObjectDeclaration(JetObjectDeclaration declaration) { - final MutableClassDescriptor objectDescriptor = createClassDescriptorForObject(declaration, owner, outerScope); + final MutableClassDescriptor objectDescriptor = + createClassDescriptorForObject(declaration, owner, outerScope, JetPsiUtil.safeName(declaration.getName())); owner.addObjectDescriptor(objectDescriptor); trace.record(FQNAME_TO_CLASS_DESCRIPTOR, JetPsiUtil.getFQName(declaration), objectDescriptor); } @@ -270,8 +272,9 @@ public class TypeHierarchyResolver { public void visitClassObject(JetClassObject classObject) { JetObjectDeclaration objectDeclaration = classObject.getObjectDeclaration(); if (objectDeclaration != null) { + Name classObjectName = getClassObjectName(owner.getOwnerForChildren().getName()); MutableClassDescriptor classObjectDescriptor = - createClassDescriptorForObject(objectDeclaration, owner, getStaticScope(classObject, owner)); + createClassDescriptorForObject(objectDeclaration, owner, getStaticScope(classObject, owner), classObjectName); NamespaceLikeBuilder.ClassObjectStatus status = owner.setClassObjectDescriptor(classObjectDescriptor); switch (status) { case DUPLICATE: @@ -306,10 +309,11 @@ public class TypeHierarchyResolver { } private MutableClassDescriptor createClassDescriptorForObject( - @NotNull JetObjectDeclaration declaration, @NotNull NamespaceLikeBuilder owner, JetScope scope + @NotNull JetObjectDeclaration declaration, @NotNull NamespaceLikeBuilder owner, + @NotNull JetScope scope, @NotNull Name name ) { MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor( - owner.getOwnerForChildren(), scope, ClassKind.OBJECT, JetPsiUtil.safeName(declaration.getName())); + owner.getOwnerForChildren(), scope, ClassKind.OBJECT, name); context.getObjects().put(declaration, mutableClassDescriptor); JetScope classScope = mutableClassDescriptor.getScopeForMemberResolution(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyClassDescriptor.java index 1c88d865f00..75a2c786be6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyClassDescriptor.java @@ -223,10 +223,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes JetClassLikeInfo classObjectInfo = getClassObjectInfo(classObject); if (classObjectInfo != null) { - Name classObjectName = getKind() == ClassKind.ENUM_CLASS - ? getClassObjectName(getName()) - : JetPsiUtil.NO_NAME_PROVIDED; - classObjectDescriptor = new LazyClassDescriptor(resolveSession, this, classObjectName, classObjectInfo); + classObjectDescriptor = new LazyClassDescriptor(resolveSession, this, getClassObjectName(getName()), classObjectInfo); } classObjectDescriptorResolved = true; } diff --git a/compiler/testData/builtin-classes.txt b/compiler/testData/builtin-classes.txt index 3938ad990a6..4dc04ec2196 100644 --- a/compiler/testData/builtin-classes.txt +++ b/compiler/testData/builtin-classes.txt @@ -129,8 +129,8 @@ public final class jet.ByteRange : jet.Range, jet.ByteIterable { public final val size: jet.Int public final val start: jet.Byte public final fun step(/*0*/ step: jet.Int): jet.ByteIterator - public final class object jet.ByteRange. : jet.Any { - internal final /*constructor*/ fun (): jet.ByteRange. + public final class object jet.ByteRange. : jet.Any { + internal final /*constructor*/ fun (): jet.ByteRange. public final val EMPTY: jet.ByteRange } } @@ -222,8 +222,8 @@ public final class jet.CharRange : jet.Range, jet.CharIterable { public final val size: jet.Int public final val start: jet.Char public final fun step(/*0*/ step: jet.Int): jet.CharIterator - public final class object jet.CharRange. : jet.Any { - internal final /*constructor*/ fun (): jet.CharRange. + public final class object jet.CharRange. : jet.Any { + internal final /*constructor*/ fun (): jet.CharRange. public final val EMPTY: jet.CharRange } } @@ -324,8 +324,8 @@ public final class jet.DoubleRange : jet.Range { public final val size: jet.Double public final val start: jet.Double public final fun step(/*0*/ step: jet.Double): jet.DoubleIterator - public final class object jet.DoubleRange. : jet.Any { - internal final /*constructor*/ fun (): jet.DoubleRange. + public final class object jet.DoubleRange. : jet.Any { + internal final /*constructor*/ fun (): jet.DoubleRange. public final val EMPTY: jet.DoubleRange } } @@ -516,8 +516,8 @@ public final class jet.FloatRange : jet.Range { public final val size: jet.Float public final val start: jet.Float public final fun step(/*0*/ step: jet.Float): jet.FloatIterator - public final class object jet.FloatRange. : jet.Any { - internal final /*constructor*/ fun (): jet.FloatRange. + public final class object jet.FloatRange. : jet.Any { + internal final /*constructor*/ fun (): jet.FloatRange. public final val EMPTY: jet.FloatRange } } @@ -716,8 +716,8 @@ public final class jet.IntRange : jet.Range, jet.IntIterable { public final val size: jet.Int public final val start: jet.Int public final fun step(/*0*/ step: jet.Int): jet.IntIterator - public final class object jet.IntRange. : jet.Any { - internal final /*constructor*/ fun (): jet.IntRange. + public final class object jet.IntRange. : jet.Any { + internal final /*constructor*/ fun (): jet.IntRange. public final val EMPTY: jet.IntRange } } @@ -827,8 +827,8 @@ public final class jet.LongRange : jet.Range, jet.LongIterable { public final val size: jet.Long public final val start: jet.Long public final fun step(/*0*/ step: jet.Long): jet.LongIterator - public final class object jet.LongRange. : jet.Any { - internal final /*constructor*/ fun (): jet.LongRange. + public final class object jet.LongRange. : jet.Any { + internal final /*constructor*/ fun (): jet.LongRange. public final val EMPTY: jet.LongRange } } @@ -942,8 +942,8 @@ public final class jet.ShortRange : jet.Range, jet.ShortIterable { public final val size: jet.Int public final val start: jet.Short public final fun step(/*0*/ step: jet.Int): jet.ShortIterator - public final class object jet.ShortRange. : jet.Any { - internal final /*constructor*/ fun (): jet.ShortRange. + public final class object jet.ShortRange. : jet.Any { + internal final /*constructor*/ fun (): jet.ShortRange. public final val EMPTY: jet.ShortRange } } diff --git a/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectDeclaresVal.txt b/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectDeclaresVal.txt index 71902dc133d..78075b87e0a 100644 --- a/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectDeclaresVal.txt +++ b/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectDeclaresVal.txt @@ -2,8 +2,8 @@ namespace test internal final class test.ClassObjectDeclaresProperty : jet.Any { public final /*constructor*/ fun (): test.ClassObjectDeclaresProperty - internal final class object test.ClassObjectDeclaresProperty. : jet.Any { - internal final /*constructor*/ fun (): test.ClassObjectDeclaresProperty. + internal final class object test.ClassObjectDeclaresProperty. : jet.Any { + internal final /*constructor*/ fun (): test.ClassObjectDeclaresProperty. internal final val i: jet.Int } } diff --git a/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectDeclaresVar.txt b/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectDeclaresVar.txt index 107f10eb323..de13bcc42cd 100644 --- a/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectDeclaresVar.txt +++ b/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectDeclaresVar.txt @@ -2,8 +2,8 @@ namespace test internal final class test.ClassObjectDeclaresProperty : jet.Any { public final /*constructor*/ fun (): test.ClassObjectDeclaresProperty - internal final class object test.ClassObjectDeclaresProperty. : jet.Any { - internal final /*constructor*/ fun (): test.ClassObjectDeclaresProperty. + internal final class object test.ClassObjectDeclaresProperty. : jet.Any { + internal final /*constructor*/ fun (): test.ClassObjectDeclaresProperty. internal final var s: jet.String } } diff --git a/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectExtendsTrait.txt b/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectExtendsTrait.txt index da0f29a0a7f..2015000753d 100644 --- a/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectExtendsTrait.txt +++ b/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectExtendsTrait.txt @@ -4,7 +4,7 @@ internal abstract trait test.Bbb : jet.Any { } internal final class test.ClassObjectextendsTrait : jet.Any { public final /*constructor*/ fun (): test.ClassObjectextendsTrait - internal final class object test.ClassObjectextendsTrait. : test.Bbb { - internal final /*constructor*/ fun (): test.ClassObjectextendsTrait. + internal final class object test.ClassObjectextendsTrait. : test.Bbb { + internal final /*constructor*/ fun (): test.ClassObjectextendsTrait. } } diff --git a/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectExtendsTraitWithTP.txt b/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectExtendsTraitWithTP.txt index e7b4704b70c..2bda137cde4 100644 --- a/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectExtendsTraitWithTP.txt +++ b/compiler/testData/readKotlinBinaryClass/classObject/ClassObjectExtendsTraitWithTP.txt @@ -4,7 +4,7 @@ internal abstract trait test.Bbb : jet.Any { } internal final class test.ClassObjectExtendsTraitWithTP : jet.Any { public final /*constructor*/ fun (): test.ClassObjectExtendsTraitWithTP - internal final class object test.ClassObjectExtendsTraitWithTP. : test.Bbb { - internal final /*constructor*/ fun (): test.ClassObjectExtendsTraitWithTP. + internal final class object test.ClassObjectExtendsTraitWithTP. : test.Bbb { + internal final /*constructor*/ fun (): test.ClassObjectExtendsTraitWithTP. } } diff --git a/compiler/testData/readKotlinBinaryClass/classObject/SimpleClassObject.txt b/compiler/testData/readKotlinBinaryClass/classObject/SimpleClassObject.txt index 1b189d02ce5..0836f970fa5 100644 --- a/compiler/testData/readKotlinBinaryClass/classObject/SimpleClassObject.txt +++ b/compiler/testData/readKotlinBinaryClass/classObject/SimpleClassObject.txt @@ -2,7 +2,7 @@ namespace test internal final class test.SimpleClassObject : jet.Any { public final /*constructor*/ fun (): test.SimpleClassObject - internal final class object test.SimpleClassObject. : jet.Any { - internal final /*constructor*/ fun (): test.SimpleClassObject. + internal final class object test.SimpleClassObject. : jet.Any { + internal final /*constructor*/ fun (): test.SimpleClassObject. } } diff --git a/compiler/testData/renderer/Classes.kt b/compiler/testData/renderer/Classes.kt index 33bbd20e02e..9944c484b34 100644 --- a/compiler/testData/renderer/Classes.kt +++ b/compiler/testData/renderer/Classes.kt @@ -38,4 +38,4 @@ trait TheTrait { //internal trait TheTrait defined in rendererTest //internal abstract fun abstractFun() : Unit defined in rendererTest.TheTrait //object : rendererTest.TheClass defined in rendererTest.TheTrait -//internal final fun classObjectFunction() : jet.Int defined in rendererTest.TheTrait. \ No newline at end of file +//internal final fun classObjectFunction() : jet.Int defined in rendererTest.TheTrait. \ No newline at end of file