Skip to content

Commit 1aabffe

Browse files
mcpiromanSpace Team
authored andcommitted
[IR] Replace Ir(Expression/Declaration)Checker with IrElementChecker
There is no much difference between expressions and declarations. The `elementClass` parameter will be used in a later commit. Checker classes are updated in the next commit. KT-76601
1 parent 271ae83 commit 1aabffe

File tree

4 files changed

+56
-102
lines changed

4 files changed

+56
-102
lines changed

compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrValidator.kt

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@
55

66
package org.jetbrains.kotlin.backend.common
77

8-
import org.jetbrains.kotlin.backend.common.checkers.IrValidationError
9-
import org.jetbrains.kotlin.backend.common.checkers.TreeConsistencyError
10-
import org.jetbrains.kotlin.backend.common.checkers.checkTreeConsistency
8+
import org.jetbrains.kotlin.backend.common.checkers.*
119
import org.jetbrains.kotlin.backend.common.checkers.context.*
1210
import org.jetbrains.kotlin.backend.common.checkers.declaration.*
1311
import org.jetbrains.kotlin.backend.common.checkers.expression.*
1412
import org.jetbrains.kotlin.backend.common.checkers.symbol.IrSymbolChecker
1513
import org.jetbrains.kotlin.backend.common.checkers.symbol.IrVisibilityChecker
14+
import org.jetbrains.kotlin.backend.common.checkers.symbol.check
1615
import org.jetbrains.kotlin.backend.common.checkers.type.IrTypeChecker
1716
import org.jetbrains.kotlin.backend.common.checkers.type.IrTypeParameterScopeChecker
17+
import org.jetbrains.kotlin.backend.common.checkers.type.check
1818
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
1919
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
2020
import org.jetbrains.kotlin.config.IrVerificationMode
@@ -94,40 +94,40 @@ private class IrFileValidator(
9494
) : IrTreeSymbolsVisitor() {
9595
private val contextUpdaters: MutableList<ContextUpdater> = mutableListOf(ParentChainUpdater)
9696

97-
private val fieldCheckers: MutableList<IrFieldChecker> = mutableListOf()
98-
private val fieldAccessExpressionCheckers: MutableList<IrFieldAccessChecker> = mutableListOf()
97+
private val fieldCheckers: MutableList<IrElementChecker<IrField>> = mutableListOf()
98+
private val fieldAccessExpressionCheckers: MutableList<IrElementChecker<IrFieldAccessExpression>> = mutableListOf()
9999
private val typeCheckers: MutableList<IrTypeChecker> = mutableListOf()
100100
private val symbolCheckers: MutableList<IrSymbolChecker> = mutableListOf()
101-
private val declarationReferenceCheckers: MutableList<IrDeclarationReferenceChecker> = mutableListOf()
102-
private val varargCheckers: MutableList<IrVarargChecker> = mutableListOf()
103-
private val valueParameterCheckers: MutableList<IrValueParameterChecker> = mutableListOf()
104-
private val valueAccessCheckers: MutableList<IrValueAccessChecker> = mutableListOf()
105-
private val functionAccessCheckers: MutableList<IrFunctionAccessChecker> = mutableListOf(IrNoInlineUseSitesChecker)
106-
private val functionReferenceCheckers: MutableList<IrFunctionReferenceChecker> = mutableListOf()
107-
private val constCheckers: MutableList<IrConstChecker> = mutableListOf()
108-
private val stringConcatenationCheckers: MutableList<IrStringConcatenationChecker> = mutableListOf()
109-
private val getObjectValueCheckers: MutableList<IrGetObjectValueChecker> = mutableListOf()
110-
private val getValueCheckers: MutableList<IrGetValueChecker> = mutableListOf()
111-
private val setValueCheckers: MutableList<IrSetValueChecker> = mutableListOf(IrSetValueAssignabilityChecker)
112-
private val getFieldCheckers: MutableList<IrGetFieldChecker> = mutableListOf()
113-
private val setFieldCheckers: MutableList<IrSetFieldChecker> = mutableListOf()
114-
private val delegatingConstructorCallCheckers: MutableList<IrDelegatingConstructorCallChecker> = mutableListOf()
115-
private val instanceInitializerCallCheckers: MutableList<IrInstanceInitializerCallChecker> = mutableListOf()
116-
private val loopCheckers: MutableList<IrLoopChecker> = mutableListOf()
117-
private val breakContinueCheckers: MutableList<IrBreakContinueChecker> = mutableListOf()
118-
private val returnCheckers: MutableList<IrReturnChecker> = mutableListOf()
119-
private val throwCheckers: MutableList<IrThrowChecker> = mutableListOf()
120-
private val functionCheckers: MutableList<IrFunctionChecker> = mutableListOf(
101+
private val declarationReferenceCheckers: MutableList<IrElementChecker<IrDeclarationReference>> = mutableListOf()
102+
private val varargCheckers: MutableList<IrElementChecker<IrVararg>> = mutableListOf()
103+
private val valueParameterCheckers: MutableList<IrElementChecker<IrValueParameter>> = mutableListOf()
104+
private val valueAccessCheckers: MutableList<IrElementChecker<IrValueAccessExpression>> = mutableListOf()
105+
private val functionAccessCheckers: MutableList<IrElementChecker<IrFunctionAccessExpression>> = mutableListOf(IrNoInlineUseSitesChecker)
106+
private val functionReferenceCheckers: MutableList<IrElementChecker<IrFunctionReference>> = mutableListOf()
107+
private val constCheckers: MutableList<IrElementChecker<IrConst>> = mutableListOf()
108+
private val stringConcatenationCheckers: MutableList<IrElementChecker<IrStringConcatenation>> = mutableListOf()
109+
private val getObjectValueCheckers: MutableList<IrElementChecker<IrGetObjectValue>> = mutableListOf()
110+
private val getValueCheckers: MutableList<IrElementChecker<IrGetValue>> = mutableListOf()
111+
private val setValueCheckers: MutableList<IrElementChecker<IrSetValue>> = mutableListOf(IrSetValueAssignabilityChecker)
112+
private val getFieldCheckers: MutableList<IrElementChecker<IrGetField>> = mutableListOf()
113+
private val setFieldCheckers: MutableList<IrElementChecker<IrSetField>> = mutableListOf()
114+
private val delegatingConstructorCallCheckers: MutableList<IrElementChecker<IrDelegatingConstructorCall>> = mutableListOf()
115+
private val instanceInitializerCallCheckers: MutableList<IrElementChecker<IrInstanceInitializerCall>> = mutableListOf()
116+
private val loopCheckers: MutableList<IrElementChecker<IrLoop>> = mutableListOf()
117+
private val breakContinueCheckers: MutableList<IrElementChecker<IrBreakContinue>> = mutableListOf()
118+
private val returnCheckers: MutableList<IrElementChecker<IrReturn>> = mutableListOf()
119+
private val throwCheckers: MutableList<IrElementChecker<IrThrow>> = mutableListOf()
120+
private val functionCheckers: MutableList<IrElementChecker<IrFunction>> = mutableListOf(
121121
IrFunctionDispatchReceiverChecker, IrFunctionParametersChecker, IrConstructorReceiverChecker, IrFunctionPropertiesChecker
122122
)
123-
private val declarationBaseCheckers: MutableList<IrDeclarationChecker<IrDeclaration>> = mutableListOf()
124-
private val propertyReferenceCheckers: MutableList<IrPropertyReferenceChecker> = mutableListOf()
125-
private val localDelegatedPropertyReferenceCheckers: MutableList<IrLocalDelegatedPropertyReferenceChecker> = mutableListOf()
126-
private val expressionCheckers: MutableList<IrExpressionChecker<IrExpression>> = mutableListOf()
127-
private val typeOperatorCheckers: MutableList<IrTypeOperatorChecker> = mutableListOf(IrTypeOperatorTypeOperandChecker)
128-
private val propertyCheckers: MutableList<IrPropertyChecker> = mutableListOf(IrPropertyAccessorsChecker)
129-
130-
private val callCheckers: MutableList<IrCallChecker> = mutableListOf()
123+
private val declarationBaseCheckers: MutableList<IrElementChecker<IrDeclaration>> = mutableListOf()
124+
private val propertyReferenceCheckers: MutableList<IrElementChecker<IrPropertyReference>> = mutableListOf()
125+
private val localDelegatedPropertyReferenceCheckers: MutableList<IrElementChecker<IrLocalDelegatedPropertyReference>> = mutableListOf()
126+
private val expressionCheckers: MutableList<IrElementChecker<IrExpression>> = mutableListOf()
127+
private val typeOperatorCheckers: MutableList<IrElementChecker<IrTypeOperatorCall>> = mutableListOf(IrTypeOperatorTypeOperandChecker)
128+
private val propertyCheckers: MutableList<IrElementChecker<IrProperty>> = mutableListOf(IrPropertyAccessorsChecker)
129+
130+
private val callCheckers: MutableList<IrElementChecker<IrCall>> = mutableListOf()
131131

132132
init {
133133
if (config.checkValueScopes) {
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
3+
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
4+
*/
5+
6+
package org.jetbrains.kotlin.backend.common.checkers
7+
8+
import org.jetbrains.kotlin.backend.common.checkers.context.CheckerContext
9+
import org.jetbrains.kotlin.ir.IrElement
10+
import org.jetbrains.kotlin.ir.expressions.IrExpression
11+
import kotlin.reflect.KClass
12+
13+
abstract class IrElementChecker<in E : IrElement>(
14+
elementClass: KClass<in E>,
15+
) {
16+
internal abstract fun check(element: E, context: CheckerContext)
17+
}
18+
19+
internal fun <E : IrElement> List<IrElementChecker<E>>.check(element: E, context: CheckerContext) {
20+
for (checker in this) {
21+
checker.check(element, context)
22+
}
23+
}

compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/checkers/declaration/IrDeclarationChecker.kt

Lines changed: 0 additions & 24 deletions
This file was deleted.

compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/checkers/expression/IrExpressionChecker.kt

Lines changed: 0 additions & 45 deletions
This file was deleted.

0 commit comments

Comments
 (0)