[FIR] FirDataClassCopyUsageWillBecomeInaccessibleChecker: get containingClass in unified way
In the previous commit, I moved `copyFunction` unwrapping inside
`isDataClassCopy`
I have no idea whether there is a difference between:
firCallableSymbol.unwrapSubstitutionOverrides().dispatchReceiverType?.toRegularClassSymbol(context.session)
and
firCallableSymbol.dispatchReceiverType?.toRegularClassSymbol(context.session)
But I better use a unified way to obtain containing Class.
`containingClassLookupTag` seems to be more popular
diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirDataClassCopyUsageWillBecomeInaccessibleChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirDataClassCopyUsageWillBecomeInaccessibleChecker.kt
index 749a3a9..36bd9bd 100644
--- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirDataClassCopyUsageWillBecomeInaccessibleChecker.kt
+++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirDataClassCopyUsageWillBecomeInaccessibleChecker.kt
@@ -13,18 +13,20 @@
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.primaryConstructorSymbol
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
+import org.jetbrains.kotlin.fir.containingClassLookupTag
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.utils.isData
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
import org.jetbrains.kotlin.fir.references.symbol
+import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
+import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.classId
-import org.jetbrains.kotlin.fir.types.toRegularClassSymbol
import org.jetbrains.kotlin.fir.unwrapSubstitutionOverrides
import org.jetbrains.kotlin.fir.visibilityChecker
import org.jetbrains.kotlin.resolve.DataClassResolver
@@ -33,7 +35,7 @@
override fun check(expression: FirQualifiedAccessExpression, context: CheckerContext, reporter: DiagnosticReporter) {
if (expression !is FirFunctionCall && expression !is FirCallableReferenceAccess) return
val copyFunction = expression.calleeReference.symbol as? FirCallableSymbol ?: return
- val dataClass = copyFunction.dispatchReceiverType?.toRegularClassSymbol(context.session) ?: return
+ val dataClass = copyFunction.containingClassLookupTag()?.toSymbol(context.session) as? FirRegularClassSymbol ?: return
if (copyFunction.isDataClassCopy(dataClass, context.session)) {
val dataClassConstructor = dataClass.primaryConstructorSymbol(context.session) ?: return