diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ScriptGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ScriptGenerator.kt index b85f5752dab..8459df42ad1 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ScriptGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ScriptGenerator.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.descriptors.ParameterDescriptor import org.jetbrains.kotlin.descriptors.ScriptDescriptor import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET -import org.jetbrains.kotlin.ir.assertCast import org.jetbrains.kotlin.ir.builders.declarations.IrFunctionBuilder import org.jetbrains.kotlin.ir.declarations.DescriptorMetadataSource import org.jetbrains.kotlin.ir.declarations.IrDeclaration @@ -197,7 +196,7 @@ class ScriptGenerator(declarationGenerator: DeclarationGenerator) : DeclarationG context.irBuiltIns.unitType, IrStatementOrigin.DESTRUCTURING_DECLARATION ) val ktInitializer = d.initializer!! - val initializerExpr = ktInitializer.deparenthesize().accept(statementGenerator, null).assertCast() + val initializerExpr = ktInitializer.deparenthesize().accept(statementGenerator, null) as IrExpression val containerValue = statementGenerator.scope.createTemporaryVariableInBlock(context, initializerExpr, irBlock, "container") diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElement.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElement.kt index 136f29f1c44..397928b29dd 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElement.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElement.kt @@ -1,43 +1,24 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2021 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.ir import org.jetbrains.kotlin.ir.visitors.IrElementTransformer -import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid import org.jetbrains.kotlin.ir.visitors.IrElementVisitor interface IrElement { val startOffset: Int + val endOffset: Int fun accept(visitor: IrElementVisitor, data: D): R - fun acceptChildren(visitor: IrElementVisitor, data: D): Unit - fun transform(transformer: IrElementTransformer, data: D): IrElement = accept(transformer, data) - fun transformChildren(transformer: IrElementTransformer, data: D): Unit + fun acceptChildren(visitor: IrElementVisitor, data: D) + + fun transformChildren(transformer: IrElementTransformer, data: D) } - -interface IrStatement : IrElement - -fun IrStatement.transformStatement(transformer: IrElementTransformerVoid): IrStatement = - transform(transformer, null) as IrStatement - -inline fun IrElement.assertCast(): T = - if (this is T) this else throw AssertionError("Expected ${T::class.simpleName}: $this") diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElements.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElements.kt new file mode 100644 index 00000000000..5e1f7d354e2 --- /dev/null +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElements.kt @@ -0,0 +1,11 @@ +/* + * 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.ir + +import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid + +fun IrStatement.transformStatement(transformer: IrElementTransformerVoid): IrStatement = + transform(transformer, null) as IrStatement diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrStatement.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrStatement.kt new file mode 100644 index 00000000000..dfb83cf93ea --- /dev/null +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrStatement.kt @@ -0,0 +1,8 @@ +/* + * Copyright 2010-2021 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.ir + +interface IrStatement : IrElement