Some Java tests deliberately have error types

This commit is contained in:
Andrey Breslav
2013-06-07 17:12:08 +04:00
parent 9d248d5c4a
commit aa985242ba
2 changed files with 27 additions and 20 deletions
@@ -108,7 +108,7 @@ public final class LoadDescriptorUtil {
javaDescriptorResolver.resolveNamespace(TEST_PACKAGE_FQNAME, DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN); javaDescriptorResolver.resolveNamespace(TEST_PACKAGE_FQNAME, DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN);
assert namespaceDescriptor != null; assert namespaceDescriptor != null;
DescriptorValidator.validate(namespaceDescriptor); DescriptorValidator.validateIgnoringErrorTypes(namespaceDescriptor);
return Pair.create(namespaceDescriptor, injector.getBindingTrace().getBindingContext()); return Pair.create(namespaceDescriptor, injector.getBindingTrace().getBindingContext());
} }
@@ -32,28 +32,33 @@ import java.util.List;
public class DescriptorValidator { 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() {} private DescriptorValidator() {}
public static void validate(DeclarationDescriptor... descriptors) { public static void validate(DeclarationDescriptor... descriptors) {
validate(Arrays.asList(descriptors)); validate(FORBID_ERROR_TYPES, Arrays.asList(descriptors));
} }
public static void validate(@NotNull Collection<DeclarationDescriptor> descriptors) { public static void validateIgnoringErrorTypes(DeclarationDescriptor... descriptors) {
validate(ALLOW_ERROR_TYPES, Arrays.asList(descriptors));
}
public static void validate(@NotNull ValidationVisitor validator, @NotNull Collection<DeclarationDescriptor> descriptors) {
DiagnosticCollectorForTests collector = new DiagnosticCollectorForTests(); DiagnosticCollectorForTests collector = new DiagnosticCollectorForTests();
for (DeclarationDescriptor descriptor : descriptors) { for (DeclarationDescriptor descriptor : descriptors) {
validate(descriptor, collector); validate(validator, descriptor, collector);
} }
collector.done(); collector.done();
} }
public static void validate(@NotNull Collection<? extends DeclarationDescriptor> descriptors, @NotNull DiagnosticCollector collector) { public static void validate(
for (DeclarationDescriptor descriptor : descriptors) { @NotNull ValidationVisitor validator,
validate(descriptor, collector); @NotNull DeclarationDescriptor descriptor,
} @NotNull DiagnosticCollector collector
} ) {
RecursiveDescriptorProcessor.process(descriptor, collector, validator);
public static void validate(@NotNull DeclarationDescriptor descriptor, @NotNull DiagnosticCollector collector) {
RecursiveDescriptorProcessor.process(descriptor, collector, ValidationVisitor.INSTANCE);
} }
public interface DiagnosticCollector { public interface DiagnosticCollector {
@@ -65,11 +70,13 @@ public class DescriptorValidator {
collector.report(new Diagnostic(descriptor, message)); collector.report(new Diagnostic(descriptor, message));
} }
private static class ValidationVisitor implements DeclarationDescriptorVisitor<Boolean, DiagnosticCollector> { public static class ValidationVisitor implements DeclarationDescriptorVisitor<Boolean, DiagnosticCollector> {
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) { private static void validateScope(@NotNull JetScope scope, @NotNull DiagnosticCollector collector) {
for (DeclarationDescriptor descriptor : scope.getAllDescriptors()) { for (DeclarationDescriptor descriptor : scope.getAllDescriptors()) {
@@ -77,7 +84,7 @@ public class DescriptorValidator {
} }
} }
private static void validateType( private void validateType(
@NotNull DeclarationDescriptor descriptor, @NotNull DeclarationDescriptor descriptor,
@Nullable JetType type, @Nullable JetType type,
@NotNull DiagnosticCollector collector @NotNull DiagnosticCollector collector
@@ -87,7 +94,7 @@ public class DescriptorValidator {
return; return;
} }
if (ErrorUtils.isErrorType(type)) { if (!allowErrorTypes && ErrorUtils.isErrorType(type)) {
report(collector, descriptor, "Error type: " + type); report(collector, descriptor, "Error type: " + type);
return; return;
} }
@@ -95,7 +102,7 @@ public class DescriptorValidator {
validateScope(type.getMemberScope(), collector); validateScope(type.getMemberScope(), collector);
} }
private static void validateReturnType(CallableDescriptor descriptor, DiagnosticCollector collector) { private void validateReturnType(CallableDescriptor descriptor, DiagnosticCollector collector) {
validateType(descriptor, descriptor.getReturnType(), collector); validateType(descriptor, descriptor.getReturnType(), collector);
} }
@@ -117,7 +124,7 @@ public class DescriptorValidator {
} }
} }
private static void validateTypes( private void validateTypes(
DeclarationDescriptor descriptor, DeclarationDescriptor descriptor,
DiagnosticCollector collector, DiagnosticCollector collector,
Collection<JetType> types Collection<JetType> 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); validateReturnType(descriptor, collector);
validateTypeParameters(collector, descriptor.getTypeParameters()); validateTypeParameters(collector, descriptor.getTypeParameters());
validateValueParameters(collector, descriptor.getValueParameters()); validateValueParameters(collector, descriptor.getValueParameters());