Account for error types equality
This commit is contained in:
@@ -149,6 +149,21 @@ public class DescriptorValidator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static <T> void assertEqualTypes(
|
||||||
|
DeclarationDescriptor descriptor,
|
||||||
|
DiagnosticCollector collector,
|
||||||
|
String name,
|
||||||
|
JetType expected,
|
||||||
|
JetType actual
|
||||||
|
) {
|
||||||
|
if (ErrorUtils.isErrorType(expected) && ErrorUtils.isErrorType(actual)) {
|
||||||
|
assertEquals(descriptor, collector, name, expected.toString(), actual.toString());
|
||||||
|
}
|
||||||
|
else if (!expected.equals(actual)) {
|
||||||
|
report(collector, descriptor, "Wrong " + name + ": " + actual + " must be " + expected);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void validateAccessor(
|
private static void validateAccessor(
|
||||||
PropertyDescriptor descriptor,
|
PropertyDescriptor descriptor,
|
||||||
DiagnosticCollector collector,
|
DiagnosticCollector collector,
|
||||||
@@ -241,7 +256,7 @@ public class DescriptorValidator {
|
|||||||
) {
|
) {
|
||||||
visitFunctionDescriptor(constructorDescriptor, collector);
|
visitFunctionDescriptor(constructorDescriptor, collector);
|
||||||
|
|
||||||
assertEquals(constructorDescriptor, collector,
|
assertEqualTypes(constructorDescriptor, collector,
|
||||||
"return type",
|
"return type",
|
||||||
constructorDescriptor.getContainingDeclaration().getDefaultType(),
|
constructorDescriptor.getContainingDeclaration().getDefaultType(),
|
||||||
constructorDescriptor.getReturnType());
|
constructorDescriptor.getReturnType());
|
||||||
@@ -264,14 +279,14 @@ public class DescriptorValidator {
|
|||||||
|
|
||||||
PropertyGetterDescriptor getter = descriptor.getGetter();
|
PropertyGetterDescriptor getter = descriptor.getGetter();
|
||||||
if (getter != null) {
|
if (getter != null) {
|
||||||
assertEquals(getter, collector, "getter return type", descriptor.getType(), getter.getReturnType());
|
assertEqualTypes(getter, collector, "getter return type", descriptor.getType(), getter.getReturnType());
|
||||||
validateAccessor(descriptor, collector, getter, "getter");
|
validateAccessor(descriptor, collector, getter, "getter");
|
||||||
}
|
}
|
||||||
|
|
||||||
PropertySetterDescriptor setter = descriptor.getSetter();
|
PropertySetterDescriptor setter = descriptor.getSetter();
|
||||||
if (setter != null) {
|
if (setter != null) {
|
||||||
assertEquals(setter, collector, "setter parameter count", 1, setter.getValueParameters().size());
|
assertEquals(setter, collector, "setter parameter count", 1, setter.getValueParameters().size());
|
||||||
assertEquals(setter, collector, "setter parameter type", descriptor.getType(), setter.getValueParameters().get(0).getType());
|
assertEqualTypes(setter, collector, "setter parameter type", descriptor.getType(), setter.getValueParameters().get(0).getType());
|
||||||
assertEquals(setter, collector, "corresponding property", descriptor, setter.getCorrespondingProperty());
|
assertEquals(setter, collector, "corresponding property", descriptor, setter.getCorrespondingProperty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user