FIR: support resolving to objects
This commit is contained in:
committed by
Mikhail Glukhikh
parent
b38f3a1272
commit
c6aff9380b
@@ -14,6 +14,8 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirWhenSubjectExpression
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
@@ -763,13 +765,16 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
|
||||
override fun visitResolvedCallableReference(resolvedCallableReference: FirResolvedCallableReference) {
|
||||
print("R|")
|
||||
val isFakeOverride = (resolvedCallableReference.callableSymbol as? FirFunctionSymbol)?.isFakeOverride == true
|
||||
val isFakeOverride = (resolvedCallableReference.coneSymbol as? FirFunctionSymbol)?.isFakeOverride == true
|
||||
|
||||
if (isFakeOverride) {
|
||||
print("FakeOverride<")
|
||||
}
|
||||
val symbol = resolvedCallableReference.callableSymbol
|
||||
print(symbol.callableId)
|
||||
val symbol = resolvedCallableReference.coneSymbol
|
||||
if (symbol is ConeCallableSymbol)
|
||||
print(symbol.callableId)
|
||||
else if (symbol is ConeClassLikeSymbol)
|
||||
print(symbol.classId)
|
||||
if (isFakeOverride) {
|
||||
when (symbol) {
|
||||
is FirFunctionSymbol -> {
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir
|
||||
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
interface FirResolvedCallableReference : FirNamedReference {
|
||||
val callableSymbol: ConeCallableSymbol
|
||||
val coneSymbol: ConeSymbol
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitResolvedCallableReference(this, data)
|
||||
|
||||
@@ -28,6 +28,7 @@ fun FirExpression.toResolvedCallableReference(): FirResolvedCallableReference? {
|
||||
return (this as? FirQualifiedAccess)?.calleeReference as? FirResolvedCallableReference
|
||||
}
|
||||
|
||||
|
||||
fun FirExpression.toResolvedCallableSymbol(): ConeCallableSymbol? {
|
||||
return toResolvedCallableReference()?.callableSymbol
|
||||
return toResolvedCallableReference()?.coneSymbol as ConeCallableSymbol?
|
||||
}
|
||||
+1
-1
@@ -16,5 +16,5 @@ class FirPropertyFromParameterCallableReference(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
override val name: Name,
|
||||
override val callableSymbol: FirVariableSymbol
|
||||
override val coneSymbol: FirVariableSymbol
|
||||
) : FirAbstractElement(session, psi), FirResolvedCallableReference
|
||||
+2
-2
@@ -9,12 +9,12 @@ import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.fir.FirAbstractElement
|
||||
import org.jetbrains.kotlin.fir.FirResolvedCallableReference
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
open class FirResolvedCallableReferenceImpl(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
override val name: Name,
|
||||
override val callableSymbol: ConeCallableSymbol
|
||||
override val coneSymbol: ConeSymbol
|
||||
) : FirAbstractElement(session, psi), FirResolvedCallableReference
|
||||
Reference in New Issue
Block a user