FIR call resolve: set values of dispatch & extension receivers

This commit is contained in:
Mikhail Glukhikh
2019-08-27 17:43:32 +03:00
parent 67a7243361
commit b531e535b6
81 changed files with 337 additions and 237 deletions
@@ -20,6 +20,10 @@ interface FirQualifiedAccess : FirResolvable {
fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitQualifiedAccess(this, data)
@@ -27,6 +27,14 @@ class FirComponentCallImpl(
return this
}
override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
return this
}
override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
return this
}
override var calleeReference: FirNamedReference =
FirSimpleNamedReference(psi, Name.identifier("component$componentIndex"))
@@ -42,6 +42,14 @@ class FirDelegatedConstructorCallImpl(
return this
}
override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
return this
}
override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
return this
}
override var typeRef: FirTypeRef = FirImplicitUnitTypeRef(psi)
override fun replaceTypeRef(newTypeRef: FirTypeRef) {}
@@ -20,6 +20,14 @@ interface FirModifiableQualifiedAccess<C : FirReference> : FirQualifiedAccess {
override var explicitReceiver: FirExpression?
override var dispatchReceiver: FirExpression
get() = super.dispatchReceiver
set(_) {}
override var extensionReceiver: FirExpression
get() = super.extensionReceiver
set(_) {}
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
calleeReference = calleeReference.transformSingle(transformer, data)
return this
@@ -29,4 +37,14 @@ interface FirModifiableQualifiedAccess<C : FirReference> : FirQualifiedAccess {
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
return this
}
override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
dispatchReceiver = dispatchReceiver.transformSingle(transformer, data)
return this
}
override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
extensionReceiver = extensionReceiver.transformSingle(transformer, data)
return this
}
}
@@ -0,0 +1,15 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.references
import org.jetbrains.kotlin.fir.FirAbstractElement
import org.jetbrains.kotlin.fir.FirThisReference
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
class FirImplicitThisReference(override val boundSymbol: AbstractFirBasedSymbol<*>) : FirAbstractElement(null), FirThisReference {
override val labelName: String?
get() = null
}