Do not search inheritors of Any

This commit is contained in:
Valentin Kipyatkov
2014-11-27 14:46:24 +03:00
parent 9af2877f97
commit c1252c7963
2 changed files with 10 additions and 7 deletions
@@ -97,13 +97,15 @@ class TypeInstantiationItems(
val typeArgs = type.getArguments()
items.addIfNotNull(createTypeInstantiationItem(classifier, typeArgs, tail))
inheritanceSearchers.addInheritorSearcher(classifier, classifier, typeArgs, tail)
if (!KotlinBuiltIns.getInstance().isAny(classifier)) { // do not search inheritors of Any
inheritanceSearchers.addInheritorSearcher(classifier, classifier, typeArgs, tail)
val javaAnalogFqName = KotlinToJavaTypesMap.getInstance().getKotlinToJavaFqName(DescriptorUtils.getFqNameSafe(classifier))
if (javaAnalogFqName != null) {
val javaAnalog = moduleDescriptor.resolveTopLevelClass(javaAnalogFqName)
if (javaAnalog != null) {
inheritanceSearchers.addInheritorSearcher(javaAnalog, classifier, typeArgs, tail)
val javaAnalogFqName = KotlinToJavaTypesMap.getInstance().getKotlinToJavaFqName(DescriptorUtils.getFqNameSafe(classifier))
if (javaAnalogFqName != null) {
val javaAnalog = moduleDescriptor.resolveTopLevelClass(javaAnalogFqName)
if (javaAnalog != null) {
inheritanceSearchers.addInheritorSearcher(javaAnalog, classifier, typeArgs, tail)
}
}
}
}
@@ -6,4 +6,5 @@ val v: Any = <caret>
// ABSENT: ::foo
// ABSENT: ::C
// ABSENT: ::Runnable
// ABSENT: ::Runnable
// ABSENT: C