Record special descriptor in REFERENCE_TARGET for type alias object
If a type alias is used to reference an object (companion object) as a qualifier, record FakeCallableDescriptorForTypeAliasObject in REFERENCE_TARGET. This tells IDE that type alias was used in the file, thus, if it's imported, such import isn't redundant. REFERENCE_TARGET is used mostly by IDE and by ClassifierUsageChecker, which we also have to update to handle qualifiers with FakeCallableDescriptorForTypeAliasObject in REFERENCE_TARGET. Rewrite some parts of ClassifierUsageChecker for cleaner interaction. #KT-21863 Fixed Target versions 1.2.40
This commit is contained in:
@@ -61,6 +61,7 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.CallUtilKt;
|
||||
import org.jetbrains.kotlin.resolve.calls.model.*;
|
||||
import org.jetbrains.kotlin.resolve.calls.util.CallMaker;
|
||||
import org.jetbrains.kotlin.resolve.calls.util.FakeCallableDescriptorForObject;
|
||||
import org.jetbrains.kotlin.resolve.calls.util.FakeCallableDescriptorForTypeAliasObject;
|
||||
import org.jetbrains.kotlin.resolve.calls.util.UnderscoreUtilKt;
|
||||
import org.jetbrains.kotlin.resolve.checkers.PrimitiveNumericComparisonInfo;
|
||||
import org.jetbrains.kotlin.resolve.constants.*;
|
||||
@@ -1738,6 +1739,9 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
|
||||
resolvedCall, false);
|
||||
}
|
||||
|
||||
if (descriptor instanceof FakeCallableDescriptorForTypeAliasObject) {
|
||||
descriptor = ((FakeCallableDescriptorForTypeAliasObject) descriptor).getTypeAliasDescriptor();
|
||||
}
|
||||
if (descriptor instanceof TypeAliasDescriptor) {
|
||||
ClassDescriptor classDescriptor = ((TypeAliasDescriptor) descriptor).getClassDescriptor();
|
||||
if (classDescriptor == null) {
|
||||
|
||||
Reference in New Issue
Block a user