From ce1702d63391559cfb347552eea6b6fd1f5e926b Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 20 Jan 2014 22:58:57 +0400 Subject: [PATCH] Replace a hack (Internals class) with a less-of-a-hack workaround LockBasedLazyResolveStorageManager is put into the same package as LockBasedStorageManager --- .../resolve/java/AnalyzerFacadeForJVM.java | 2 +- .../jet/lang/resolve/lazy/ResolveSession.java | 2 +- .../storage/LazyResolveStorageManager.java | 5 +--- .../LockBasedLazyResolveStorageManager.java | 11 +++++---- ...ractLazyResolveDescriptorRendererTest.java | 2 +- .../jet/storage/LockBasedStorageManager.java | 24 ------------------- .../libraries/JetSourceNavigationHelper.java | 2 +- .../plugin/project/ResolveElementCache.java | 2 +- .../k2js/analyze/AnalyzerFacadeForJS.java | 2 +- 9 files changed, 13 insertions(+), 39 deletions(-) rename compiler/frontend/src/org/jetbrains/jet/{lang/resolve/lazy => }/storage/LazyResolveStorageManager.java (83%) rename compiler/frontend/src/org/jetbrains/jet/{lang/resolve/lazy => }/storage/LockBasedLazyResolveStorageManager.java (93%) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java index 9a4e525b20d..f509192a43d 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java @@ -36,7 +36,7 @@ import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory; -import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedLazyResolveStorageManager; +import org.jetbrains.jet.storage.LockBasedLazyResolveStorageManager; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; 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 f2f1aca580a..221ade4cf36 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 @@ -38,7 +38,7 @@ import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFacto import org.jetbrains.jet.lang.resolve.lazy.declarations.PackageMemberDeclarationProvider; import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyClassDescriptor; import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyPackageDescriptor; -import org.jetbrains.jet.lang.resolve.lazy.storage.LazyResolveStorageManager; +import org.jetbrains.jet.storage.LazyResolveStorageManager; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe; import org.jetbrains.jet.lang.resolve.name.Name; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LazyResolveStorageManager.java b/compiler/frontend/src/org/jetbrains/jet/storage/LazyResolveStorageManager.java similarity index 83% rename from compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LazyResolveStorageManager.java rename to compiler/frontend/src/org/jetbrains/jet/storage/LazyResolveStorageManager.java index 8795f683690..05ed51d7ff0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LazyResolveStorageManager.java +++ b/compiler/frontend/src/org/jetbrains/jet/storage/LazyResolveStorageManager.java @@ -14,14 +14,11 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.resolve.lazy.storage; +package org.jetbrains.jet.storage; import jet.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.resolve.BindingTrace; -import org.jetbrains.jet.storage.MemoizedFunctionToNotNull; -import org.jetbrains.jet.storage.MemoizedFunctionToNullable; -import org.jetbrains.jet.storage.StorageManager; public interface LazyResolveStorageManager extends StorageManager { @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LockBasedLazyResolveStorageManager.java b/compiler/frontend/src/org/jetbrains/jet/storage/LockBasedLazyResolveStorageManager.java similarity index 93% rename from compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LockBasedLazyResolveStorageManager.java rename to compiler/frontend/src/org/jetbrains/jet/storage/LockBasedLazyResolveStorageManager.java index ac1e3794273..91084ed78a9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LockBasedLazyResolveStorageManager.java +++ b/compiler/frontend/src/org/jetbrains/jet/storage/LockBasedLazyResolveStorageManager.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.resolve.lazy.storage; +package org.jetbrains.jet.storage; import com.google.common.collect.ImmutableMap; import com.intellij.util.containers.ConcurrentWeakValueHashMap; @@ -28,13 +28,14 @@ import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.Diagnostics; -import org.jetbrains.jet.storage.*; import org.jetbrains.jet.util.slicedmap.ReadOnlySlice; import org.jetbrains.jet.util.slicedmap.WritableSlice; import java.util.Collection; import java.util.concurrent.locks.Lock; +// This class is kept under the same package as LockBasedStorageManager to get access to its protected members +// Otherwise wed have to expose the lock which is worse than have such a hackish class placement public class LockBasedLazyResolveStorageManager implements LazyResolveStorageManager { private final LockBasedStorageManager storageManager; @@ -48,7 +49,7 @@ public class LockBasedLazyResolveStorageManager implements LazyResolveStorageMan public MemoizedFunctionToNotNull createWeaklyRetainedMemoizedFunction( @NotNull Function1 compute ) { - return storageManager.new Internals().createMemoizedFunction(compute, new ConcurrentWeakValueHashMap()); + return storageManager.createMemoizedFunction(compute, new ConcurrentWeakValueHashMap()); } @NotNull @@ -56,7 +57,7 @@ public class LockBasedLazyResolveStorageManager implements LazyResolveStorageMan public MemoizedFunctionToNullable createWeaklyRetainedMemoizedFunctionWithNullableValues( @NotNull Function1 compute ) { - return storageManager.new Internals().createMemoizedFunctionWithNullableValues(compute, new ConcurrentWeakValueHashMap()); + return storageManager.createMemoizedFunctionWithNullableValues(compute, new ConcurrentWeakValueHashMap()); } @NotNull @@ -64,7 +65,7 @@ public class LockBasedLazyResolveStorageManager implements LazyResolveStorageMan public BindingTrace createSafeTrace(@NotNull BindingTrace originalTrace) { // It seems safe to have a separate lock for traces: // no other locks will be acquired inside the trace operations - return new LockProtectedTrace(storageManager.new Internals().getLock(), originalTrace); + return new LockProtectedTrace(storageManager.lock, originalTrace); } @NotNull diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDescriptorRendererTest.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDescriptorRendererTest.java index 387852cac9d..9f0066fc49b 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDescriptorRendererTest.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDescriptorRendererTest.java @@ -29,7 +29,7 @@ import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM; import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory; -import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedLazyResolveStorageManager; +import org.jetbrains.jet.storage.LockBasedLazyResolveStorageManager; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.renderer.DescriptorRenderer; diff --git a/core/util.runtime/src/org/jetbrains/jet/storage/LockBasedStorageManager.java b/core/util.runtime/src/org/jetbrains/jet/storage/LockBasedStorageManager.java index 19af77e2a12..e1b43ca026c 100644 --- a/core/util.runtime/src/org/jetbrains/jet/storage/LockBasedStorageManager.java +++ b/core/util.runtime/src/org/jetbrains/jet/storage/LockBasedStorageManager.java @@ -375,28 +375,4 @@ public class LockBasedStorageManager implements StorageManager { } } - @Deprecated // Use with care - public class Internals { - @NotNull - public Lock getLock() { - return lock; - } - - @NotNull - public MemoizedFunctionToNotNull createMemoizedFunction( - @NotNull Function1 compute, - @NotNull ConcurrentMap map - ) { - return LockBasedStorageManager.this.createMemoizedFunction(compute, map); - } - - @NotNull - public MemoizedFunctionToNullable createMemoizedFunctionWithNullableValues( - @NotNull Function1 compute, - @NotNull ConcurrentMap map - ) { - return LockBasedStorageManager.this.createMemoizedFunctionWithNullableValues(compute, map); - } - - } } diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java b/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java index d966df5492d..5ccf1ed1a57 100644 --- a/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java +++ b/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java @@ -55,7 +55,7 @@ import org.jetbrains.jet.lang.resolve.java.mapping.KotlinToJavaTypesMap; import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory; -import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedLazyResolveStorageManager; +import org.jetbrains.jet.storage.LockBasedLazyResolveStorageManager; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe; import org.jetbrains.jet.lang.resolve.name.Name; diff --git a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java b/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java index afefb5351e9..4d520d6344a 100644 --- a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java +++ b/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java @@ -39,7 +39,7 @@ import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider; import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyClassDescriptor; import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyPackageDescriptor; -import org.jetbrains.jet.lang.resolve.lazy.storage.LazyResolveStorageManager; +import org.jetbrains.jet.storage.LazyResolveStorageManager; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScope; diff --git a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java index 14b642c8dd2..8ed47d99af9 100644 --- a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java +++ b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java @@ -34,7 +34,7 @@ import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory; -import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedLazyResolveStorageManager; +import org.jetbrains.jet.storage.LockBasedLazyResolveStorageManager; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;