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()