Allow to specify fq-names in expected resolve testData
This commit is contained in:
@@ -41,6 +41,7 @@ import org.jetbrains.kotlin.types.ErrorUtils;
|
|||||||
import org.jetbrains.kotlin.types.KotlinType;
|
import org.jetbrains.kotlin.types.KotlinType;
|
||||||
import org.jetbrains.kotlin.types.TypeConstructor;
|
import org.jetbrains.kotlin.types.TypeConstructor;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -145,8 +146,6 @@ public abstract class ExpectedResolveData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final void checkResult(BindingContext bindingContext) {
|
public final void checkResult(BindingContext bindingContext) {
|
||||||
KotlinBuiltIns builtIns = JvmPlatform.INSTANCE.getBuiltIns();
|
|
||||||
|
|
||||||
Set<PsiElement> unresolvedReferences = Sets.newHashSet();
|
Set<PsiElement> unresolvedReferences = Sets.newHashSet();
|
||||||
for (Diagnostic diagnostic : bindingContext.getDiagnostics()) {
|
for (Diagnostic diagnostic : bindingContext.getDiagnostics()) {
|
||||||
if (Errors.UNRESOLVED_REFERENCE_DIAGNOSTICS.contains(diagnostic.getFactory())) {
|
if (Errors.UNRESOLVED_REFERENCE_DIAGNOSTICS.contains(diagnostic.getFactory())) {
|
||||||
@@ -246,8 +245,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 = builtIns.getBuiltInClassByName(Name.identifier(name.substring(STANDARD_PREFIX.length())));
|
ClassifierDescriptor expectedClass = getBuiltinClass(name.substring(STANDARD_PREFIX.length()));
|
||||||
assertNotNull("Expected class not found: " + name);
|
|
||||||
assertSame("Type resolution mismatch: ", expectedClass.getTypeConstructor(), actualType.getConstructor());
|
assertSame("Type resolution mismatch: ", expectedClass.getTypeConstructor(), actualType.getConstructor());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -303,9 +301,7 @@ public abstract class ExpectedResolveData {
|
|||||||
TypeConstructor expectedTypeConstructor;
|
TypeConstructor expectedTypeConstructor;
|
||||||
if (typeName.startsWith(STANDARD_PREFIX)) {
|
if (typeName.startsWith(STANDARD_PREFIX)) {
|
||||||
String name = typeName.substring(STANDARD_PREFIX.length());
|
String name = typeName.substring(STANDARD_PREFIX.length());
|
||||||
ClassifierDescriptor expectedClass = builtIns.getBuiltInClassByName(Name.identifier(name));
|
ClassifierDescriptor expectedClass = getBuiltinClass(name);
|
||||||
|
|
||||||
assertNotNull("Expected class not found: " + typeName, expectedClass);
|
|
||||||
expectedTypeConstructor = expectedClass.getTypeConstructor();
|
expectedTypeConstructor = expectedClass.getTypeConstructor();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -334,6 +330,21 @@ public abstract class ExpectedResolveData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static ClassifierDescriptor getBuiltinClass(String nameOrFqName) {
|
||||||
|
ClassifierDescriptor expectedClass;
|
||||||
|
|
||||||
|
if (nameOrFqName.indexOf('.') >= 0) {
|
||||||
|
expectedClass = JvmPlatform.INSTANCE.getBuiltIns().getBuiltInClassByFqNameNullable(FqName.fromSegments(Arrays.asList(nameOrFqName.split("\\."))));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
expectedClass = JvmPlatform.INSTANCE.getBuiltIns().getBuiltInClassByNameNullable(Name.identifier(nameOrFqName));
|
||||||
|
}
|
||||||
|
assertNotNull("Expected class not found: " + nameOrFqName, expectedClass);
|
||||||
|
|
||||||
|
return expectedClass;
|
||||||
|
}
|
||||||
|
|
||||||
private static String renderReferenceInContext(KtReferenceExpression referenceExpression) {
|
private static String renderReferenceInContext(KtReferenceExpression referenceExpression) {
|
||||||
KtExpression statement = referenceExpression;
|
KtExpression statement = referenceExpression;
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|||||||
Reference in New Issue
Block a user