[light classes] move LightElementOrigin to light-classes-base module
^KT-53097
This commit is contained in:
@@ -7,6 +7,7 @@ dependencies {
|
|||||||
api(project(":compiler:util"))
|
api(project(":compiler:util"))
|
||||||
api(project(":compiler:frontend.common"))
|
api(project(":compiler:frontend.common"))
|
||||||
api(project(":compiler:frontend.common-psi"))
|
api(project(":compiler:frontend.common-psi"))
|
||||||
|
api(project(":compiler:frontend.common.jvm"))
|
||||||
api(project(":compiler:resolution.common.jvm"))
|
api(project(":compiler:resolution.common.jvm"))
|
||||||
api(project(":core:compiler.common.jvm"))
|
api(project(":core:compiler.common.jvm"))
|
||||||
compileOnly(intellijCore())
|
compileOnly(intellijCore())
|
||||||
|
|||||||
+65
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* 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.asJava.builder
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
|
import org.jetbrains.kotlin.psi.KtParameter
|
||||||
|
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind
|
||||||
|
|
||||||
|
interface LightElementOrigin {
|
||||||
|
val originalElement: PsiElement?
|
||||||
|
val originKind: JvmDeclarationOriginKind?
|
||||||
|
|
||||||
|
object None : LightElementOrigin {
|
||||||
|
override val originalElement: PsiElement?
|
||||||
|
get() = null
|
||||||
|
override val originKind: JvmDeclarationOriginKind?
|
||||||
|
get() = null
|
||||||
|
|
||||||
|
override fun toString() = "NONE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface LightMemberOrigin : LightElementOrigin {
|
||||||
|
override val originalElement: KtDeclaration?
|
||||||
|
override val originKind: JvmDeclarationOriginKind
|
||||||
|
val parametersForJvmOverloads: List<KtParameter?>? get() = null
|
||||||
|
val auxiliaryOriginalElement: KtDeclaration? get() = null
|
||||||
|
|
||||||
|
fun isValid(): Boolean
|
||||||
|
|
||||||
|
fun isEquivalentTo(other: LightMemberOrigin?): Boolean
|
||||||
|
fun isEquivalentTo(other: PsiElement?): Boolean
|
||||||
|
|
||||||
|
fun copy(): LightMemberOrigin
|
||||||
|
}
|
||||||
|
|
||||||
|
data class LightMemberOriginForDeclaration(
|
||||||
|
override val originalElement: KtDeclaration,
|
||||||
|
override val originKind: JvmDeclarationOriginKind,
|
||||||
|
override val parametersForJvmOverloads: List<KtParameter?>? = null,
|
||||||
|
override val auxiliaryOriginalElement: KtDeclaration? = null
|
||||||
|
) : LightMemberOrigin {
|
||||||
|
override fun isValid(): Boolean = originalElement.isValid
|
||||||
|
|
||||||
|
override fun isEquivalentTo(other: LightMemberOrigin?): Boolean {
|
||||||
|
if (other !is LightMemberOriginForDeclaration) return false
|
||||||
|
return isEquivalentTo(other.originalElement)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun isEquivalentTo(other: PsiElement?): Boolean {
|
||||||
|
return originalElement.isEquivalentTo(other)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun copy(): LightMemberOrigin {
|
||||||
|
return LightMemberOriginForDeclaration(originalElement.copy() as KtDeclaration, originKind, parametersForJvmOverloads)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data class DefaultLightElementOrigin(override val originalElement: PsiElement?) : LightElementOrigin {
|
||||||
|
override val originKind: JvmDeclarationOriginKind? get() = null
|
||||||
|
}
|
||||||
+6
-77
@@ -1,17 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2016 JetBrains s.r.o.
|
* 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.
|
||||||
* 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.asJava.builder
|
package org.jetbrains.kotlin.asJava.builder
|
||||||
@@ -19,72 +8,12 @@ package org.jetbrains.kotlin.asJava.builder
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
import org.jetbrains.kotlin.psi.KtParameter
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin
|
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind
|
|
||||||
|
|
||||||
|
fun JvmDeclarationOrigin.toLightMemberOrigin(): LightElementOrigin = when (val originalElement = element) {
|
||||||
interface LightElementOrigin {
|
is KtAnnotationEntry -> DefaultLightElementOrigin(originalElement)
|
||||||
val originalElement: PsiElement?
|
is KtDeclaration -> LightMemberOriginForDeclaration(originalElement, originKind, parametersForJvmOverload)
|
||||||
val originKind: JvmDeclarationOriginKind?
|
else -> LightElementOrigin.None
|
||||||
|
|
||||||
object None : LightElementOrigin {
|
|
||||||
override val originalElement: PsiElement?
|
|
||||||
get() = null
|
|
||||||
override val originKind: JvmDeclarationOriginKind?
|
|
||||||
get() = null
|
|
||||||
|
|
||||||
override fun toString() = "NONE"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun JvmDeclarationOrigin.toLightMemberOrigin(): LightElementOrigin {
|
|
||||||
val originalElement = element
|
|
||||||
return when (originalElement) {
|
|
||||||
is KtAnnotationEntry -> DefaultLightElementOrigin(originalElement)
|
|
||||||
is KtDeclaration -> LightMemberOriginForDeclaration(originalElement, originKind, parametersForJvmOverload)
|
|
||||||
else -> LightElementOrigin.None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
interface LightMemberOrigin : LightElementOrigin {
|
|
||||||
override val originalElement: KtDeclaration?
|
|
||||||
override val originKind: JvmDeclarationOriginKind
|
|
||||||
val parametersForJvmOverloads: List<KtParameter?>? get() = null
|
|
||||||
val auxiliaryOriginalElement: KtDeclaration? get() = null
|
|
||||||
|
|
||||||
fun isValid(): Boolean
|
|
||||||
|
|
||||||
fun isEquivalentTo(other: LightMemberOrigin?): Boolean
|
|
||||||
fun isEquivalentTo(other: PsiElement?): Boolean
|
|
||||||
|
|
||||||
fun copy(): LightMemberOrigin
|
|
||||||
}
|
|
||||||
|
|
||||||
data class LightMemberOriginForDeclaration(
|
|
||||||
override val originalElement: KtDeclaration,
|
|
||||||
override val originKind: JvmDeclarationOriginKind,
|
|
||||||
override val parametersForJvmOverloads: List<KtParameter?>? = null,
|
|
||||||
override val auxiliaryOriginalElement: KtDeclaration? = null
|
|
||||||
) : LightMemberOrigin {
|
|
||||||
override fun isValid(): Boolean = originalElement.isValid
|
|
||||||
|
|
||||||
override fun isEquivalentTo(other: LightMemberOrigin?): Boolean {
|
|
||||||
if (other !is LightMemberOriginForDeclaration) return false
|
|
||||||
return isEquivalentTo(other.originalElement)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun isEquivalentTo(other: PsiElement?): Boolean {
|
|
||||||
return originalElement.isEquivalentTo(other)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun copy(): LightMemberOrigin {
|
|
||||||
return LightMemberOriginForDeclaration(originalElement.copy() as KtDeclaration, originKind, parametersForJvmOverloads)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
data class DefaultLightElementOrigin(override val originalElement: PsiElement?) : LightElementOrigin {
|
|
||||||
override val originKind: JvmDeclarationOriginKind? get() = null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun PsiElement?.toLightClassOrigin(): LightElementOrigin {
|
fun PsiElement?.toLightClassOrigin(): LightElementOrigin {
|
||||||
|
|||||||
Reference in New Issue
Block a user