From aa985242ba2166241b4f94e4c6d7ae86e0bb299c Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 7 Jun 2013 17:12:08 +0400 Subject: [PATCH] Some Java tests deliberately have error types --- .../jet/jvm/compiler/LoadDescriptorUtil.java | 2 +- .../jet/test/util/DescriptorValidator.java | 45 +++++++++++-------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadDescriptorUtil.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadDescriptorUtil.java index 22f22563599..cac81dec73a 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadDescriptorUtil.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadDescriptorUtil.java @@ -108,7 +108,7 @@ public final class LoadDescriptorUtil { javaDescriptorResolver.resolveNamespace(TEST_PACKAGE_FQNAME, DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN); assert namespaceDescriptor != null; - DescriptorValidator.validate(namespaceDescriptor); + DescriptorValidator.validateIgnoringErrorTypes(namespaceDescriptor); return Pair.create(namespaceDescriptor, injector.getBindingTrace().getBindingContext()); } diff --git a/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java b/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java index afc2079f311..0bce353abbf 100644 --- a/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java +++ b/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java @@ -32,28 +32,33 @@ import java.util.List; public class DescriptorValidator { + public static final ValidationVisitor FORBID_ERROR_TYPES = new ValidationVisitor(false); + public static final ValidationVisitor ALLOW_ERROR_TYPES = new ValidationVisitor(true); + private DescriptorValidator() {} public static void validate(DeclarationDescriptor... descriptors) { - validate(Arrays.asList(descriptors)); + validate(FORBID_ERROR_TYPES, Arrays.asList(descriptors)); } - public static void validate(@NotNull Collection descriptors) { + public static void validateIgnoringErrorTypes(DeclarationDescriptor... descriptors) { + validate(ALLOW_ERROR_TYPES, Arrays.asList(descriptors)); + } + + public static void validate(@NotNull ValidationVisitor validator, @NotNull Collection descriptors) { DiagnosticCollectorForTests collector = new DiagnosticCollectorForTests(); for (DeclarationDescriptor descriptor : descriptors) { - validate(descriptor, collector); + validate(validator, descriptor, collector); } collector.done(); } - public static void validate(@NotNull Collection descriptors, @NotNull DiagnosticCollector collector) { - for (DeclarationDescriptor descriptor : descriptors) { - validate(descriptor, collector); - } - } - - public static void validate(@NotNull DeclarationDescriptor descriptor, @NotNull DiagnosticCollector collector) { - RecursiveDescriptorProcessor.process(descriptor, collector, ValidationVisitor.INSTANCE); + public static void validate( + @NotNull ValidationVisitor validator, + @NotNull DeclarationDescriptor descriptor, + @NotNull DiagnosticCollector collector + ) { + RecursiveDescriptorProcessor.process(descriptor, collector, validator); } public interface DiagnosticCollector { @@ -65,11 +70,13 @@ public class DescriptorValidator { collector.report(new Diagnostic(descriptor, message)); } - private static class ValidationVisitor implements DeclarationDescriptorVisitor { + public static class ValidationVisitor implements DeclarationDescriptorVisitor { - public static final ValidationVisitor INSTANCE = new ValidationVisitor(); + private final boolean allowErrorTypes; - private ValidationVisitor() {} + private ValidationVisitor(boolean allowErrorTypes) { + this.allowErrorTypes = allowErrorTypes; + } private static void validateScope(@NotNull JetScope scope, @NotNull DiagnosticCollector collector) { for (DeclarationDescriptor descriptor : scope.getAllDescriptors()) { @@ -77,7 +84,7 @@ public class DescriptorValidator { } } - private static void validateType( + private void validateType( @NotNull DeclarationDescriptor descriptor, @Nullable JetType type, @NotNull DiagnosticCollector collector @@ -87,7 +94,7 @@ public class DescriptorValidator { return; } - if (ErrorUtils.isErrorType(type)) { + if (!allowErrorTypes && ErrorUtils.isErrorType(type)) { report(collector, descriptor, "Error type: " + type); return; } @@ -95,7 +102,7 @@ public class DescriptorValidator { validateScope(type.getMemberScope(), collector); } - private static void validateReturnType(CallableDescriptor descriptor, DiagnosticCollector collector) { + private void validateReturnType(CallableDescriptor descriptor, DiagnosticCollector collector) { validateType(descriptor, descriptor.getReturnType(), collector); } @@ -117,7 +124,7 @@ public class DescriptorValidator { } } - private static void validateTypes( + private void validateTypes( DeclarationDescriptor descriptor, DiagnosticCollector collector, Collection types @@ -127,7 +134,7 @@ public class DescriptorValidator { } } - private static void validateCallable(CallableDescriptor descriptor, DiagnosticCollector collector) { + private void validateCallable(CallableDescriptor descriptor, DiagnosticCollector collector) { validateReturnType(descriptor, collector); validateTypeParameters(collector, descriptor.getTypeParameters()); validateValueParameters(collector, descriptor.getValueParameters());