Misc refactorings in KotlinBuiltIns

- delete fields which were supposed to be used for caching, but mistakenly were
  never used
- delete/inline unused methods and constants
- delete useless logic related to root package fragment: package fragment
  providers are only supposed to find packages they're aware of
This commit is contained in:
Alexander Udalov
2014-04-29 20:15:10 +04:00
parent 52070dcf9e
commit 16daeb9544
5 changed files with 36 additions and 74 deletions
@@ -52,7 +52,7 @@ import java.util.*;
public class LightClassUtil {
private static final Logger LOG = Logger.getInstance(LightClassUtil.class);
public static final File BUILT_INS_SRC_DIR = new File("core/builtins/native", KotlinBuiltIns.BUILT_INS_PACKAGE_NAME_STRING);
public static final File BUILT_INS_SRC_DIR = new File("core/builtins/native", KotlinBuiltIns.BUILT_INS_PACKAGE_NAME.asString());
/**
* Checks whether the given file is loaded from the location where Kotlin's built-in classes are defined.
@@ -85,7 +85,7 @@ public class LightClassUtil {
@NotNull
public static URL getBuiltInsDirUrl() {
String builtInFilePath = "/" + KotlinBuiltIns.BUILT_INS_PACKAGE_NAME_STRING + "/Library.kt";
String builtInFilePath = "/" + KotlinBuiltIns.BUILT_INS_PACKAGE_NAME + "/Library.kt";
URL url = KotlinBuiltIns.class.getResource(builtInFilePath);
@@ -164,7 +164,7 @@ public class CommonSupertypes {
}
// TODO : attributes?
JetScope newScope = KotlinBuiltIns.getInstance().STUB;
JetScope newScope = JetScope.EMPTY;
DeclarationDescriptor declarationDescriptor = constructor.getDeclarationDescriptor();
if (declarationDescriptor instanceof ClassDescriptor) {
newScope = ((ClassDescriptor) declarationDescriptor).getMemberScope(newProjections);
@@ -1,3 +1,19 @@
/*
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.lang.types.lang;
import kotlin.Function0;
@@ -11,7 +27,6 @@ import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptorImpl;
import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider;
import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
@@ -80,15 +95,10 @@ class BuiltinsPackageFragment extends PackageFragmentDescriptorImpl {
}
private class BuiltinsPackageFragmentProvider implements PackageFragmentProvider {
private final PackageFragmentDescriptor rootPackage = new MutablePackageFragmentDescriptor(getContainingDeclaration(), FqName.ROOT);
@NotNull
@Override
public List<PackageFragmentDescriptor> getPackageFragments(@NotNull FqName fqName) {
if (fqName.isRoot()) {
return Collections.singletonList(rootPackage);
}
else if (KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(fqName)) {
if (KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(fqName)) {
return Collections.<PackageFragmentDescriptor>singletonList(BuiltinsPackageFragment.this);
}
return Collections.emptyList();
@@ -38,10 +38,7 @@ import java.util.*;
import static org.jetbrains.jet.lang.types.lang.PrimitiveType.*;
public class KotlinBuiltIns {
public static final JetScope STUB = JetScope.EMPTY;
public static final String BUILT_INS_PACKAGE_NAME_STRING = "kotlin";
public static final Name BUILT_INS_PACKAGE_NAME = Name.identifier(BUILT_INS_PACKAGE_NAME_STRING);
public static final Name BUILT_INS_PACKAGE_NAME = Name.identifier("kotlin");
public static final FqName BUILT_INS_PACKAGE_FQ_NAME = FqName.topLevel(BUILT_INS_PACKAGE_NAME);
public static final int FUNCTION_TRAIT_COUNT = 23;
@@ -99,68 +96,30 @@ public class KotlinBuiltIns {
private volatile ImmutableSet<ClassDescriptor> nonPhysicalClasses;
private final ImmutableSet<ClassDescriptor> functionClassesSet;
private final ImmutableSet<ClassDescriptor> extensionFunctionClassesSet;
private final EnumMap<PrimitiveType, ClassDescriptor> primitiveTypeToClass;
private final EnumMap<PrimitiveType, ClassDescriptor> primitiveTypeToArrayClass;
private final EnumMap<PrimitiveType, JetType> primitiveTypeToJetType;
private final EnumMap<PrimitiveType, JetType> primitiveTypeToNullableJetType;
private final EnumMap<PrimitiveType, JetType> primitiveTypeToArrayJetType;
private final Map<PrimitiveType, JetType> primitiveTypeToNullableJetType;
private final Map<PrimitiveType, JetType> primitiveTypeToArrayJetType;
private final Map<JetType, JetType> primitiveJetTypeToJetArrayType;
private final Map<JetType, JetType> jetArrayTypeToPrimitiveJetType;
private final ClassDescriptor nothingClass;
private final ClassDescriptor arrayClass;
private final ClassDescriptor deprecatedAnnotationClass;
private final ClassDescriptor dataAnnotationClass;
private final ClassDescriptor[] functionClasses;
private volatile JetType anyType;
private volatile JetType nullableAnyType;
private volatile JetType nothingType;
private volatile JetType nullableNothingType;
private volatile JetType unitType;
private volatile JetType stringType;
private volatile JetType annotationType;
private KotlinBuiltIns() {
this.builtInsModule = new ModuleDescriptorImpl(Name.special("<built-ins lazy module>"),
Collections.<ImportPath>emptyList(),
PlatformToKotlinClassMap.EMPTY);
builtInsModule = new ModuleDescriptorImpl(Name.special("<built-ins lazy module>"),
Collections.<ImportPath>emptyList(),
PlatformToKotlinClassMap.EMPTY);
builtinsPackageFragment = new BuiltinsPackageFragment(new LockBasedStorageManager(), builtInsModule);
builtInsModule.addFragmentProvider(DependencyKind.SOURCES, builtinsPackageFragment.getProvider());
this.functionClassesSet = computeIndexedClasses("Function", FUNCTION_TRAIT_COUNT);
this.extensionFunctionClassesSet = computeIndexedClasses("ExtensionFunction", FUNCTION_TRAIT_COUNT);
functionClassesSet = computeIndexedClasses("Function", FUNCTION_TRAIT_COUNT);
extensionFunctionClassesSet = computeIndexedClasses("ExtensionFunction", FUNCTION_TRAIT_COUNT);
this.primitiveTypeToClass = new EnumMap<PrimitiveType, ClassDescriptor>(PrimitiveType.class);
this.primitiveTypeToJetType = new EnumMap<PrimitiveType, JetType>(PrimitiveType.class);
this.primitiveTypeToNullableJetType = new EnumMap<PrimitiveType, JetType>(PrimitiveType.class);
this.primitiveTypeToArrayClass = new EnumMap<PrimitiveType, ClassDescriptor>(PrimitiveType.class);
this.primitiveTypeToArrayJetType = new EnumMap<PrimitiveType, JetType>(PrimitiveType.class);
this.primitiveJetTypeToJetArrayType = new HashMap<JetType, JetType>();
this.jetArrayTypeToPrimitiveJetType = new HashMap<JetType, JetType>();
this.nothingClass = getBuiltInClassByName("Nothing");
this.arrayClass = getBuiltInClassByName("Array");
this.deprecatedAnnotationClass = getBuiltInClassByName("deprecated");
this.dataAnnotationClass = getBuiltInClassByName("data");
this.functionClasses = new ClassDescriptor[FUNCTION_TRAIT_COUNT];
for (int i = 0; i < functionClasses.length; i++) {
functionClasses[i] = getBuiltInClassByName("Function" + i);
}
primitiveTypeToNullableJetType = new EnumMap<PrimitiveType, JetType>(PrimitiveType.class);
primitiveTypeToArrayJetType = new EnumMap<PrimitiveType, JetType>(PrimitiveType.class);
primitiveJetTypeToJetArrayType = new HashMap<JetType, JetType>();
jetArrayTypeToPrimitiveJetType = new HashMap<JetType, JetType>();
}
private void doInitialize() {
anyType = getBuiltInTypeByClassName("Any");
nullableAnyType = TypeUtils.makeNullable(anyType);
nothingType = getBuiltInTypeByClassName("Nothing");
nullableNothingType = TypeUtils.makeNullable(nothingType);
unitType = getBuiltInTypeByClassName("Unit");
stringType = getBuiltInTypeByClassName("String");
annotationType = getBuiltInTypeByClassName("Annotation");
for (PrimitiveType primitive : PrimitiveType.values()) {
makePrimitive(primitive);
}
@@ -174,10 +133,7 @@ public class KotlinBuiltIns {
ClassDescriptor arrayClass = getBuiltInClassByName(primitiveType.getArrayTypeName().asString());
JetType arrayType = new JetTypeImpl(arrayClass);
primitiveTypeToClass.put(primitiveType, theClass);
primitiveTypeToJetType.put(primitiveType, type);
primitiveTypeToNullableJetType.put(primitiveType, TypeUtils.makeNullable(type));
primitiveTypeToArrayClass.put(primitiveType, arrayClass);
primitiveTypeToArrayJetType.put(primitiveType, arrayType);
primitiveJetTypeToJetArrayType.put(type, arrayType);
jetArrayTypeToPrimitiveJetType.put(arrayType, type);
@@ -455,14 +411,14 @@ public class KotlinBuiltIns {
@NotNull
public ClassDescriptor getMapEntry() {
ClassDescriptor classDescriptor = DescriptorUtils.getInnerClassByName(getBuiltInClassByName("Map"), "Entry");
ClassDescriptor classDescriptor = DescriptorUtils.getInnerClassByName(getMap(), "Entry");
assert classDescriptor != null : "Can't find Map.Entry";
return classDescriptor;
}
@NotNull
public ClassDescriptor getMutableMapEntry() {
ClassDescriptor classDescriptor = DescriptorUtils.getInnerClassByName(getBuiltInClassByName("MutableMap"), "MutableEntry");
ClassDescriptor classDescriptor = DescriptorUtils.getInnerClassByName(getMutableMap(), "MutableEntry");
assert classDescriptor != null : "Can't find MutableMap.MutableEntry";
return classDescriptor;
}
@@ -696,11 +652,6 @@ public class KotlinBuiltIns {
return getBuiltInTypeByClassName("Annotation");
}
@NotNull
public ClassDescriptor getPropertyMetadata() {
return getBuiltInClassByName("PropertyMetadata");
}
@NotNull
public ClassDescriptor getPropertyMetadataImpl() {
return getBuiltInClassByName("PropertyMetadataImpl");
@@ -59,7 +59,8 @@ import java.util.Set;
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.unwrapFakeOverride;
public class BuiltInsReferenceResolver extends AbstractProjectComponent {
private static final File BUILT_INS_COMPILABLE_SRC_DIR = new File("core/builtins/src", KotlinBuiltIns.BUILT_INS_PACKAGE_NAME_STRING);
private static final File BUILT_INS_COMPILABLE_SRC_DIR =
new File("core/builtins/src", KotlinBuiltIns.BUILT_INS_PACKAGE_NAME.asString());
private volatile BindingContext bindingContext;
private volatile Set<JetFile> builtInsSources;