Refactor: Make ValidationVisitor stateful so it's possible to inherit from it
This commit is contained in:
@@ -262,7 +262,7 @@ public abstract class AbstractJetDiagnosticsTest extends BaseDiagnosticsTest {
|
||||
}
|
||||
};
|
||||
|
||||
return RECURSIVE.filterRecursion(stepIntoFilter).withValidationStrategy(DescriptorValidator.ValidationVisitor.ALLOW_ERROR_TYPES);
|
||||
return RECURSIVE.filterRecursion(stepIntoFilter).withValidationStrategy(DescriptorValidator.ValidationVisitor.errorTypesAllowed());
|
||||
}
|
||||
|
||||
public static Map<TestModule, ModuleDescriptorImpl> createModules(Map<TestModule, List<TestFile>> groupedByModule) {
|
||||
|
||||
@@ -61,7 +61,7 @@ import java.util.regex.Pattern;
|
||||
|
||||
import static org.jetbrains.jet.JetTestUtils.*;
|
||||
import static org.jetbrains.jet.jvm.compiler.LoadDescriptorUtil.*;
|
||||
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.ALLOW_ERROR_TYPES;
|
||||
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.errorTypesAllowed;
|
||||
import static org.jetbrains.jet.test.util.RecursiveDescriptorComparator.*;
|
||||
|
||||
/*
|
||||
@@ -213,7 +213,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
|
||||
tmpdir, getTestRootDisposable(), ConfigurationKind.JDK_ONLY);
|
||||
|
||||
checkJavaPackage(expectedFile, javaPackageAndContext.first, javaPackageAndContext.second,
|
||||
DONT_INCLUDE_METHODS_OF_OBJECT.withValidationStrategy(ALLOW_ERROR_TYPES));
|
||||
DONT_INCLUDE_METHODS_OF_OBJECT.withValidationStrategy(errorTypesAllowed()));
|
||||
}
|
||||
|
||||
private void doTestCompiledJava(@NotNull String javaFileName, Configuration configuration) throws Exception {
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ public class CompileKotlinAgainstCustomBinariesTest extends TestCaseWithTmpdir {
|
||||
|
||||
RecursiveDescriptorComparator.Configuration comparator =
|
||||
RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT.withValidationStrategy(
|
||||
DescriptorValidator.ValidationVisitor.ALLOW_ERROR_TYPES);
|
||||
DescriptorValidator.ValidationVisitor.errorTypesAllowed());
|
||||
validateAndCompareDescriptorWithFile(packageView, comparator, getTestDataFileWithExtension("txt"));
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -34,8 +34,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
|
||||
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.ALLOW_ERROR_TYPES;
|
||||
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.FORBID_ERROR_TYPES;
|
||||
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.errorTypesAllowed;
|
||||
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.errorTypesForbidden;
|
||||
|
||||
public abstract class AbstractLazyResolveRecursiveComparingTest extends KotlinTestWithEnvironment {
|
||||
|
||||
@@ -79,7 +79,7 @@ public abstract class AbstractLazyResolveRecursiveComparingTest extends KotlinTe
|
||||
.filterRecursion(RecursiveDescriptorComparator.SKIP_BUILT_INS_PACKAGES)
|
||||
.checkPrimaryConstructors(checkPrimaryConstructors)
|
||||
.checkPropertyAccessors(checkPropertyAccessors)
|
||||
.withValidationStrategy(allowErrorTypes ? ALLOW_ERROR_TYPES : FORBID_ERROR_TYPES),
|
||||
.withValidationStrategy(allowErrorTypes ? errorTypesAllowed() : errorTypesForbidden()),
|
||||
serializeResultsTo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,22 +56,30 @@ public class DescriptorValidator {
|
||||
}
|
||||
|
||||
public static class ValidationVisitor implements DeclarationDescriptorVisitor<Boolean, DiagnosticCollector> {
|
||||
public static final ValidationVisitor FORBID_ERROR_TYPES = new ValidationVisitor(
|
||||
false, Predicates.<DeclarationDescriptor>alwaysTrue());
|
||||
public static final ValidationVisitor ALLOW_ERROR_TYPES = new ValidationVisitor(
|
||||
true, Predicates.<DeclarationDescriptor>alwaysTrue());
|
||||
public static ValidationVisitor errorTypesForbidden() {
|
||||
return new ValidationVisitor();
|
||||
}
|
||||
|
||||
private final boolean allowErrorTypes;
|
||||
private final Predicate<DeclarationDescriptor> recursiveFilter;
|
||||
public static ValidationVisitor errorTypesAllowed() {
|
||||
return new ValidationVisitor().allowErrorTypes();
|
||||
}
|
||||
|
||||
private ValidationVisitor(boolean allowErrorTypes, @NotNull Predicate<DeclarationDescriptor> recursiveFilter) {
|
||||
this.allowErrorTypes = allowErrorTypes;
|
||||
this.recursiveFilter = recursiveFilter;
|
||||
private boolean allowErrorTypes = false;
|
||||
private Predicate<DeclarationDescriptor> recursiveFilter = Predicates.alwaysTrue();
|
||||
|
||||
private ValidationVisitor() {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public ValidationVisitor withStepIntoFilter(@NotNull Predicate<DeclarationDescriptor> filter) {
|
||||
return new ValidationVisitor(allowErrorTypes, filter);
|
||||
this.recursiveFilter = filter;
|
||||
return this;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public ValidationVisitor allowErrorTypes() {
|
||||
this.allowErrorTypes = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
private void validateScope(@NotNull JetScope scope, @NotNull DiagnosticCollector collector) {
|
||||
|
||||
@@ -42,7 +42,7 @@ import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.FORBID_ERROR_TYPES;
|
||||
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.errorTypesForbidden;
|
||||
|
||||
public class RecursiveDescriptorComparator {
|
||||
private static final DescriptorRenderer DEFAULT_RENDERER = new DescriptorRendererBuilder()
|
||||
@@ -52,16 +52,16 @@ public class RecursiveDescriptorComparator {
|
||||
.setIncludePropertyConstant(true)
|
||||
.setVerbose(true).build();
|
||||
|
||||
public static final Configuration DONT_INCLUDE_METHODS_OF_OBJECT = new Configuration(false, false, false,
|
||||
public static final Configuration DONT_INCLUDE_METHODS_OF_OBJECT = new Configuration(false, false, false,
|
||||
Predicates.<DeclarationDescriptor>alwaysTrue(),
|
||||
FORBID_ERROR_TYPES, DEFAULT_RENDERER);
|
||||
public static final Configuration RECURSIVE = new Configuration(false, false, true,
|
||||
errorTypesForbidden(), DEFAULT_RENDERER);
|
||||
public static final Configuration RECURSIVE = new Configuration(false, false, true,
|
||||
Predicates.<DeclarationDescriptor>alwaysTrue(),
|
||||
FORBID_ERROR_TYPES, DEFAULT_RENDERER);
|
||||
errorTypesForbidden(), DEFAULT_RENDERER);
|
||||
|
||||
public static final Configuration RECURSIVE_ALL = new Configuration(true, true, true,
|
||||
public static final Configuration RECURSIVE_ALL = new Configuration(true, true, true,
|
||||
Predicates.<DeclarationDescriptor>alwaysTrue(),
|
||||
FORBID_ERROR_TYPES, DEFAULT_RENDERER);
|
||||
errorTypesForbidden(), DEFAULT_RENDERER);
|
||||
|
||||
public static final Predicate<DeclarationDescriptor> SKIP_BUILT_INS_PACKAGES = new Predicate<DeclarationDescriptor>() {
|
||||
@Override
|
||||
@@ -280,13 +280,13 @@ public class RecursiveDescriptorComparator {
|
||||
this.checkPropertyAccessors = checkPropertyAccessors;
|
||||
this.includeMethodsOfKotlinAny = includeMethodsOfKotlinAny;
|
||||
this.recursiveFilter = recursiveFilter;
|
||||
this.validationStrategy = validationStrategy.withStepIntoFilter(recursiveFilter);
|
||||
this.validationStrategy = validationStrategy;
|
||||
this.renderer = renderer;
|
||||
}
|
||||
|
||||
public Configuration filterRecursion(@NotNull Predicate<DeclarationDescriptor> stepIntoFilter) {
|
||||
return new Configuration(checkPrimaryConstructors, checkPropertyAccessors, includeMethodsOfKotlinAny, stepIntoFilter,
|
||||
validationStrategy, renderer);
|
||||
validationStrategy.withStepIntoFilter(stepIntoFilter), renderer);
|
||||
}
|
||||
|
||||
public Configuration checkPrimaryConstructors(boolean checkPrimaryConstructors) {
|
||||
|
||||
@@ -39,7 +39,7 @@ import org.junit.Assert;
|
||||
import java.io.File;
|
||||
|
||||
import static com.intellij.openapi.roots.ModuleRootModificationUtil.updateModel;
|
||||
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.FORBID_ERROR_TYPES;
|
||||
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.errorTypesForbidden;
|
||||
|
||||
public abstract class AbstractLazyResolveByStubTest extends KotlinCodeInsightTestCase {
|
||||
protected void doTest(String testFileName) throws Exception {
|
||||
@@ -78,7 +78,7 @@ public abstract class AbstractLazyResolveByStubTest extends KotlinCodeInsightTes
|
||||
.filterRecursion(RecursiveDescriptorComparator.SKIP_BUILT_INS_PACKAGES)
|
||||
.checkPrimaryConstructors(checkPrimaryConstructors)
|
||||
.checkPropertyAccessors(checkPropertyAccessors)
|
||||
.withValidationStrategy(FORBID_ERROR_TYPES),
|
||||
.withValidationStrategy(errorTypesForbidden()),
|
||||
fileToCompareTo
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user