Fix ResolveTest
Compare descriptors by their FQ-names instead of references
This commit is contained in:
@@ -236,7 +236,8 @@ public abstract class ExpectedResolveData {
|
|||||||
KtTypeReference typeReference = getAncestorOfType(KtTypeReference.class, element);
|
KtTypeReference typeReference = getAncestorOfType(KtTypeReference.class, element);
|
||||||
if (expectedDescriptor != null) {
|
if (expectedDescriptor != null) {
|
||||||
DeclarationDescriptor actual = bindingContext.get(REFERENCE_TARGET, reference);
|
DeclarationDescriptor actual = bindingContext.get(REFERENCE_TARGET, reference);
|
||||||
assertSame("Expected: " + name, expectedDescriptor.getOriginal(), actual == null
|
|
||||||
|
assertDescriptorsEqual("Expected: " + name, expectedDescriptor.getOriginal(), actual == null
|
||||||
? null
|
? null
|
||||||
: actual.getOriginal());
|
: actual.getOriginal());
|
||||||
continue;
|
continue;
|
||||||
@@ -245,7 +246,7 @@ public abstract class ExpectedResolveData {
|
|||||||
KotlinType actualType = bindingContext.get(BindingContext.TYPE, typeReference);
|
KotlinType actualType = bindingContext.get(BindingContext.TYPE, typeReference);
|
||||||
assertNotNull("Type " + name + " not resolved for reference " + name, actualType);
|
assertNotNull("Type " + name + " not resolved for reference " + name, actualType);
|
||||||
ClassifierDescriptor expectedClass = getBuiltinClass(name.substring(STANDARD_PREFIX.length()));
|
ClassifierDescriptor expectedClass = getBuiltinClass(name.substring(STANDARD_PREFIX.length()));
|
||||||
assertSame("Type resolution mismatch: ", expectedClass.getTypeConstructor(), actualType.getConstructor());
|
assertTypeConstructorEquals("Type resolution mismatch: ", expectedClass.getTypeConstructor(), actualType.getConstructor());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
assert expected != null : "No declaration for " + name;
|
assert expected != null : "No declaration for " + name;
|
||||||
@@ -325,10 +326,27 @@ public abstract class ExpectedResolveData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
assertNotNull(expression.getText() + " type is null", expressionType);
|
assertNotNull(expression.getText() + " type is null", expressionType);
|
||||||
assertSame("At " + position + ": ", expectedTypeConstructor, expressionType.getConstructor());
|
assertTypeConstructorEquals("At " + position + ": ", expectedTypeConstructor, expressionType.getConstructor());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void assertTypeConstructorEquals(String message, TypeConstructor expected, TypeConstructor actual) {
|
||||||
|
assertDescriptorsEqual(message, expected.getDeclarationDescriptor(), actual.getDeclarationDescriptor());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void assertDescriptorsEqual(String message, DeclarationDescriptor expected, DeclarationDescriptor actual) {
|
||||||
|
if (DescriptorEquivalenceForOverrides.INSTANCE.areEquivalent(expected, actual)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String formatted = "";
|
||||||
|
if (message != null) {
|
||||||
|
formatted = message + " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
fail(formatted + "expected same:<" + expected + "> was not:<" + actual
|
||||||
|
+ ">");
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static ClassifierDescriptor getBuiltinClass(String nameOrFqName) {
|
public static ClassifierDescriptor getBuiltinClass(String nameOrFqName) {
|
||||||
ClassifierDescriptor expectedClass;
|
ClassifierDescriptor expectedClass;
|
||||||
|
|||||||
Reference in New Issue
Block a user