More straightforward caching.
This commit is contained in:
+4
-22
@@ -48,8 +48,6 @@ import java.util.*;
|
||||
public final class JavaPackageFragmentProvider implements PackageFragmentProvider {
|
||||
@NotNull
|
||||
private final Map<FqName, JavaPackageFragmentDescriptor> packageFragments = Maps.newHashMap();
|
||||
@NotNull
|
||||
private final Set<FqName> unresolvedCache = new HashSet<FqName>();
|
||||
|
||||
private JavaClassFinder javaClassFinder;
|
||||
private JavaResolverCache cache;
|
||||
@@ -119,16 +117,11 @@ public final class JavaPackageFragmentProvider implements PackageFragmentProvide
|
||||
|
||||
@Nullable
|
||||
public JavaPackageFragmentDescriptor getOrCreatePackage(@NotNull final FqName fqName) {
|
||||
// TODO 1 use one cache
|
||||
if (unresolvedCache.contains(fqName)) {
|
||||
return null;
|
||||
}
|
||||
JavaPackageFragmentDescriptor packageFragment = packageFragments.get(fqName);
|
||||
if (packageFragment != null) {
|
||||
return packageFragment;
|
||||
if (packageFragments.containsKey(fqName)) {
|
||||
return packageFragments.get(fqName);
|
||||
}
|
||||
|
||||
packageFragment = JavaPackageFragmentDescriptor.create(this, fqName, new NullableFunction<JavaPackageFragmentDescriptor, JetScope>() {
|
||||
JavaPackageFragmentDescriptor packageFragment = JavaPackageFragmentDescriptor.create(this, fqName, new NullableFunction<JavaPackageFragmentDescriptor, JetScope>() {
|
||||
@Override
|
||||
@Nullable
|
||||
public JetScope fun(JavaPackageFragmentDescriptor packageFragment) {
|
||||
@@ -136,7 +129,7 @@ public final class JavaPackageFragmentProvider implements PackageFragmentProvide
|
||||
}
|
||||
});
|
||||
|
||||
cache(fqName, packageFragment);
|
||||
packageFragments.put(fqName, packageFragment);
|
||||
return packageFragment;
|
||||
}
|
||||
|
||||
@@ -175,17 +168,6 @@ public final class JavaPackageFragmentProvider implements PackageFragmentProvide
|
||||
return !DescriptorResolverUtils.isCompiledKotlinClassOrPackageClass(javaClass) && hasStaticMembers(javaClass);
|
||||
}
|
||||
|
||||
private void cache(@NotNull FqName fqName, @Nullable JavaPackageFragmentDescriptor packageFragment) {
|
||||
if (packageFragment == null) {
|
||||
unresolvedCache.add(fqName);
|
||||
return;
|
||||
}
|
||||
JavaPackageFragmentDescriptor oldValue = packageFragments.put(fqName, packageFragment);
|
||||
if (oldValue != null) {
|
||||
throw new IllegalStateException("rewrite at " + fqName);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean hasStaticMembers(@NotNull JavaClass javaClass) {
|
||||
for (JavaMethod method : javaClass.getMethods()) {
|
||||
if (method.isStatic() && !DescriptorResolverUtils.shouldBeInEnumClassObject(method)) {
|
||||
|
||||
Reference in New Issue
Block a user