From 2a0e7eb41281617431e978992b7d4d63284c767f Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Wed, 23 May 2018 15:54:25 +0300 Subject: [PATCH] IR: split IrUtils.kt into common and backend-specific part --- .../kotlin/ir/util/IrBackendUtils.kt | 33 +++++++++++++++++ compiler/ir/ir.tree/build.gradle.kts | 1 + .../org/jetbrains/kotlin/ir/util/IrUtils.kt | 35 ++++--------------- 3 files changed, 40 insertions(+), 29 deletions(-) create mode 100644 compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrBackendUtils.kt rename compiler/ir/{backend.common => ir.tree}/src/org/jetbrains/kotlin/ir/util/IrUtils.kt (87%) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrBackendUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrBackendUtils.kt new file mode 100644 index 00000000000..7c07ea88404 --- /dev/null +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrBackendUtils.kt @@ -0,0 +1,33 @@ +/* + * Copyright 2010-2017 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. + */ + +package org.jetbrains.kotlin.ir.util + +import org.jetbrains.kotlin.backend.common.atMostOne +import org.jetbrains.kotlin.ir.declarations.IrProperty +import org.jetbrains.kotlin.ir.symbols.IrClassSymbol +import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol +import org.jetbrains.kotlin.name.Name + +private fun IrClassSymbol.getPropertyDeclaration(name: String) = + this.owner.declarations.filterIsInstance() + .atMostOne { it.descriptor.name == Name.identifier(name) } + +fun IrClassSymbol.getPropertyGetter(name: String): IrFunctionSymbol? = + this.getPropertyDeclaration(name)?.getter?.symbol + +fun IrClassSymbol.getPropertySetter(name: String): IrFunctionSymbol? = + this.getPropertyDeclaration(name)?.setter?.symbol diff --git a/compiler/ir/ir.tree/build.gradle.kts b/compiler/ir/ir.tree/build.gradle.kts index 6c09fbf9b90..695a4f7df6e 100644 --- a/compiler/ir/ir.tree/build.gradle.kts +++ b/compiler/ir/ir.tree/build.gradle.kts @@ -9,6 +9,7 @@ jvmTarget = "1.6" dependencies { compile(project(":compiler:util")) compile(project(":compiler:frontend")) + compileOnly(intellijCoreDep()) { includeJars("intellij-core") } } sourceSets { diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt similarity index 87% rename from compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrUtils.kt rename to compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt index 15cd7087a28..d9dd4e2e66c 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt @@ -1,22 +1,10 @@ /* - * Copyright 2010-2017 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-2018 JetBrains s.r.o. 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.util -import org.jetbrains.kotlin.backend.common.atMostOne import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET @@ -26,9 +14,11 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrPropertyImpl import org.jetbrains.kotlin.ir.declarations.impl.IrTypeParameterImpl import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl import org.jetbrains.kotlin.ir.expressions.* -import org.jetbrains.kotlin.ir.symbols.* +import org.jetbrains.kotlin.ir.symbols.IrClassSymbol +import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol +import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol +import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe @@ -216,22 +206,9 @@ val IrClassSymbol.functions: Sequence val IrClassSymbol.constructors: Sequence get() = this.owner.declarations.asSequence().filterIsInstance().map { it.symbol } -private fun IrClassSymbol.getPropertyDeclaration(name: String) = - this.owner.declarations.filterIsInstance() - .atMostOne { it.descriptor.name == Name.identifier(name) } - -fun IrClassSymbol.getPropertyGetter(name: String): IrFunctionSymbol? = - this.getPropertyDeclaration(name)?.getter?.symbol - -fun IrClassSymbol.getPropertySetter(name: String): IrFunctionSymbol? = - this.getPropertyDeclaration(name)?.setter?.symbol - val IrFunction.explicitParameters: List get() = (listOfNotNull(dispatchReceiverParameter, extensionReceiverParameter) + valueParameters).map { it.symbol } -val IrValueParameter.type: KotlinType - get() = this.descriptor.type - val IrClass.defaultType: KotlinType get() = this.descriptor.defaultType