Refactor: Make ValidationVisitor stateful so it's possible to inherit from it

This commit is contained in:
Pavel V. Talanov
2014-11-10 15:42:16 +03:00
parent 5f47a5aa49
commit 2533887253
7 changed files with 36 additions and 28 deletions
@@ -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 {
@@ -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"));
}
@@ -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
);
}