Drop QualifierReceiver::resultingDescriptor. Use REFERENCE_TARGET.

This commit is contained in:
Dmitry Petrov
2015-11-10 11:48:58 +03:00
parent eef8c7ae09
commit 49570ba1ea
5 changed files with 11 additions and 15 deletions
@@ -74,9 +74,8 @@ private fun resolveAndRecordReferenceTarget(
selector: DeclarationDescriptor?,
symbolUsageValidator: SymbolUsageValidator
) {
// TODO get rid of QualifierReceiver::resultingDescriptor. REFERENCE_TARGET should be enough.
qualifier.resultingDescriptor = resolveReferenceTarget(qualifier, context, selector, symbolUsageValidator)
context.trace.record(BindingContext.REFERENCE_TARGET, qualifier.referenceExpression, qualifier.resultingDescriptor)
val resultingDescriptor = resolveReferenceTarget(qualifier, context, selector, symbolUsageValidator)
context.trace.record(BindingContext.REFERENCE_TARGET, qualifier.referenceExpression, resultingDescriptor)
}
private fun resolveReferenceTarget(
@@ -44,26 +44,23 @@ public interface Qualifier: Receiver {
public val expression: KtExpression
public val referenceExpression: KtSimpleNameExpression
public val name: Name
get() = descriptor.name
public val descriptor: DeclarationDescriptor
// package, classifier or companion object descriptor
public val resultingDescriptor: DeclarationDescriptor
public val scope: MemberScope
}
abstract class QualifierReceiver(
val referenceExpression: KtSimpleNameExpression
override val referenceExpression: KtSimpleNameExpression
) : Qualifier {
override val expression: KtExpression
get() = referenceExpression.getTopmostParentQualifiedExpressionForSelector() ?: referenceExpression
override var resultingDescriptor: DeclarationDescriptor by Delegates.notNull()
abstract fun getNestedClassesAndPackageMembersScope(): MemberScope
override fun exists() = true