From f7db95f63c7ff4a55a1552db3bef11f600928606 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 23 Sep 2013 21:09:47 +0400 Subject: [PATCH] Minor refactoring in DeserializedClassDescriptor --- .../DeserializedClassDescriptor.java | 44 +++++++------------ 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedClassDescriptor.java b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedClassDescriptor.java index e10de6faec7..6a12d43d68c 100644 --- a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedClassDescriptor.java +++ b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedClassDescriptor.java @@ -45,6 +45,7 @@ import java.util.*; import static org.jetbrains.jet.descriptors.serialization.TypeDeserializer.TypeParameterResolver.NONE; import static org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor.NO_RECEIVER_PARAMETER; import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getClassObjectName; +import static org.jetbrains.jet.lang.resolve.lazy.storage.StorageManager.ReferenceKind.STRONG; public class DeserializedClassDescriptor extends AbstractClassDescriptor implements ClassDescriptor { @@ -77,7 +78,7 @@ public class DeserializedClassDescriptor extends AbstractClassDescriptor impleme public DeserializedClassDescriptor( @NotNull StorageManager storageManager, @NotNull AnnotationDeserializer annotationResolver, - @NotNull final DescriptorFinder descriptorFinder, + @NotNull DescriptorFinder descriptorFinder, @NotNull ClassData classData ) { super(classData.getNameResolver().getClassId(classData.getClassProto().getFqName()).getRelativeClassName().shortName()); @@ -134,25 +135,15 @@ public class DeserializedClassDescriptor extends AbstractClassDescriptor impleme return computeClassObjectDescriptor(); } }); - this.nestedClasses = new NestedClassDescriptors(storageManager, stringSet(classProto.getNestedClassNameList(), nameResolver)) { - @Override - protected ClassDescriptor resolveNestedClass(@NotNull Name name) { - return descriptorFinder.findClass(classId.createNestedClassId(name)); - } - }; - this.nestedObjects = new NestedClassDescriptors(storageManager, stringSet(classProto.getNestedObjectNameList(), nameResolver)) { - @Override - protected ClassDescriptor resolveNestedClass(@NotNull Name name) { - return descriptorFinder.findClass(classId.createNestedClassId(name)); - } - }; + this.nestedClasses = new NestedClassDescriptors(storageManager, names(classProto.getNestedClassNameList(), nameResolver)); + this.nestedObjects = new NestedClassDescriptors(storageManager, names(classProto.getNestedObjectNameList(), nameResolver)); } @NotNull - private static Set stringSet(@NotNull List nameIndices, @NotNull NameResolver nameResolver) { - Set result = new HashSet(nameIndices.size()); + private static Set names(@NotNull List nameIndices, @NotNull NameResolver nameResolver) { + Set result = new HashSet(nameIndices.size()); for (Integer index : nameIndices) { - result.add(nameResolver.getName(index).asString()); + result.add(nameResolver.getName(index)); } return result; } @@ -493,30 +484,27 @@ public class DeserializedClassDescriptor extends AbstractClassDescriptor impleme } } - private abstract static class NestedClassDescriptors { - private final Set declaredNames; + private class NestedClassDescriptors { + private final Set declaredNames; private final MemoizedFunctionToNullable findClass; - public NestedClassDescriptors(@NotNull StorageManager storageManager, @NotNull Set declaredNames) { + public NestedClassDescriptors(@NotNull StorageManager storageManager, @NotNull Set declaredNames) { this.declaredNames = declaredNames; this.findClass = storageManager.createMemoizedFunctionWithNullableValues(new Function() { @Override public ClassDescriptor fun(Name name) { - NestedClassDescriptors _this = NestedClassDescriptors.this; - if (!_this.declaredNames.contains(name.asString())) return null; - - return resolveNestedClass(name); + return NestedClassDescriptors.this.declaredNames.contains(name) ? + descriptorFinder.findClass(classId.createNestedClassId(name)) : + null; } - }, StorageManager.ReferenceKind.STRONG); + }, STRONG); } - protected abstract ClassDescriptor resolveNestedClass(@NotNull Name name); - @NotNull public Collection getAllDescriptors() { Collection result = new ArrayList(declaredNames.size()); - for (String name : declaredNames) { - ClassDescriptor descriptor = findClass.fun(Name.identifier(name)); + for (Name name : declaredNames) { + ClassDescriptor descriptor = findClass.fun(name); if (descriptor != null) { result.add(descriptor); }