Correctly return existing provider if it is there
This commit is contained in:
+9
-4
@@ -109,9 +109,9 @@ public class FileBasedDeclarationProviderFactory implements DeclarationProviderF
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PackageMemberDeclarationProvider getPackageMemberDeclarationProvider(@NotNull FqName packageFqName) {
|
public PackageMemberDeclarationProvider getPackageMemberDeclarationProvider(@NotNull FqName packageFqName) {
|
||||||
PackageMemberDeclarationProvider declarationProvider = packageDeclarationProviders.get(packageFqName);
|
PackageMemberDeclarationProvider cached = packageDeclarationProviders.get(packageFqName);
|
||||||
if (declarationProvider != null) {
|
if (cached != null) {
|
||||||
return declarationProvider;
|
return cached;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isPackageDeclaredExplicitly(packageFqName)) {
|
if (!isPackageDeclaredExplicitly(packageFqName)) {
|
||||||
@@ -124,7 +124,12 @@ public class FileBasedDeclarationProviderFactory implements DeclarationProviderF
|
|||||||
FileBasedPackageMemberDeclarationProvider provider =
|
FileBasedPackageMemberDeclarationProvider provider =
|
||||||
new FileBasedPackageMemberDeclarationProvider(storageManager, packageFqName, this, index.get().filesByPackage.get(packageFqName));
|
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
|
@NotNull
|
||||||
|
|||||||
Reference in New Issue
Block a user