FIR IDE: implement assignment statement references
This commit is contained in:
-1
@@ -256,7 +256,6 @@ object UnusedChecker : FirControlFlowChecker() {
|
||||
vararg qualifiedAccesses: FirQualifiedAccess,
|
||||
): PathAwareVariableStatusInfo {
|
||||
fun retrieveSymbol(qualifiedAccess: FirQualifiedAccess): FirPropertySymbol? {
|
||||
if (qualifiedAccess.source?.kind is FirFakeSourceElementKind) return null
|
||||
val reference = qualifiedAccess.calleeReference as? FirResolvedNamedReference ?: return null
|
||||
val symbol = reference.resolvedSymbol as? FirPropertySymbol ?: return null
|
||||
return if (symbol !in localProperties) null else symbol
|
||||
|
||||
+3
-2
@@ -873,8 +873,9 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
|
||||
return buildAssignmentOperatorStatement {
|
||||
source = baseSource
|
||||
this.operation = operation
|
||||
// TODO: take good psi
|
||||
leftArgument = this@generateAssignment?.convert() ?: buildErrorExpression {
|
||||
leftArgument = withDefaultSourceElementKind(FirFakeSourceElementKind.DesugaredCompoundAssignment) {
|
||||
this@generateAssignment?.convert()
|
||||
} ?: buildErrorExpression {
|
||||
source = null
|
||||
diagnostic = ConeSimpleDiagnostic(
|
||||
"Unsupported left value of assignment: ${baseSource?.psi?.text}", DiagnosticKind.ExpressionRequired
|
||||
|
||||
+1
-1
@@ -353,7 +353,7 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform
|
||||
explicitReceiver = leftArgument
|
||||
argumentList = buildUnaryArgumentList(rightArgument)
|
||||
calleeReference = buildSimpleNamedReference {
|
||||
source = assignmentOperatorStatement.source
|
||||
source = assignmentOperatorStatement.source?.fakeElement(FirFakeSourceElementKind.DesugaredCompoundAssignment)
|
||||
this.name = name
|
||||
candidateSymbol = null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user