Refactoring: Extract filter for skipping built-ins packages

This commit is contained in:
Nikolay Krasko
2014-09-17 14:43:25 +04:00
parent e796f88b38
commit fbd09911f3
3 changed files with 18 additions and 31 deletions
@@ -16,18 +16,15 @@
package org.jetbrains.jet.lang.resolve.lazy; package org.jetbrains.jet.lang.resolve.lazy;
import com.google.common.base.Predicate;
import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.ConfigurationKind; import org.jetbrains.jet.ConfigurationKind;
import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor; import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator; import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
import org.junit.Assert; import org.junit.Assert;
@@ -78,19 +75,11 @@ public abstract class AbstractLazyResolveRecursiveComparingTest extends KotlinTe
File serializeResultsTo = new File(FileUtil.getNameWithoutExtension(testFileName) + ".txt"); File serializeResultsTo = new File(FileUtil.getNameWithoutExtension(testFileName) + ".txt");
RecursiveDescriptorComparator.validateAndCompareDescriptors( RecursiveDescriptorComparator.validateAndCompareDescriptors(
expected, actual, RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT.filterRecursion( expected, actual, RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT
new Predicate<DeclarationDescriptor>() { .filterRecursion(RecursiveDescriptorComparator.SKIP_BUILT_INS_PACKAGES)
@Override .checkPrimaryConstructors(checkPrimaryConstructors)
public boolean apply(DeclarationDescriptor descriptor) { .checkPropertyAccessors(checkPropertyAccessors)
if (descriptor instanceof PackageViewDescriptor) { .withValidationStrategy(allowErrorTypes ? ALLOW_ERROR_TYPES : FORBID_ERROR_TYPES),
return !KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(((PackageViewDescriptor) descriptor).getFqName());
}
return true;
}
})
.checkPrimaryConstructors(checkPrimaryConstructors)
.checkPropertyAccessors(checkPropertyAccessors)
.withValidationStrategy(allowErrorTypes ? ALLOW_ERROR_TYPES : FORBID_ERROR_TYPES),
serializeResultsTo); serializeResultsTo);
} }
} }
@@ -30,6 +30,7 @@ import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.MemberComparator; import org.jetbrains.jet.lang.resolve.MemberComparator;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.renderer.DescriptorRenderer; import org.jetbrains.jet.renderer.DescriptorRenderer;
import org.jetbrains.jet.renderer.DescriptorRendererBuilder; import org.jetbrains.jet.renderer.DescriptorRendererBuilder;
import org.jetbrains.jet.utils.Printer; import org.jetbrains.jet.utils.Printer;
@@ -62,6 +63,16 @@ public class RecursiveDescriptorComparator {
Predicates.<DeclarationDescriptor>alwaysTrue(), Predicates.<DeclarationDescriptor>alwaysTrue(),
FORBID_ERROR_TYPES, DEFAULT_RENDERER); FORBID_ERROR_TYPES, DEFAULT_RENDERER);
public static final Predicate<DeclarationDescriptor> SKIP_BUILT_INS_PACKAGES = new Predicate<DeclarationDescriptor>() {
@Override
public boolean apply(DeclarationDescriptor descriptor) {
if (descriptor instanceof PackageViewDescriptor) {
return !KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(((PackageViewDescriptor) descriptor).getFqName());
}
return true;
}
};
private static final ImmutableSet<String> KOTLIN_ANY_METHOD_NAMES = ImmutableSet.of("equals", "hashCode", "toString"); private static final ImmutableSet<String> KOTLIN_ANY_METHOD_NAMES = ImmutableSet.of("equals", "hashCode", "toString");
private final Configuration conf; private final Configuration conf;
@@ -16,7 +16,6 @@
package org.jetbrains.jet.plugin.stubs; package org.jetbrains.jet.plugin.stubs;
import com.google.common.base.Predicate;
import com.intellij.openapi.module.Module; import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.ContentEntry; import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModifiableRootModel;
@@ -26,12 +25,10 @@ import com.intellij.util.Consumer;
import kotlin.Function0; import kotlin.Function0;
import kotlin.Unit; import kotlin.Unit;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor; import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.plugin.JetWithJdkAndRuntimeLightProjectDescriptor; import org.jetbrains.jet.plugin.JetWithJdkAndRuntimeLightProjectDescriptor;
import org.jetbrains.jet.plugin.KotlinCodeInsightTestCase; import org.jetbrains.jet.plugin.KotlinCodeInsightTestCase;
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheService; import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheService;
@@ -77,18 +74,8 @@ public abstract class AbstractLazyResolveByStubTest extends KotlinCodeInsightTes
RecursiveDescriptorComparator.validateAndCompareDescriptorWithFile( RecursiveDescriptorComparator.validateAndCompareDescriptorWithFile(
packageViewDescriptor, packageViewDescriptor,
RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT.filterRecursion( RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT
new Predicate<DeclarationDescriptor>() { .filterRecursion(RecursiveDescriptorComparator.SKIP_BUILT_INS_PACKAGES)
@Override
public boolean apply(DeclarationDescriptor descriptor) {
if (descriptor instanceof PackageViewDescriptor) {
return !KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME
.equals(((PackageViewDescriptor) descriptor).getFqName());
}
return true;
}
}
)
.checkPrimaryConstructors(checkPrimaryConstructors) .checkPrimaryConstructors(checkPrimaryConstructors)
.checkPropertyAccessors(checkPropertyAccessors) .checkPropertyAccessors(checkPropertyAccessors)
.withValidationStrategy(FORBID_ERROR_TYPES), .withValidationStrategy(FORBID_ERROR_TYPES),