From 4bddb27ca34037696a132aef88ff90466795a2fc Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Thu, 15 Dec 2022 11:11:03 +0200 Subject: [PATCH] [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`) --- .../KtFirAnalysisSessionComponent.kt | 9 ++---- .../api/fir/components/KtFirCallResolver.kt | 3 +- .../fir/components/KtFirImportOptimizer.kt | 1 - .../fir/components/KtFirReferenceShortener.kt | 9 +----- .../calls/FirNamedReferenceWithCandidate.kt | 19 +++++++----- ...rCallCompletionResultsWriterTransformer.kt | 8 +---- .../resolve/transformers/TransformUtils.kt | 14 +++++++++ .../FirExpressionsResolveTransformer.kt | 9 ++---- .../jetbrains/kotlin/fir/resolve/dfa/util.kt | 4 +-- .../expressions/impl/FirComponentCallImpl.kt | 2 +- .../references/FirBackingFieldReference.kt | 2 -- .../references/FirDelegateFieldReference.kt | 2 -- .../fir/references/FirErrorNamedReference.kt | 2 -- .../fir/references/FirNamedReference.kt | 2 -- .../FirNamedReferenceWithCandidateBase.kt | 29 +++++++++++++++++++ .../FirResolvedCallableReference.kt | 1 - .../references/FirResolvedErrorReference.kt | 1 - .../references/FirResolvedNamedReference.kt | 1 - .../FirBackingFieldReferenceBuilder.kt | 3 -- .../FirDelegateFieldReferenceBuilder.kt | 3 -- .../builder/FirErrorNamedReferenceBuilder.kt | 3 -- .../builder/FirSimpleNamedReferenceBuilder.kt | 3 -- .../impl/FirBackingFieldReferenceImpl.kt | 2 -- .../impl/FirDelegateFieldReferenceImpl.kt | 2 -- .../impl/FirErrorNamedReferenceImpl.kt | 2 -- ...ertyFromParameterResolvedNamedReference.kt | 2 -- .../impl/FirResolvedCallableReferenceImpl.kt | 2 -- .../impl/FirResolvedErrorReferenceImpl.kt | 2 -- .../impl/FirResolvedNamedReferenceImpl.kt | 2 -- .../impl/FirSimpleNamedReference.kt | 4 +-- .../kotlin/fir/visitors/FirDefaultVisitor.kt | 3 ++ .../fir/visitors/FirDefaultVisitorVoid.kt | 3 ++ .../kotlin/fir/visitors/FirTransformer.kt | 9 ++++++ .../kotlin/fir/visitors/FirVisitor.kt | 3 ++ .../kotlin/fir/visitors/FirVisitorVoid.kt | 9 ++++++ .../kotlin/fir/renderer/FirRenderer.kt | 19 ++++++------ .../fir/tree/generator/FirTreeBuilder.kt | 1 + .../generator/ImplementationConfigurator.kt | 19 +++++------- .../fir/tree/generator/NodeConfigurator.kt | 5 +++- ...rAssignmentPluginAssignAltererExtension.kt | 1 - 40 files changed, 113 insertions(+), 107 deletions(-) create mode 100644 compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirNamedReferenceWithCandidateBase.kt diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirAnalysisSessionComponent.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirAnalysisSessionComponent.kt index 5eb8c17048a..69c4f71758a 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirAnalysisSessionComponent.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirAnalysisSessionComponent.kt @@ -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) } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt index 81826a17820..6a658fb9616 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt @@ -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 diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt index 1ca5f07a969..22835dbc4ef 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt @@ -267,7 +267,6 @@ private val FirPropertyAccessExpression.propertyReferenceName: Name? private val FirQualifiedAccessExpression.referencedCallableSymbol: FirCallableSymbol<*>? get() { return toResolvedCallableSymbol() - ?: (calleeReference as? FirNamedReference)?.candidateSymbol as? FirCallableSymbol<*> } /** diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt index 67c70d3efa8..94262b6fd9e 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt @@ -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 } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/FirNamedReferenceWithCandidate.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/FirNamedReferenceWithCandidate.kt index f9425f9eac1..5afb044adf8 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/FirNamedReferenceWithCandidate.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/FirNamedReferenceWithCandidate.kt @@ -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 acceptChildren(visitor: FirVisitor, data: D) {} + + override fun transformChildren(transformer: FirTransformer, 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 acceptChildren(visitor: FirVisitor, data: D) {} override fun transformChildren(transformer: FirTransformer, data: D): FirPropertyWithExplicitBackingFieldResolvedNamedReference { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt index 6c33480eed8..146d4ffafb0 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt @@ -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) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/TransformUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/TransformUtils.kt index c36b2c0d74b..f9904d9fc39 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/TransformUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/TransformUtils.kt @@ -54,6 +54,13 @@ internal object StoreNameReference : FirDefaultTransformer() 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() { return data } + override fun transformNamedReferenceWithCandidateSymbol( + namedReferenceWithCandidateSymbol: FirNamedReferenceWithCandidateSymbol, + data: FirNamedReference + ): FirReference { + return data + } + override fun transformResolvedNamedReference( resolvedNamedReference: FirResolvedNamedReference, data: FirNamedReference diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index 54eb0efafb5..e417ca6d004 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -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 } diff --git a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/util.kt b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/util.kt index 035de090ad6..1c53e990744 100644 --- a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/util.kt +++ b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/util.kt @@ -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 } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt index 26f2c933f39..2e6cdac6b53 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt @@ -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 acceptChildren(visitor: FirVisitor, data: D) { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirBackingFieldReference.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirBackingFieldReference.kt index af4cfce0eab..23526f9715c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirBackingFieldReference.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirBackingFieldReference.kt @@ -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 accept(visitor: FirVisitor, data: D): R = visitor.visitBackingFieldReference(this, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirDelegateFieldReference.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirDelegateFieldReference.kt index 23daff4f450..10cec24d19d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirDelegateFieldReference.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirDelegateFieldReference.kt @@ -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 accept(visitor: FirVisitor, data: D): R = visitor.visitDelegateFieldReference(this, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirErrorNamedReference.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirErrorNamedReference.kt index ff43bbc0971..4d2eda47958 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirErrorNamedReference.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirErrorNamedReference.kt @@ -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 accept(visitor: FirVisitor, data: D): R = visitor.visitErrorNamedReference(this, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirNamedReference.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirNamedReference.kt index de56ce1a9e3..83aea5ac43e 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirNamedReference.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirNamedReference.kt @@ -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 accept(visitor: FirVisitor, data: D): R = visitor.visitNamedReference(this, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirNamedReferenceWithCandidateBase.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirNamedReferenceWithCandidateBase.kt new file mode 100644 index 00000000000..ea32820412a --- /dev/null +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirNamedReferenceWithCandidateBase.kt @@ -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 accept(visitor: FirVisitor, data: D): R = visitor.visitNamedReferenceWithCandidateBase(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: FirTransformer, data: D): E = + transformer.transformNamedReferenceWithCandidateBase(this, data) as E +} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirResolvedCallableReference.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirResolvedCallableReference.kt index 65a39245faa..1b5030a912b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirResolvedCallableReference.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirResolvedCallableReference.kt @@ -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 abstract val mappedArguments: CallableReferenceMappedArguments diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirResolvedErrorReference.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirResolvedErrorReference.kt index 0d41c9c97c0..e07bebe2170 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirResolvedErrorReference.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirResolvedErrorReference.kt @@ -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 diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirResolvedNamedReference.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirResolvedNamedReference.kt index c6172e8b20f..7a2f0bf9757 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirResolvedNamedReference.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/FirResolvedNamedReference.kt @@ -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 accept(visitor: FirVisitor, data: D): R = visitor.visitResolvedNamedReference(this, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirBackingFieldReferenceBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirBackingFieldReferenceBuilder.kt index 454a95b9760..2996da0a764 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirBackingFieldReferenceBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirBackingFieldReferenceBuilder.kt @@ -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, ) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirDelegateFieldReferenceBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirDelegateFieldReferenceBuilder.kt index 98c1f358bef..a5c6359dd68 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirDelegateFieldReferenceBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirDelegateFieldReferenceBuilder.kt @@ -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, ) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirErrorNamedReferenceBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirErrorNamedReferenceBuilder.kt index b0b9237f70b..03ae6dd6f1f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirErrorNamedReferenceBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirErrorNamedReferenceBuilder.kt @@ -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, ) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirSimpleNamedReferenceBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirSimpleNamedReferenceBuilder.kt index 4c1ec85b60f..d2d5e09c171 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirSimpleNamedReferenceBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/builder/FirSimpleNamedReferenceBuilder.kt @@ -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, ) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirBackingFieldReferenceImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirBackingFieldReferenceImpl.kt index 728da7d29e5..428f0996dfb 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirBackingFieldReferenceImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirBackingFieldReferenceImpl.kt @@ -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") diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirDelegateFieldReferenceImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirDelegateFieldReferenceImpl.kt index fa47eef761b..0c7631b8180 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirDelegateFieldReferenceImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirDelegateFieldReferenceImpl.kt @@ -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") diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirErrorNamedReferenceImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirErrorNamedReferenceImpl.kt index af63fc0bba0..34d59d81bac 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirErrorNamedReferenceImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirErrorNamedReferenceImpl.kt @@ -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}>") diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirPropertyFromParameterResolvedNamedReference.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirPropertyFromParameterResolvedNamedReference.kt index 5dd704d35f6..332f4cf1f69 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirPropertyFromParameterResolvedNamedReference.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirPropertyFromParameterResolvedNamedReference.kt @@ -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 acceptChildren(visitor: FirVisitor, data: D) {} override fun transformChildren(transformer: FirTransformer, data: D): FirPropertyFromParameterResolvedNamedReference { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirResolvedCallableReferenceImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirResolvedCallableReferenceImpl.kt index 64084c0e967..15eac827a41 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirResolvedCallableReferenceImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirResolvedCallableReferenceImpl.kt @@ -27,8 +27,6 @@ internal class FirResolvedCallableReferenceImpl( override val inferredTypeArguments: MutableList, override val mappedArguments: CallableReferenceMappedArguments, ) : FirResolvedCallableReference() { - override val candidateSymbol: FirBasedSymbol<*>? get() = null - override fun acceptChildren(visitor: FirVisitor, data: D) {} override fun transformChildren(transformer: FirTransformer, data: D): FirResolvedCallableReferenceImpl { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirResolvedErrorReferenceImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirResolvedErrorReferenceImpl.kt index 83ffdd7b398..6f372dfbd81 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirResolvedErrorReferenceImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirResolvedErrorReferenceImpl.kt @@ -25,8 +25,6 @@ internal class FirResolvedErrorReferenceImpl( override val resolvedSymbol: FirBasedSymbol<*>, override val diagnostic: ConeDiagnostic, ) : FirResolvedErrorReference() { - override val candidateSymbol: FirBasedSymbol<*>? get() = null - override fun acceptChildren(visitor: FirVisitor, data: D) {} override fun transformChildren(transformer: FirTransformer, data: D): FirResolvedErrorReferenceImpl { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirResolvedNamedReferenceImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirResolvedNamedReferenceImpl.kt index 2e4b6b53567..820bf887a7d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirResolvedNamedReferenceImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirResolvedNamedReferenceImpl.kt @@ -23,8 +23,6 @@ internal class FirResolvedNamedReferenceImpl( override val name: Name, override val resolvedSymbol: FirBasedSymbol<*>, ) : FirResolvedNamedReference() { - override val candidateSymbol: FirBasedSymbol<*>? get() = null - override fun acceptChildren(visitor: FirVisitor, data: D) {} override fun transformChildren(transformer: FirTransformer, data: D): FirResolvedNamedReferenceImpl { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirSimpleNamedReference.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirSimpleNamedReference.kt index f2c82780b92..3d78055e2f6 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirSimpleNamedReference.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/references/impl/FirSimpleNamedReference.kt @@ -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 acceptChildren(visitor: FirVisitor, data: D) {} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt index 86196bc8104..5701ef42347 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt @@ -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 : FirVisitor() { 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) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt index b5c57e62acd..ed42152af8e 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt @@ -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) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt index 02a99f4ffcf..978d15473f4 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt @@ -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 : FirVisitor() { 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 : FirVisitor() { 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) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt index f8fcfe814c4..2405f45fa78 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt @@ -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 { 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) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt index 079b9004d73..866eaa4fa02 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt @@ -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() { visitElement(namedReference) } + open fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase) { + visitElement(namedReferenceWithCandidateBase) + } + open fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference) { visitElement(errorNamedReference) } @@ -1200,6 +1205,10 @@ abstract class FirVisitorVoid : FirVisitor() { visitNamedReference(namedReference) } + final override fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase, data: Nothing?) { + visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase) + } + final override fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference, data: Nothing?) { visitErrorNamedReference(errorNamedReference) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt index 5d2ed27135b..59bdd19d0b1 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt @@ -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) } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt index c8d1ea956d7..4ec6f73db5c 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt @@ -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) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt index 0a9e609b40c..2ce4ce1bdde 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt @@ -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\")" diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index 409e0c77668..298df39bea1 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -620,7 +620,10 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild namedReference.configure { +name - +field("candidateSymbol", firBasedSymbolType, "*", nullable = true) + } + + namedReferenceWithCandidateBase.configure { + +field("candidateSymbol", firBasedSymbolType, "*") } resolvedNamedReference.configure { diff --git a/plugins/assign-plugin/assign-plugin.k2/src/org/jetbrains/kotlin/assignment/plugin/k2/FirAssignmentPluginAssignAltererExtension.kt b/plugins/assign-plugin/assign-plugin.k2/src/org/jetbrains/kotlin/assignment/plugin/k2/FirAssignmentPluginAssignAltererExtension.kt index 1d4a4c2c0cd..1f6d17c71e9 100644 --- a/plugins/assign-plugin/assign-plugin.k2/src/org/jetbrains/kotlin/assignment/plugin/k2/FirAssignmentPluginAssignAltererExtension.kt +++ b/plugins/assign-plugin/assign-plugin.k2/src/org/jetbrains/kotlin/assignment/plugin/k2/FirAssignmentPluginAssignAltererExtension.kt @@ -67,7 +67,6 @@ class FirAssignmentPluginAssignAltererExtension( calleeReference = buildSimpleNamedReference { source = variableAssignment.source name = ASSIGN_METHOD - candidateSymbol = null } origin = FirFunctionCallOrigin.Regular }