[FIR] Get rid of candidateSymbol in FirNamedReference
`candidateSymbol` has any reasonable meaning only for references with not completed candidate, so this property is moved from FirNamedReference to new node FirNamedReferenceWithCandidateSymbol, which has real implementation only in :resolve module (`FirNamedReferenceWithCandidate`)
This commit is contained in:
committed by
Space Team
parent
366edcfe3c
commit
4bddb27ca3
+2
-7
@@ -24,8 +24,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.toFirDiagnostics
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.toResolvedCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutorByMap
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||
@@ -89,11 +88,7 @@ internal interface KtFirAnalysisSessionComponent {
|
||||
}
|
||||
|
||||
fun FirQualifiedAccess.createConeSubstitutorFromTypeArguments(): ConeSubstitutor? {
|
||||
val symbol = when (val calleeReference = calleeReference) {
|
||||
is FirResolvedNamedReference -> calleeReference.resolvedSymbol as? FirCallableSymbol<*>
|
||||
is FirErrorNamedReference -> calleeReference.candidateSymbol as? FirCallableSymbol<*>
|
||||
else -> null
|
||||
} ?: return null
|
||||
val symbol = calleeReference.toResolvedCallableSymbol() ?: return null
|
||||
return createConeSubstitutorFromTypeArguments(symbol)
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -336,8 +336,7 @@ internal class KtFirCallResolver(
|
||||
resolveFragmentOfCall: Boolean
|
||||
): KtCall? {
|
||||
val targetSymbol = candidate?.symbol
|
||||
?: (fir.calleeReference as? FirResolvedNamedReference)?.resolvedSymbol
|
||||
?: (fir.calleeReference as? FirNamedReference)?.candidateSymbol
|
||||
?: fir.calleeReference.toResolvedBaseSymbol()
|
||||
?: return null
|
||||
if (targetSymbol !is FirCallableSymbol<*>) return null
|
||||
if (targetSymbol is FirErrorFunctionSymbol || targetSymbol is FirErrorPropertySymbol) return null
|
||||
|
||||
-1
@@ -267,7 +267,6 @@ private val FirPropertyAccessExpression.propertyReferenceName: Name?
|
||||
private val FirQualifiedAccessExpression.referencedCallableSymbol: FirCallableSymbol<*>?
|
||||
get() {
|
||||
return toResolvedCallableSymbol()
|
||||
?: (calleeReference as? FirNamedReference)?.candidateSymbol as? FirCallableSymbol<*>
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-8
@@ -544,14 +544,7 @@ private class ElementsToShortenCollector(
|
||||
private fun findUnambiguousReferencedCallableId(namedReference: FirNamedReference): FirCallableSymbol<*>? {
|
||||
val unambiguousSymbol = when (namedReference) {
|
||||
is FirResolvedNamedReference -> namedReference.resolvedSymbol
|
||||
is FirErrorNamedReference -> {
|
||||
val candidateSymbol = namedReference.candidateSymbol
|
||||
if (candidateSymbol !is FirErrorFunctionSymbol) {
|
||||
candidateSymbol
|
||||
} else {
|
||||
getSingleUnambiguousCandidate(namedReference)
|
||||
}
|
||||
}
|
||||
is FirErrorNamedReference -> getSingleUnambiguousCandidate(namedReference)
|
||||
else -> null
|
||||
}
|
||||
|
||||
|
||||
+11
-8
@@ -6,25 +6,30 @@
|
||||
package org.jetbrains.kotlin.fir.resolve.calls
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirImplementationDetail
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReferenceWithCandidateBase
|
||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
@OptIn(FirImplementationDetail::class)
|
||||
open class FirNamedReferenceWithCandidate(
|
||||
source: KtSourceElement?,
|
||||
name: Name,
|
||||
override val source: KtSourceElement?,
|
||||
override val name: Name,
|
||||
val candidate: Candidate
|
||||
) : FirSimpleNamedReference(source, name, candidate.symbol) {
|
||||
) : FirNamedReferenceWithCandidateBase() {
|
||||
override val candidateSymbol: FirBasedSymbol<*>
|
||||
get() = candidate.symbol
|
||||
|
||||
open val isError: Boolean get() = false
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
class FirErrorReferenceWithCandidate(
|
||||
@@ -42,8 +47,6 @@ class FirPropertyWithExplicitBackingFieldResolvedNamedReference(
|
||||
override val resolvedSymbol: FirBasedSymbol<*>,
|
||||
val hasVisibleBackingField: Boolean,
|
||||
) : FirResolvedNamedReference() {
|
||||
override val candidateSymbol: FirBasedSymbol<*>? get() = null
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirPropertyWithExplicitBackingFieldResolvedNamedReference {
|
||||
|
||||
+1
-7
@@ -7,14 +7,10 @@ package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
|
||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.builtins.functions.FunctionClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fakeElement
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildReceiverParameterCopy
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isInline
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
|
||||
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
||||
@@ -401,7 +397,6 @@ class FirCallCompletionResultsWriterTransformer(
|
||||
return when (calleeReference.candidateSymbol) {
|
||||
is FirErrorPropertySymbol, is FirErrorFunctionSymbol -> buildErrorNamedReference {
|
||||
source = calleeReference.source
|
||||
candidateSymbol = calleeReference.candidateSymbol
|
||||
this.diagnostic = diagnostic
|
||||
}
|
||||
else -> buildResolvedErrorReference {
|
||||
@@ -417,8 +412,7 @@ class FirCallCompletionResultsWriterTransformer(
|
||||
variableAssignment: FirVariableAssignment,
|
||||
data: ExpectedArgumentType?,
|
||||
): FirStatement {
|
||||
val calleeReference = variableAssignment.calleeReference as? FirNamedReferenceWithCandidate
|
||||
?: return variableAssignment
|
||||
val calleeReference = variableAssignment.calleeReference as? FirNamedReferenceWithCandidate ?: return variableAssignment
|
||||
|
||||
// Initialize lValueTypeRef
|
||||
val qualifiedTransform = prepareQualifiedTransform(variableAssignment, calleeReference)
|
||||
|
||||
+14
@@ -54,6 +54,13 @@ internal object StoreNameReference : FirDefaultTransformer<FirNamedReference>()
|
||||
return data
|
||||
}
|
||||
|
||||
override fun transformNamedReferenceWithCandidateSymbol(
|
||||
namedReferenceWithCandidateSymbol: FirNamedReferenceWithCandidateSymbol,
|
||||
data: FirNamedReference
|
||||
): FirReference {
|
||||
return data
|
||||
}
|
||||
|
||||
override fun transformThisReference(thisReference: FirThisReference, data: FirNamedReference): FirReference {
|
||||
return data
|
||||
}
|
||||
@@ -78,6 +85,13 @@ internal object StoreCalleeReference : FirTransformer<FirNamedReference>() {
|
||||
return data
|
||||
}
|
||||
|
||||
override fun transformNamedReferenceWithCandidateSymbol(
|
||||
namedReferenceWithCandidateSymbol: FirNamedReferenceWithCandidateSymbol,
|
||||
data: FirNamedReference
|
||||
): FirReference {
|
||||
return data
|
||||
}
|
||||
|
||||
override fun transformResolvedNamedReference(
|
||||
resolvedNamedReference: FirResolvedNamedReference,
|
||||
data: FirNamedReference
|
||||
|
||||
+2
-7
@@ -386,6 +386,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
) {
|
||||
storeTypeFromCallee(functionCall)
|
||||
}
|
||||
if (calleeReference is FirNamedReferenceWithCandidate) return functionCall
|
||||
if (calleeReference !is FirSimpleNamedReference) {
|
||||
// The callee reference can be resolved as an error very early, e.g., `super` as a callee during raw FIR creation.
|
||||
// We still need to visit/transform other parts, e.g., call arguments, to check if any other errors are there.
|
||||
@@ -394,7 +395,6 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
}
|
||||
return functionCall
|
||||
}
|
||||
if (calleeReference is FirNamedReferenceWithCandidate) return functionCall
|
||||
functionCall.transformAnnotations(transformer, data)
|
||||
functionCall.replaceLambdaArgumentInvocationKinds(session)
|
||||
functionCall.transformTypeArguments(transformer, ResolutionMode.ContextIndependent)
|
||||
@@ -455,11 +455,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
|
||||
private fun FirFunctionCall.transformToIntegerOperatorCallOrApproximateItIfNeeded(resolutionMode: ResolutionMode): FirFunctionCall {
|
||||
if (!explicitReceiver.isIntegerLiteralOrOperatorCall()) return this
|
||||
val resolvedSymbol = when (val reference = calleeReference) {
|
||||
is FirResolvedNamedReference -> reference.resolvedSymbol
|
||||
is FirErrorNamedReference -> reference.candidateSymbol
|
||||
else -> null
|
||||
} ?: return this
|
||||
val resolvedSymbol = calleeReference.toResolvedFunctionSymbol() ?: return this
|
||||
if (!resolvedSymbol.isWrappedIntegerOperator()) return this
|
||||
|
||||
val arguments = this.argumentList.arguments
|
||||
@@ -1223,7 +1219,6 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
// TODO: Use source of operator for callee reference source
|
||||
this.source = source
|
||||
this.name = name
|
||||
candidateSymbol = null
|
||||
}
|
||||
origin = FirFunctionCallOrigin.Operator
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@ package org.jetbrains.kotlin.fir.resolve.dfa
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReferenceWithCandidateBase
|
||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirSyntheticPropertySymbol
|
||||
@@ -55,7 +55,7 @@ internal val FirResolvable.symbol: FirBasedSymbol<*>?
|
||||
get() = when (val reference = calleeReference) {
|
||||
is FirThisReference -> reference.boundSymbol
|
||||
is FirResolvedNamedReference -> reference.resolvedSymbol
|
||||
is FirSimpleNamedReference -> reference.candidateSymbol
|
||||
is FirNamedReferenceWithCandidateBase -> reference.candidateSymbol
|
||||
else -> null
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ internal class FirComponentCallImpl(
|
||||
override val componentIndex: Int,
|
||||
) : FirComponentCall() {
|
||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
||||
override var calleeReference: FirNamedReference = FirSimpleNamedReference(source, Name.identifier("component$componentIndex"), null)
|
||||
override var calleeReference: FirNamedReference = FirSimpleNamedReference(source, Name.identifier("component$componentIndex"))
|
||||
override val origin: FirFunctionCallOrigin = FirFunctionCallOrigin.Operator
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
|
||||
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.references
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
@@ -20,7 +19,6 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
abstract class FirBackingFieldReference : FirResolvedNamedReference() {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val name: Name
|
||||
abstract override val candidateSymbol: FirBasedSymbol<*>?
|
||||
abstract override val resolvedSymbol: FirBackingFieldSymbol
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitBackingFieldReference(this, data)
|
||||
|
||||
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.references
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
@@ -20,7 +19,6 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
abstract class FirDelegateFieldReference : FirResolvedNamedReference() {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val name: Name
|
||||
abstract override val candidateSymbol: FirBasedSymbol<*>?
|
||||
abstract override val resolvedSymbol: FirDelegateFieldSymbol
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitDelegateFieldReference(this, data)
|
||||
|
||||
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.diagnostics.FirDiagnosticHolder
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
@@ -21,7 +20,6 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
abstract class FirErrorNamedReference : FirNamedReference(), FirDiagnosticHolder {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val name: Name
|
||||
abstract override val candidateSymbol: FirBasedSymbol<*>?
|
||||
abstract override val diagnostic: ConeDiagnostic
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitErrorNamedReference(this, data)
|
||||
|
||||
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.references
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
@@ -19,7 +18,6 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
abstract class FirNamedReference : FirReference() {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract val name: Name
|
||||
abstract val candidateSymbol: FirBasedSymbol<*>?
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitNamedReference(this, data)
|
||||
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright 2010-2022 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.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
* This file was generated automatically
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
abstract class FirNamedReferenceWithCandidateBase : FirNamedReference() {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val name: Name
|
||||
abstract val candidateSymbol: FirBasedSymbol<*>
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitNamedReferenceWithCandidateBase(this, data)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <E: FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
|
||||
transformer.transformNamedReferenceWithCandidateBase(this, data) as E
|
||||
}
|
||||
-1
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
abstract class FirResolvedCallableReference : FirResolvedNamedReference() {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val name: Name
|
||||
abstract override val candidateSymbol: FirBasedSymbol<*>?
|
||||
abstract override val resolvedSymbol: FirBasedSymbol<*>
|
||||
abstract val inferredTypeArguments: List<ConeKotlinType>
|
||||
abstract val mappedArguments: CallableReferenceMappedArguments
|
||||
|
||||
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
abstract class FirResolvedErrorReference : FirResolvedNamedReference(), FirDiagnosticHolder {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val name: Name
|
||||
abstract override val candidateSymbol: FirBasedSymbol<*>?
|
||||
abstract override val resolvedSymbol: FirBasedSymbol<*>
|
||||
abstract override val diagnostic: ConeDiagnostic
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
abstract class FirResolvedNamedReference : FirNamedReference() {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val name: Name
|
||||
abstract override val candidateSymbol: FirBasedSymbol<*>?
|
||||
abstract val resolvedSymbol: FirBasedSymbol<*>
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedNamedReference(this, data)
|
||||
|
||||
-3
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.references.FirBackingFieldReference
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirBackingFieldReferenceImpl
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -25,13 +24,11 @@ import org.jetbrains.kotlin.name.Name
|
||||
@FirBuilderDsl
|
||||
class FirBackingFieldReferenceBuilder {
|
||||
var source: KtSourceElement? = null
|
||||
var candidateSymbol: FirBasedSymbol<*>? = null
|
||||
lateinit var resolvedSymbol: FirBackingFieldSymbol
|
||||
|
||||
fun build(): FirBackingFieldReference {
|
||||
return FirBackingFieldReferenceImpl(
|
||||
source,
|
||||
candidateSymbol,
|
||||
resolvedSymbol,
|
||||
)
|
||||
}
|
||||
|
||||
-3
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.references.FirDelegateFieldReference
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirDelegateFieldReferenceImpl
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -25,13 +24,11 @@ import org.jetbrains.kotlin.name.Name
|
||||
@FirBuilderDsl
|
||||
class FirDelegateFieldReferenceBuilder {
|
||||
var source: KtSourceElement? = null
|
||||
var candidateSymbol: FirBasedSymbol<*>? = null
|
||||
lateinit var resolvedSymbol: FirDelegateFieldSymbol
|
||||
|
||||
fun build(): FirDelegateFieldReference {
|
||||
return FirDelegateFieldReferenceImpl(
|
||||
source,
|
||||
candidateSymbol,
|
||||
resolvedSymbol,
|
||||
)
|
||||
}
|
||||
|
||||
-3
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirErrorNamedReferenceImpl
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
@@ -25,13 +24,11 @@ import org.jetbrains.kotlin.name.Name
|
||||
@FirBuilderDsl
|
||||
class FirErrorNamedReferenceBuilder {
|
||||
var source: KtSourceElement? = null
|
||||
var candidateSymbol: FirBasedSymbol<*>? = null
|
||||
lateinit var diagnostic: ConeDiagnostic
|
||||
|
||||
fun build(): FirErrorNamedReference {
|
||||
return FirErrorNamedReferenceImpl(
|
||||
source,
|
||||
candidateSymbol,
|
||||
diagnostic,
|
||||
)
|
||||
}
|
||||
|
||||
-3
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.FirImplementationDetail
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
@@ -26,14 +25,12 @@ import org.jetbrains.kotlin.name.Name
|
||||
class FirSimpleNamedReferenceBuilder {
|
||||
var source: KtSourceElement? = null
|
||||
lateinit var name: Name
|
||||
var candidateSymbol: FirBasedSymbol<*>? = null
|
||||
|
||||
@OptIn(FirImplementationDetail::class)
|
||||
fun build(): FirNamedReference {
|
||||
return FirSimpleNamedReference(
|
||||
source,
|
||||
name,
|
||||
candidateSymbol,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
-2
@@ -9,7 +9,6 @@ package org.jetbrains.kotlin.fir.references.impl
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.references.FirBackingFieldReference
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
@@ -21,7 +20,6 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
internal class FirBackingFieldReferenceImpl(
|
||||
override val source: KtSourceElement?,
|
||||
override val candidateSymbol: FirBasedSymbol<*>?,
|
||||
override val resolvedSymbol: FirBackingFieldSymbol,
|
||||
) : FirBackingFieldReference() {
|
||||
override val name: Name get() = Name.identifier("\$field")
|
||||
|
||||
-2
@@ -9,7 +9,6 @@ package org.jetbrains.kotlin.fir.references.impl
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.references.FirDelegateFieldReference
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
@@ -21,7 +20,6 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
internal class FirDelegateFieldReferenceImpl(
|
||||
override val source: KtSourceElement?,
|
||||
override val candidateSymbol: FirBasedSymbol<*>?,
|
||||
override val resolvedSymbol: FirDelegateFieldSymbol,
|
||||
) : FirDelegateFieldReference() {
|
||||
override val name: Name get() = Name.identifier("\$delegate")
|
||||
|
||||
-2
@@ -10,7 +10,6 @@ package org.jetbrains.kotlin.fir.references.impl
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
@@ -21,7 +20,6 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
internal class FirErrorNamedReferenceImpl(
|
||||
override val source: KtSourceElement?,
|
||||
override val candidateSymbol: FirBasedSymbol<*>?,
|
||||
override val diagnostic: ConeDiagnostic,
|
||||
) : FirErrorNamedReference() {
|
||||
override val name: Name = Name.special("<${diagnostic.reason}>")
|
||||
|
||||
-2
@@ -24,8 +24,6 @@ class FirPropertyFromParameterResolvedNamedReference @FirImplementationDetail co
|
||||
override val name: Name,
|
||||
override val resolvedSymbol: FirBasedSymbol<*>,
|
||||
) : FirResolvedNamedReference() {
|
||||
override val candidateSymbol: FirBasedSymbol<*>? get() = null
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirPropertyFromParameterResolvedNamedReference {
|
||||
|
||||
-2
@@ -27,8 +27,6 @@ internal class FirResolvedCallableReferenceImpl(
|
||||
override val inferredTypeArguments: MutableList<ConeKotlinType>,
|
||||
override val mappedArguments: CallableReferenceMappedArguments,
|
||||
) : FirResolvedCallableReference() {
|
||||
override val candidateSymbol: FirBasedSymbol<*>? get() = null
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirResolvedCallableReferenceImpl {
|
||||
|
||||
-2
@@ -25,8 +25,6 @@ internal class FirResolvedErrorReferenceImpl(
|
||||
override val resolvedSymbol: FirBasedSymbol<*>,
|
||||
override val diagnostic: ConeDiagnostic,
|
||||
) : FirResolvedErrorReference() {
|
||||
override val candidateSymbol: FirBasedSymbol<*>? get() = null
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirResolvedErrorReferenceImpl {
|
||||
|
||||
-2
@@ -23,8 +23,6 @@ internal class FirResolvedNamedReferenceImpl(
|
||||
override val name: Name,
|
||||
override val resolvedSymbol: FirBasedSymbol<*>,
|
||||
) : FirResolvedNamedReference() {
|
||||
override val candidateSymbol: FirBasedSymbol<*>? get() = null
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirResolvedNamedReferenceImpl {
|
||||
|
||||
+1
-3
@@ -10,7 +10,6 @@ package org.jetbrains.kotlin.fir.references.impl
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirImplementationDetail
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
@@ -19,10 +18,9 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
open class FirSimpleNamedReference @FirImplementationDetail constructor(
|
||||
class FirSimpleNamedReference @FirImplementationDetail constructor(
|
||||
override val source: KtSourceElement?,
|
||||
override val name: Name,
|
||||
override val candidateSymbol: FirBasedSymbol<*>?,
|
||||
) : FirNamedReference() {
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||
|
||||
|
||||
@@ -125,6 +125,7 @@ import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReferenceWithCandidateBase
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
@@ -262,6 +263,8 @@ abstract class FirDefaultVisitor<out R, in D> : FirVisitor<R, D>() {
|
||||
|
||||
override fun visitNamedReference(namedReference: FirNamedReference, data: D): R = visitReference(namedReference, data)
|
||||
|
||||
override fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase, data: D): R = visitNamedReference(namedReferenceWithCandidateBase, data)
|
||||
|
||||
override fun visitSuperReference(superReference: FirSuperReference, data: D): R = visitReference(superReference, data)
|
||||
|
||||
override fun visitThisReference(thisReference: FirThisReference, data: D): R = visitReference(thisReference, data)
|
||||
|
||||
@@ -125,6 +125,7 @@ import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReferenceWithCandidateBase
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
@@ -262,6 +263,8 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() {
|
||||
|
||||
override fun visitNamedReference(namedReference: FirNamedReference) = visitReference(namedReference)
|
||||
|
||||
override fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase) = visitNamedReference(namedReferenceWithCandidateBase)
|
||||
|
||||
override fun visitSuperReference(superReference: FirSuperReference) = visitReference(superReference)
|
||||
|
||||
override fun visitThisReference(thisReference: FirThisReference) = visitReference(thisReference)
|
||||
|
||||
@@ -125,6 +125,7 @@ import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReferenceWithCandidateBase
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
@@ -633,6 +634,10 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
|
||||
return transformElement(namedReference, data)
|
||||
}
|
||||
|
||||
open fun transformNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase, data: D): FirReference {
|
||||
return transformElement(namedReferenceWithCandidateBase, data)
|
||||
}
|
||||
|
||||
open fun transformErrorNamedReference(errorNamedReference: FirErrorNamedReference, data: D): FirReference {
|
||||
return transformElement(errorNamedReference, data)
|
||||
}
|
||||
@@ -1201,6 +1206,10 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
|
||||
return transformNamedReference(namedReference, data)
|
||||
}
|
||||
|
||||
final override fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase, data: D): FirReference {
|
||||
return transformNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase, data)
|
||||
}
|
||||
|
||||
final override fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference, data: D): FirReference {
|
||||
return transformErrorNamedReference(errorNamedReference, data)
|
||||
}
|
||||
|
||||
@@ -125,6 +125,7 @@ import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReferenceWithCandidateBase
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
@@ -394,6 +395,8 @@ abstract class FirVisitor<out R, in D> {
|
||||
|
||||
open fun visitNamedReference(namedReference: FirNamedReference, data: D): R = visitElement(namedReference, data)
|
||||
|
||||
open fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase, data: D): R = visitElement(namedReferenceWithCandidateBase, data)
|
||||
|
||||
open fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference, data: D): R = visitElement(errorNamedReference, data)
|
||||
|
||||
open fun visitSuperReference(superReference: FirSuperReference, data: D): R = visitElement(superReference, data)
|
||||
|
||||
@@ -125,6 +125,7 @@ import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReferenceWithCandidateBase
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
@@ -632,6 +633,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitElement(namedReference)
|
||||
}
|
||||
|
||||
open fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase) {
|
||||
visitElement(namedReferenceWithCandidateBase)
|
||||
}
|
||||
|
||||
open fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference) {
|
||||
visitElement(errorNamedReference)
|
||||
}
|
||||
@@ -1200,6 +1205,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitNamedReference(namedReference)
|
||||
}
|
||||
|
||||
final override fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase, data: Nothing?) {
|
||||
visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase)
|
||||
}
|
||||
|
||||
final override fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference, data: Nothing?) {
|
||||
visitErrorNamedReference(errorNamedReference)
|
||||
}
|
||||
|
||||
@@ -782,12 +782,15 @@ class FirRenderer(
|
||||
}
|
||||
|
||||
override fun visitNamedReference(namedReference: FirNamedReference) {
|
||||
val symbol = namedReference.candidateSymbol
|
||||
when {
|
||||
namedReference is FirErrorNamedReference -> print("<${namedReference.diagnostic.reason}>#")
|
||||
symbol != null -> print("R?C|${symbol.render()}|")
|
||||
else -> print("${namedReference.name}#")
|
||||
}
|
||||
print("${namedReference.name}#")
|
||||
}
|
||||
|
||||
override fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase) {
|
||||
print("R?C|${namedReferenceWithCandidateBase.candidateSymbol.render()}|")
|
||||
}
|
||||
|
||||
override fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference) {
|
||||
print("<${errorNamedReference.diagnostic.reason}>#")
|
||||
}
|
||||
|
||||
override fun visitBackingFieldReference(backingFieldReference: FirBackingFieldReference) {
|
||||
@@ -1063,10 +1066,6 @@ class FirRenderer(
|
||||
binaryLogicExpression.rightOperand.accept(this)
|
||||
}
|
||||
|
||||
override fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference) {
|
||||
visitNamedReference(errorNamedReference)
|
||||
}
|
||||
|
||||
override fun visitEffectDeclaration(effectDeclaration: FirEffectDeclaration) {
|
||||
contractRenderer?.render(effectDeclaration)
|
||||
}
|
||||
|
||||
+1
@@ -152,6 +152,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val wrappedDelegateExpression by element(Expression, wrappedExpression)
|
||||
|
||||
val namedReference by element(Reference, reference)
|
||||
val namedReferenceWithCandidateBase by element(Reference, namedReference)
|
||||
val errorNamedReference by element(Reference, namedReference, diagnosticHolder)
|
||||
val superReference by element(Reference, reference)
|
||||
val thisReference by element(Reference, reference)
|
||||
|
||||
+7
-12
@@ -111,7 +111,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
||||
impl(callableReferenceAccess)
|
||||
|
||||
impl(componentCall) {
|
||||
default("calleeReference", "FirSimpleNamedReference(source, Name.identifier(\"component\$componentIndex\"), null)")
|
||||
default("calleeReference", "FirSimpleNamedReference(source, Name.identifier(\"component\$componentIndex\"))")
|
||||
useTypes(simpleNamedReferenceType, nameType)
|
||||
optInToInternals()
|
||||
}
|
||||
@@ -404,27 +404,22 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
||||
}
|
||||
}
|
||||
|
||||
impl(resolvedNamedReference) {
|
||||
defaultNull("candidateSymbol", withGetter = true)
|
||||
}
|
||||
impl(resolvedNamedReference)
|
||||
|
||||
impl(resolvedNamedReference, "FirPropertyFromParameterResolvedNamedReference") {
|
||||
defaultNull("candidateSymbol", withGetter = true)
|
||||
publicImplementation()
|
||||
}
|
||||
|
||||
impl(resolvedErrorReference) {
|
||||
defaultNull("candidateSymbol", withGetter = true)
|
||||
}
|
||||
impl(resolvedErrorReference)
|
||||
|
||||
impl(resolvedCallableReference) {
|
||||
defaultNull("candidateSymbol", withGetter = true)
|
||||
}
|
||||
impl(resolvedCallableReference)
|
||||
|
||||
impl(namedReference, "FirSimpleNamedReference") {
|
||||
kind = OpenClass
|
||||
publicImplementation()
|
||||
}
|
||||
|
||||
noImpl(namedReferenceWithCandidateBase)
|
||||
|
||||
impl(delegateFieldReference) {
|
||||
default("name") {
|
||||
value = "Name.identifier(\"\\\$delegate\")"
|
||||
|
||||
+4
-1
@@ -620,7 +620,10 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
|
||||
namedReference.configure {
|
||||
+name
|
||||
+field("candidateSymbol", firBasedSymbolType, "*", nullable = true)
|
||||
}
|
||||
|
||||
namedReferenceWithCandidateBase.configure {
|
||||
+field("candidateSymbol", firBasedSymbolType, "*")
|
||||
}
|
||||
|
||||
resolvedNamedReference.configure {
|
||||
|
||||
-1
@@ -67,7 +67,6 @@ class FirAssignmentPluginAssignAltererExtension(
|
||||
calleeReference = buildSimpleNamedReference {
|
||||
source = variableAssignment.source
|
||||
name = ASSIGN_METHOD
|
||||
candidateSymbol = null
|
||||
}
|
||||
origin = FirFunctionCallOrigin.Regular
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user