From 81ce1da3527e8d64be5fd8101e5c9dd76a1ac5fd Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 22 Apr 2021 20:46:30 +0200 Subject: [PATCH] Move PsiSourceElement to psi --- .../resolve/source/KotlinSourceElement.kt | 3 --- .../kotlin/resolve/source/PsiSourceElement.kt | 17 ++++------------- .../js/translate/context/StaticContext.java | 4 ++-- .../declaration/JsDataClassGenerator.java | 4 ++-- .../JsEqualsHashcodeToStringGenerator.java | 13 ++++++++----- .../translate/initializer/InitializerUtils.java | 10 ++++------ .../translate/utils/FunctionBodyTranslator.java | 4 ++-- .../kotlin/js/translate/utils/JsAstUtils.java | 4 ++-- .../js/translate/utils/TranslationUtils.java | 3 ++- 9 files changed, 26 insertions(+), 36 deletions(-) rename compiler/{frontend => psi}/src/org/jetbrains/kotlin/resolve/source/PsiSourceElement.kt (56%) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/source/KotlinSourceElement.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/source/KotlinSourceElement.kt index cd3f9571ddc..e9bb830e58b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/source/KotlinSourceElement.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/source/KotlinSourceElement.kt @@ -16,7 +16,6 @@ package org.jetbrains.kotlin.resolve.source -import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.SourceElement import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtPureElement @@ -24,5 +23,3 @@ import org.jetbrains.kotlin.psi.KtPureElement class KotlinSourceElement(override val psi: KtElement) : PsiSourceElement fun KtPureElement?.toSourceElement(): SourceElement = if (this == null) SourceElement.NO_SOURCE else KotlinSourceElement(psiOrParent) - -fun SourceElement.getPsi(): PsiElement? = (this as? PsiSourceElement)?.psi diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/source/PsiSourceElement.kt b/compiler/psi/src/org/jetbrains/kotlin/resolve/source/PsiSourceElement.kt similarity index 56% rename from compiler/frontend/src/org/jetbrains/kotlin/resolve/source/PsiSourceElement.kt rename to compiler/psi/src/org/jetbrains/kotlin/resolve/source/PsiSourceElement.kt index c75bb6ec010..8b37058f0f9 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/source/PsiSourceElement.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/resolve/source/PsiSourceElement.kt @@ -1,17 +1,6 @@ /* - * Copyright 2010-2015 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.resolve.source @@ -36,3 +25,5 @@ class PsiSourceFile(val psiFile: PsiFile) : SourceFile { override fun getName(): String? = psiFile.virtualFile?.name } + +fun SourceElement.getPsi(): PsiElement? = (this as? PsiSourceElement)?.psi diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java index 4f6d47d3edc..ec5eda34840 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java @@ -50,7 +50,7 @@ import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.calls.tasks.DynamicCallsKt; import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt; -import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt; +import org.jetbrains.kotlin.resolve.source.PsiSourceElementKt; import org.jetbrains.kotlin.serialization.js.ModuleKind; import org.jetbrains.kotlin.types.KotlinType; import org.jetbrains.kotlin.types.typeUtil.TypeUtilsKt; @@ -676,7 +676,7 @@ public final class StaticContext { JsFunction correspondingFunction = JsAstUtils.createFunctionWithEmptyBody(fragment.getScope()); assert (!scopeToFunction.containsKey(correspondingFunction.getScope())) : "Scope to function value overridden for " + descriptor; scopeToFunction.put(correspondingFunction.getScope(), correspondingFunction); - correspondingFunction.setSource(KotlinSourceElementKt.getPsi(((CallableDescriptor) descriptor).getSource())); + correspondingFunction.setSource(PsiSourceElementKt.getPsi(((CallableDescriptor) descriptor).getSource())); return correspondingFunction.getScope(); }; Rule scopeForPackage = descriptor -> { diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/JsDataClassGenerator.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/JsDataClassGenerator.java index f964abcf8dc..88270f6d5f8 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/JsDataClassGenerator.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/JsDataClassGenerator.java @@ -27,7 +27,7 @@ import org.jetbrains.kotlin.psi.KtParameter; import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.BindingContextUtils; import org.jetbrains.kotlin.resolve.calls.components.ArgumentsUtilsKt; -import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt; +import org.jetbrains.kotlin.resolve.source.PsiSourceElementKt; import java.util.ArrayList; import java.util.List; @@ -46,7 +46,7 @@ class JsDataClassGenerator extends JsEqualsHashcodeToStringGenerator { JsFunction functionObject = generateJsMethod(function); JsExpression returnExpression = JsAstUtils.pureFqn(context.getNameForDescriptor(propertyDescriptor), new JsThisRef()); JsReturn returnStatement = new JsReturn(returnExpression); - returnStatement.setSource(KotlinSourceElementKt.getPsi(parameter.getSource())); + returnStatement.setSource(PsiSourceElementKt.getPsi(parameter.getSource())); functionObject.getBody().getStatements().add(returnStatement); } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/JsEqualsHashcodeToStringGenerator.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/JsEqualsHashcodeToStringGenerator.java index 573d49521f6..22ada7de42d 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/JsEqualsHashcodeToStringGenerator.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/JsEqualsHashcodeToStringGenerator.java @@ -8,14 +8,17 @@ package org.jetbrains.kotlin.js.translate.declaration; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.backend.common.DataClassMethodGenerator; -import org.jetbrains.kotlin.descriptors.*; +import org.jetbrains.kotlin.descriptors.ClassDescriptor; +import org.jetbrains.kotlin.descriptors.FunctionDescriptor; +import org.jetbrains.kotlin.descriptors.PropertyDescriptor; +import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor; import org.jetbrains.kotlin.js.backend.ast.*; import org.jetbrains.kotlin.js.translate.context.TranslationContext; import org.jetbrains.kotlin.js.translate.utils.JsAstUtils; import org.jetbrains.kotlin.js.translate.utils.UtilsKt; import org.jetbrains.kotlin.psi.KtClassOrObject; import org.jetbrains.kotlin.psi.KtParameter; -import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt; +import org.jetbrains.kotlin.resolve.source.PsiSourceElementKt; import java.util.List; @@ -42,7 +45,7 @@ abstract class JsEqualsHashcodeToStringGenerator extends DataClassMethodGenerato JsName name = context.getNameForDescriptor(classProperties.get(i)); JsExpression literal = new JsStringLiteral((i == 0 ? (getClassDescriptor().getName() + "(") : ", ") + printName + "="); JsExpression expr = new JsInvocation(context.namer().kotlin("toString"), new JsNameRef(name, new JsThisRef())); - PsiElement source = KotlinSourceElementKt.getPsi(classProperties.get(i).getSource()); + PsiElement source = PsiSourceElementKt.getPsi(classProperties.get(i).getSource()); JsExpression component = JsAstUtils.sum(literal, expr).source(source); if (result == null) { result = component; @@ -79,7 +82,7 @@ abstract class JsEqualsHashcodeToStringGenerator extends DataClassMethodGenerato JsExpression assignment = JsAstUtils.assignment(new JsNameRef(varName), new JsBinaryOperation(JsBinaryOperator.BIT_OR, newHashValue, new JsIntLiteral(0))); - statements.add(assignment.source(KotlinSourceElementKt.getPsi(prop.getSource())).makeStmt()); + statements.add(assignment.source(PsiSourceElementKt.getPsi(prop.getSource())).makeStmt()); } JsReturn returnStatement = new JsReturn(new JsNameRef(varName)); @@ -106,7 +109,7 @@ abstract class JsEqualsHashcodeToStringGenerator extends DataClassMethodGenerato JsExpression fieldChain = null; for (PropertyDescriptor prop : classProperties) { JsName name = context.getNameForDescriptor(prop); - PsiElement source = KotlinSourceElementKt.getPsi(prop.getSource()); + PsiElement source = PsiSourceElementKt.getPsi(prop.getSource()); JsExpression next = new JsInvocation(context.namer().kotlin("equals"), new JsNameRef(name, new JsThisRef()), new JsNameRef(name, new JsNameRef(paramName))).source(source); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/InitializerUtils.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/InitializerUtils.java index 543ca6f9e13..f7c6f0605ea 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/InitializerUtils.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/InitializerUtils.java @@ -16,15 +16,13 @@ package org.jetbrains.kotlin.js.translate.initializer; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.descriptors.PropertyDescriptor; import org.jetbrains.kotlin.js.backend.ast.JsExpression; import org.jetbrains.kotlin.js.backend.ast.JsStatement; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.descriptors.PropertyDescriptor; -import org.jetbrains.kotlin.js.translate.context.Namer; import org.jetbrains.kotlin.js.translate.context.TranslationContext; import org.jetbrains.kotlin.js.translate.utils.JsAstUtils; -import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt; +import org.jetbrains.kotlin.resolve.source.PsiSourceElementKt; import static org.jetbrains.kotlin.js.translate.utils.TranslationUtils.assignmentToBackingField; @@ -39,7 +37,7 @@ public final class InitializerUtils { @NotNull JsExpression value ) { JsExpression assignment = assignmentToBackingField(context, descriptor, value); - assignment.setSource(KotlinSourceElementKt.getPsi(descriptor.getSource())); + assignment.setSource(PsiSourceElementKt.getPsi(descriptor.getSource())); return assignment.makeStmt(); } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/FunctionBodyTranslator.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/FunctionBodyTranslator.java index 727ee69f9a1..1ce21614af7 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/FunctionBodyTranslator.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/FunctionBodyTranslator.java @@ -36,7 +36,7 @@ import org.jetbrains.kotlin.js.translate.reference.ReferenceTranslator; import org.jetbrains.kotlin.psi.KtBlockExpression; import org.jetbrains.kotlin.psi.KtDeclarationWithBody; import org.jetbrains.kotlin.psi.KtExpression; -import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt; +import org.jetbrains.kotlin.resolve.source.PsiSourceElementKt; import org.jetbrains.kotlin.types.KotlinType; import java.util.ArrayList; @@ -97,7 +97,7 @@ public final class FunctionBodyTranslator extends AbstractTranslator { JsExpression defaultValue = Translation.translateAsExpression(defaultArgument, context, defaultArgBlock); // parameterName = defaultValue - PsiElement psi = KotlinSourceElementKt.getPsi(valueParameter.getSource()); + PsiElement psi = PsiSourceElementKt.getPsi(valueParameter.getSource()); JsStatement assignStatement = assignment(jsNameRef, defaultValue).source(psi).makeStmt(); JsStatement thenStatement = JsAstUtils.mergeStatementInBlockIfNeeded(assignStatement, defaultArgBlock); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/JsAstUtils.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/JsAstUtils.java index e9bcf1b7ab5..3436325b632 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/JsAstUtils.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/JsAstUtils.java @@ -30,7 +30,7 @@ import org.jetbrains.kotlin.js.translate.context.Namer; import org.jetbrains.kotlin.js.translate.context.TranslationContext; import org.jetbrains.kotlin.js.translate.reference.ReferenceTranslator; import org.jetbrains.kotlin.name.ClassId; -import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt; +import org.jetbrains.kotlin.resolve.source.PsiSourceElementKt; import org.jetbrains.kotlin.util.OperatorNameConventions; import java.util.Collections; @@ -486,7 +486,7 @@ public final class JsAstUtils { public static JsStatement defineSimpleProperty(@NotNull JsName name, @NotNull JsExpression value, @Nullable SourceElement source) { JsExpression assignment = assignment(new JsNameRef(name, new JsThisRef()), value); if (source != null) { - assignment.setSource(KotlinSourceElementKt.getPsi(source)); + assignment.setSource(PsiSourceElementKt.getPsi(source)); } return assignment.makeStmt(); } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/TranslationUtils.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/TranslationUtils.java index 34d931a7c1f..b261f5c50c0 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/TranslationUtils.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/TranslationUtils.java @@ -42,6 +42,7 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt; import org.jetbrains.kotlin.resolve.inline.InlineUtil; import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt; +import org.jetbrains.kotlin.resolve.source.PsiSourceElementKt; import org.jetbrains.kotlin.types.DynamicTypesKt; import org.jetbrains.kotlin.types.KotlinType; import org.jetbrains.kotlin.types.TypeUtils; @@ -74,7 +75,7 @@ public final class TranslationUtils { JsExpression functionExpression = function; if (InlineUtil.isInline(descriptor)) { InlineMetadata metadata = InlineMetadata.compose(function, descriptor, context); - PsiElement sourceInfo = KotlinSourceElementKt.getPsi(descriptor.getSource()); + PsiElement sourceInfo = PsiSourceElementKt.getPsi(descriptor.getSource()); functionExpression = metadata.functionWithMetadata(context, sourceInfo); }