From fc2d9cdde69ed5c70be445816927da4a593f7fcf Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 23 Dec 2013 21:00:21 +0400 Subject: [PATCH] getProvider() added to PackageFragmentDescriptor --- .../resolve/MutablePackageFragmentProvider.java | 6 ++---- .../jet/lang/resolve/lazy/ResolveSession.java | 5 +++++ .../lazy/descriptors/LazyPackageDescriptor.java | 8 ++++++++ .../JavaPackageFragmentDescriptorImpl.java | 1 + .../descriptors/PackageFragmentDescriptor.java | 3 +++ .../impl/MutablePackageFragmentDescriptor.java | 14 ++++++++++---- .../lang/types/lang/BuiltinsPackageFragment.java | 10 ++++++++-- .../jet/lang/types/lang/KotlinBuiltIns.java | 2 +- 8 files changed, 38 insertions(+), 11 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/MutablePackageFragmentProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/MutablePackageFragmentProvider.java index 4aca59d5ad2..2025bab6bc4 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/MutablePackageFragmentProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/MutablePackageFragmentProvider.java @@ -1,7 +1,6 @@ package org.jetbrains.jet.lang.resolve; import com.google.common.collect.Maps; -import com.google.common.collect.Multimap; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.MultiMap; import org.jetbrains.annotations.NotNull; @@ -12,7 +11,6 @@ import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor; import org.jetbrains.jet.lang.resolve.name.FqName; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Map; @@ -24,7 +22,7 @@ public class MutablePackageFragmentProvider implements PackageFragmentProvider { public MutablePackageFragmentProvider(@NotNull ModuleDescriptor module) { this.module = module; - fqNameToPackage.put(FqName.ROOT, new MutablePackageFragmentDescriptor(module, FqName.ROOT)); + fqNameToPackage.put(FqName.ROOT, new MutablePackageFragmentDescriptor(this, module, FqName.ROOT)); } @NotNull @@ -45,7 +43,7 @@ public class MutablePackageFragmentProvider implements PackageFragmentProvider { FqName parent = fqName.parent(); getOrCreateFragment(parent); // assure that parent exists - fqNameToPackage.put(fqName, new MutablePackageFragmentDescriptor(module, fqName)); + fqNameToPackage.put(fqName, new MutablePackageFragmentDescriptor(this, module, fqName)); subPackages.putValue(parent, fqName); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSession.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSession.java index 51c8f8332fd..75c200c54ed 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSession.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSession.java @@ -151,6 +151,11 @@ public class ResolveSession implements KotlinCodeAnalyzer { rootDescriptor.addFragmentProvider(packageFragmentProvider); } + @NotNull + public PackageFragmentProvider getPackageFragmentProvider() { + return packageFragmentProvider; + } + @Nullable public LazyPackageDescriptor getPackageFragment(@NotNull FqName fqName) { return packages.invoke(fqName); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageDescriptor.java index 34efc4d3702..f4b1b3dc08e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageDescriptor.java @@ -32,6 +32,7 @@ import org.jetbrains.jet.lang.types.TypeSubstitutor; import java.util.Collections; public class LazyPackageDescriptor extends DeclarationDescriptorImpl implements LazyDescriptor, PackageFragmentDescriptor { + private final ResolveSession resolveSession; private final ModuleDescriptor module; private final JetScope memberScope; private final FqName fqName; @@ -44,6 +45,7 @@ public class LazyPackageDescriptor extends DeclarationDescriptorImpl implements @NotNull PackageMemberDeclarationProvider declarationProvider ) { super(Collections.emptyList(), fqName.shortNameOrSpecial()); + this.resolveSession = resolveSession; this.module = module; this.fqName = fqName; this.declarationProvider = declarationProvider; @@ -57,6 +59,12 @@ public class LazyPackageDescriptor extends DeclarationDescriptorImpl implements return memberScope; } + @NotNull + @Override + public PackageFragmentProvider getProvider() { + return resolveSession.getPackageFragmentProvider(); + } + @NotNull @Override public ModuleDescriptor getContainingDeclaration() { diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaPackageFragmentDescriptorImpl.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaPackageFragmentDescriptorImpl.java index 8b50e725778..2e86418df8a 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaPackageFragmentDescriptorImpl.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaPackageFragmentDescriptorImpl.java @@ -95,6 +95,7 @@ public class JavaPackageFragmentDescriptorImpl extends DeclarationDescriptorImpl return fqName; } + @Override @NotNull public JavaPackageFragmentProvider getProvider() { return provider; diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/PackageFragmentDescriptor.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/PackageFragmentDescriptor.java index 31a4c52c4da..3e626a336df 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/PackageFragmentDescriptor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/PackageFragmentDescriptor.java @@ -21,6 +21,9 @@ import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.scopes.JetScope; public interface PackageFragmentDescriptor extends ClassOrNamespaceDescriptor { + @NotNull + PackageFragmentProvider getProvider(); + @NotNull @Override ModuleDescriptor getContainingDeclaration(); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/MutablePackageFragmentDescriptor.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/MutablePackageFragmentDescriptor.java index 92e61785f29..fc6bac4828b 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/MutablePackageFragmentDescriptor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/MutablePackageFragmentDescriptor.java @@ -18,10 +18,7 @@ package org.jetbrains.jet.lang.descriptors.impl; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorVisitor; -import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; -import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor; +import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.scopes.JetScope; @@ -34,16 +31,19 @@ import java.util.Collections; public class MutablePackageFragmentDescriptor extends DeclarationDescriptorImpl implements PackageFragmentDescriptor { + private final PackageFragmentProvider provider; private final ModuleDescriptor module; private final FqName fqName; private final WritableScope scope; private final NamespaceLikeBuilder builder; public MutablePackageFragmentDescriptor( + @NotNull PackageFragmentProvider provider, @NotNull ModuleDescriptor module, @NotNull FqName fqName ) { super(Collections.emptyList(), fqName.shortNameOrSpecial()); + this.provider = provider; this.module = module; this.fqName = fqName; @@ -52,6 +52,12 @@ public class MutablePackageFragmentDescriptor extends DeclarationDescriptorImpl builder = new ScopeBasedNamespaceLikeBuilder(this, scope); } + @NotNull + @Override + public PackageFragmentProvider getProvider() { + return provider; + } + @NotNull @Override public ModuleDescriptor getContainingDeclaration() { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltinsPackageFragment.java b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltinsPackageFragment.java index 9de59862bf0..e3566677f83 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltinsPackageFragment.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltinsPackageFragment.java @@ -30,7 +30,7 @@ class BuiltinsPackageFragment extends DeclarationDescriptorImpl implements Packa private final DeserializedPackageMemberScope members; private final NameResolver nameResolver; private final ModuleDescriptor module; - final PackageFragmentProvider packageFragmentProvider; + private final PackageFragmentProvider packageFragmentProvider; public BuiltinsPackageFragment(@NotNull StorageManager storageManager, @NotNull ModuleDescriptor module) { super(Collections.emptyList(), KotlinBuiltIns.BUILT_INS_PACKAGE_NAME); @@ -61,6 +61,12 @@ class BuiltinsPackageFragment extends DeclarationDescriptorImpl implements Packa return members; } + @NotNull + @Override + public PackageFragmentProvider getProvider() { + return packageFragmentProvider; + } + @NotNull @Override public ModuleDescriptor getContainingDeclaration() { @@ -99,7 +105,7 @@ class BuiltinsPackageFragment extends DeclarationDescriptorImpl implements Packa } private class BuiltinsPackageFragmentProvider implements PackageFragmentProvider { - private final PackageFragmentDescriptor rootPackage = new MutablePackageFragmentDescriptor(module, FqName.ROOT); + private final PackageFragmentDescriptor rootPackage = new MutablePackageFragmentDescriptor(this, module, FqName.ROOT); @NotNull @Override diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java index c7c205463c7..134e9c19b11 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java @@ -128,7 +128,7 @@ public class KotlinBuiltIns { Collections.emptyList(), PlatformToKotlinClassMap.EMPTY); builtinsPackageFragment = new BuiltinsPackageFragment(new LockBasedStorageManager(), builtInsModule); - builtInsModule.addFragmentProvider(builtinsPackageFragment.packageFragmentProvider); + builtInsModule.addFragmentProvider(builtinsPackageFragment.getProvider()); this.functionClassesSet = computeIndexedClasses("Function", FUNCTION_TRAIT_COUNT); this.extensionFunctionClassesSet = computeIndexedClasses("ExtensionFunction", FUNCTION_TRAIT_COUNT);