From c1ea2d94eec43a31ab257908305af127a81c0573 Mon Sep 17 00:00:00 2001 From: Him188 <Him188@mamoe.net> Date: Thu, 17 Sep 2020 21:51:24 +0800 Subject: [PATCH] Move compiler common to compiler-common module --- tools/compiler-common/build.gradle.kts | 1 - .../common/resolve/MiraiConsoleTypes.kt | 27 +++++++++++++++++++ .../diagnostics/PluginDescriptionChecker.kt | 6 +++++ .../marker/PluginMainLineMarkerProvider.kt | 4 +-- .../console/intellij/line/marker/util.kt | 8 ------ .../resolve/{psiResolve.kt => resolveIdea.kt} | 9 +++---- 6 files changed, 38 insertions(+), 17 deletions(-) create mode 100644 tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/resolve/MiraiConsoleTypes.kt rename tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/resolve/{psiResolve.kt => resolveIdea.kt} (74%) diff --git a/tools/compiler-common/build.gradle.kts b/tools/compiler-common/build.gradle.kts index fb6a5e172..37295d0be 100644 --- a/tools/compiler-common/build.gradle.kts +++ b/tools/compiler-common/build.gradle.kts @@ -57,7 +57,6 @@ dependencies { compileOnly("org.jetbrains.kotlin:kotlin-compiler:${Versions.kotlinCompiler}") compileOnly("org.jetbrains.kotlin:kotlin-compiler:${Versions.kotlinCompiler}") - compileOnly(files("libs/ide-common.jar")) testApi(kotlin("test")) testApi(kotlin("test-junit5")) diff --git a/tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/resolve/MiraiConsoleTypes.kt b/tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/resolve/MiraiConsoleTypes.kt new file mode 100644 index 000000000..10b1e5939 --- /dev/null +++ b/tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/resolve/MiraiConsoleTypes.kt @@ -0,0 +1,27 @@ +/* + * Copyright 2020 Mamoe Technologies and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * + * https://github.com/mamoe/mirai/blob/master/LICENSE + */ + +package net.mamoe.mirai.console.compiler.common.resolve + +import org.jetbrains.kotlin.name.FqName + +/////////////////////////////////////////////////////////////////////////// +// Command +/////////////////////////////////////////////////////////////////////////// + +val COMPOSITE_COMMAND_SUB_COMMAND_FQ_NAME = FqName("net.mamoe.mirai.console.command.CompositeCommand.SubCommand") +val SIMPLE_COMMAND_HANDLER_COMMAND_FQ_NAME = FqName("net.mamoe.mirai.console.command.SimpleCommand.Handler") + +/////////////////////////////////////////////////////////////////////////// +// Plugin +/////////////////////////////////////////////////////////////////////////// + +val PLUGIN_FQ_NAME = FqName("net.mamoe.mirai.console.plugin.Plugin") +val JVM_PLUGIN_DESCRIPTION_FQ_NAME = FqName("net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription") +val SIMPLE_JVM_PLUGIN_DESCRIPTION_FQ_NAME = FqName("net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription") diff --git a/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/diagnostics/PluginDescriptionChecker.kt b/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/diagnostics/PluginDescriptionChecker.kt index 83a52f8ca..658a13eef 100644 --- a/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/diagnostics/PluginDescriptionChecker.kt +++ b/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/diagnostics/PluginDescriptionChecker.kt @@ -14,11 +14,17 @@ import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext +/** + * Checks: + * - plugin id + * - plugin name + */ class PluginDescriptionChecker : DeclarationChecker { override fun check( declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext, ) { + } } \ No newline at end of file diff --git a/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/line/marker/PluginMainLineMarkerProvider.kt b/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/line/marker/PluginMainLineMarkerProvider.kt index 866d22378..8f5d43708 100644 --- a/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/line/marker/PluginMainLineMarkerProvider.kt +++ b/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/line/marker/PluginMainLineMarkerProvider.kt @@ -16,8 +16,8 @@ import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.editor.markup.GutterIconRenderer import com.intellij.psi.PsiElement import com.intellij.util.castSafelyTo +import net.mamoe.mirai.console.compiler.common.resolve.PLUGIN_FQ_NAME import net.mamoe.mirai.console.intellij.Icons -import net.mamoe.mirai.console.intellij.resolve.Plugin_FQ_NAME import org.jetbrains.kotlin.nj2k.postProcessing.resolve import org.jetbrains.kotlin.psi.KtClass import org.jetbrains.kotlin.psi.KtConstructor @@ -31,7 +31,7 @@ class PluginMainLineMarkerProvider : LineMarkerProvider { element.parents.filterIsInstance<KtObjectDeclaration>().firstOrNull() ?: return null val kotlinPluginClass = element.resolve().castSafelyTo<KtConstructor<*>>()?.parent?.castSafelyTo<KtClass>() ?: return null - if (kotlinPluginClass.allSuperNames.none { it == Plugin_FQ_NAME }) return null + if (kotlinPluginClass.allSuperNames.none { it == PLUGIN_FQ_NAME }) return null return Info(getElementForLineMark(objectDeclaration)) } diff --git a/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/line/marker/util.kt b/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/line/marker/util.kt index d75f2e05b..a407e5a6a 100644 --- a/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/line/marker/util.kt +++ b/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/line/marker/util.kt @@ -11,8 +11,6 @@ package net.mamoe.mirai.console.intellij.line.marker import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile -import com.intellij.psi.PsiReferenceExpression -import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.nj2k.postProcessing.resolve @@ -31,12 +29,6 @@ internal inline fun <reified E> PsiElement.findParent(): E? = this.parents.filte internal val KtClassOrObject.allSuperNames: Sequence<FqName> get() = allSuperTypes.mapNotNull { it.getKotlinFqName() } -fun PsiReferenceExpression.hasBridgeCalls(): Boolean { - val resolved = this.resolve() as? KtLightMethod ?: return false - - TODO() -} - val PsiElement.parents: Sequence<PsiElement> get() { val seed = if (this is PsiFile) null else parent diff --git a/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/resolve/psiResolve.kt b/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/resolve/resolveIdea.kt similarity index 74% rename from tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/resolve/psiResolve.kt rename to tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/resolve/resolveIdea.kt index c72204ade..6fba5b74b 100644 --- a/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/resolve/psiResolve.kt +++ b/tools/intellij-plugin/src/main/kotlin/net/mamoe/mirai/console/intellij/resolve/resolveIdea.kt @@ -9,14 +9,11 @@ package net.mamoe.mirai.console.intellij.resolve +import net.mamoe.mirai.console.compiler.common.resolve.COMPOSITE_COMMAND_SUB_COMMAND_FQ_NAME +import net.mamoe.mirai.console.compiler.common.resolve.SIMPLE_COMMAND_HANDLER_COMMAND_FQ_NAME import net.mamoe.mirai.console.intellij.line.marker.hasAnnotation -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtNamedFunction -val COMPOSITE_COMMAND_SUB_COMMAND_FQ_NAME = FqName("net.mamoe.mirai.console.command.CompositeCommand.SubCommand") -val SIMPLE_COMMAND_HANDLER_COMMAND_FQ_NAME = FqName("net.mamoe.mirai.console.command.SimpleCommand.Handler") - -val Plugin_FQ_NAME = FqName("net.mamoe.mirai.console.plugin.Plugin") /** * For CompositeCommand.SubCommand @@ -29,4 +26,4 @@ fun KtNamedFunction.isCompositeCommandSubCommand(): Boolean = this.hasAnnotation fun KtNamedFunction.isSimpleCommandHandler(): Boolean = this.hasAnnotation(SIMPLE_COMMAND_HANDLER_COMMAND_FQ_NAME) fun KtNamedFunction.isSimpleCommandHandlerOrCompositeCommandSubCommand(): Boolean = - this.isSimpleCommandHandler() || this.isCompositeCommandSubCommand() \ No newline at end of file + this.isSimpleCommandHandler() || this.isCompositeCommandSubCommand()