From fd6cb970e4a4d66d3bb8f968558f0561b509fe2b Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 30 Jan 2013 18:18:52 +0400 Subject: [PATCH] Correctly return existing provider if it is there --- .../lazy/FileBasedDeclarationProviderFactory.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/FileBasedDeclarationProviderFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/FileBasedDeclarationProviderFactory.java index a7a49270f46..50e88467886 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/FileBasedDeclarationProviderFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/FileBasedDeclarationProviderFactory.java @@ -109,9 +109,9 @@ public class FileBasedDeclarationProviderFactory implements DeclarationProviderF @Override public PackageMemberDeclarationProvider getPackageMemberDeclarationProvider(@NotNull FqName packageFqName) { - PackageMemberDeclarationProvider declarationProvider = packageDeclarationProviders.get(packageFqName); - if (declarationProvider != null) { - return declarationProvider; + PackageMemberDeclarationProvider cached = packageDeclarationProviders.get(packageFqName); + if (cached != null) { + return cached; } if (!isPackageDeclaredExplicitly(packageFqName)) { @@ -124,7 +124,12 @@ public class FileBasedDeclarationProviderFactory implements DeclarationProviderF FileBasedPackageMemberDeclarationProvider provider = new FileBasedPackageMemberDeclarationProvider(storageManager, packageFqName, this, index.get().filesByPackage.get(packageFqName)); - return packageDeclarationProviders.putIfAbsent(packageFqName, provider); + PackageMemberDeclarationProvider oldValue = packageDeclarationProviders.putIfAbsent(packageFqName, provider); + if (oldValue != null) { + return oldValue; + } + + return provider; } @NotNull