From b497fcc16730b7de6200e08fd3b1961d526e91ad Mon Sep 17 00:00:00 2001 From: Alex Tkachman Date: Fri, 10 Aug 2012 09:40:59 +0300 Subject: [PATCH] removing hack where ClosureAnnotator deals with range class objects --- .../jet/codegen/ClosureAnnotator.java | 30 ++++--------------- .../jetbrains/jet/codegen/JetTypeMapper.java | 3 ++ .../jet/lang/resolve/java/JvmAbi.java | 3 ++ 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ClosureAnnotator.java b/compiler/backend/src/org/jetbrains/jet/codegen/ClosureAnnotator.java index aa76f53a2f4..5dfd501ff89 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ClosureAnnotator.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ClosureAnnotator.java @@ -18,7 +18,6 @@ package org.jetbrains.jet.codegen; import com.intellij.util.containers.MultiMap; 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.*; @@ -30,8 +29,6 @@ import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.types.lang.JetStandardClasses; -import org.jetbrains.jet.lang.types.lang.JetStandardLibrary; -import org.jetbrains.jet.lang.types.lang.PrimitiveType; import javax.inject.Inject; import java.util.*; @@ -67,20 +64,6 @@ public class ClosureAnnotator { public void init() { mapFilesToNamespaces(files); prepareAnonymousClasses(); - prepareClassObjectsForBuiltinRanges(); - } - - private void prepareClassObjectsForBuiltinRanges() { - // this is needed for range classes because they have class objects with - // intrinsic members - JetScope stdLibraryScope = JetStandardLibrary.getInstance().getLibraryScope(); - for (PrimitiveType type : PrimitiveType.NUMBER_TYPES) { - ClassDescriptor klass = (ClassDescriptor) stdLibraryScope.getClassifier(type.getRangeTypeName()); - String rangeInternalName = JvmClassName.byFqNameWithoutInnerClasses( - JetStandardClasses.STANDARD_CLASSES_FQNAME.child(type.getRangeTypeName())).getInternalName(); - JvmClassName classObjectInternalName = JvmClassName.byInternalName(rangeInternalName + JvmAbi.CLASS_OBJECT_SUFFIX); - classNamesForClassDescriptor.put(klass.getClassObjectDescriptor(), classObjectInternalName); - } } @@ -238,8 +221,8 @@ public class ClosureAnnotator { } private class MyJetVisitorVoid extends JetVisitorVoid { - private LinkedList classStack = new LinkedList(); - private LinkedList nameStack = new LinkedList(); + private final LinkedList classStack = new LinkedList(); + private final LinkedList nameStack = new LinkedList(); private void recordEnclosing(ClassDescriptor classDescriptor) { if (classStack.size() > 0) { @@ -397,7 +380,9 @@ public class ClosureAnnotator { else if (containingDeclaration instanceof NamespaceDescriptor) { String peek = nameStack.peek(); if (peek.isEmpty()) { peek = "namespace"; } - else { peek = peek + "/namespace"; } + else { + peek += "/namespace"; + } nameStack.push(peek + '$' + function.getName()); super.visitNamedFunction(function); nameStack.pop(); @@ -426,9 +411,4 @@ public class ClosureAnnotator { public JvmClassName classNameForClassDescriptor(@NotNull ClassDescriptor classDescriptor) { return classNamesForClassDescriptor.get(classDescriptor); } - - @Nullable - public JvmClassName classNameForClassDescriptorIfDefined(@NotNull ClassDescriptor classDescriptor) { - return classNamesForClassDescriptor.get(classDescriptor); - } } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java index 2e801326afe..2eb6a38442b 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java @@ -341,6 +341,9 @@ public class JetTypeMapper { if (containingKlass.getKind() == ClassKind.ENUM_CLASS) { return getFQName(containingKlass); } + else { + return getFQName(containingKlass) + JvmAbi.CLASS_OBJECT_SUFFIX; + } } } else if (klass.getKind() == ClassKind.ENUM_ENTRY) { diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JvmAbi.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JvmAbi.java index 0c155960369..d130927080e 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JvmAbi.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JvmAbi.java @@ -30,4 +30,7 @@ public class JvmAbi { public static final JvmClassName JETBRAINS_NOT_NULL_ANNOTATION = JvmClassName.byFqNameWithoutInnerClasses("org.jetbrains.annotations.NotNull"); + + private JvmAbi() { + } }