PSI2IR KT-47450 prevent SOE when generating IR for deep expressions

This commit is contained in:
Dmitry Petrov
2021-06-25 14:42:11 +03:00
committed by TeamCityServer
parent c4d9945782
commit 560c269e05
14 changed files with 868 additions and 59 deletions
@@ -42,6 +42,10 @@ class IrVerifier(private val assertions: Assertions) : IrElementVisitorVoid {
require(elements.add(element)) { "Non-unique element: ${element.render()}" }
element.acceptChildrenVoid(this)
}
override fun visitCall(expression: IrCall) {
visitElement(expression)
}
}
fun verifyWithAssert(irFile: IrFile) {
@@ -54,6 +58,10 @@ class IrVerifier(private val assertions: Assertions) : IrElementVisitorVoid {
element.acceptChildrenVoid(this)
}
override fun visitCall(expression: IrCall) {
expression.acceptChildrenVoid(this)
}
@OptIn(ObsoleteDescriptorBasedAPI::class)
override fun visitDeclaration(declaration: IrDeclarationBase) {
declaration.symbol.checkBinding("decl", declaration)