From e63775676ab18712c00aa55e08a84edd5df897dd Mon Sep 17 00:00:00 2001
From: Him188 <Him188@mamoe.net>
Date: Sun, 29 Nov 2020 16:21:54 +0800
Subject: [PATCH] Fix RESTRICTED_CONSOLE_COMMAND_OWNER

---
 tools/compiler-common/src/resolve/resolveTypes.kt         | 1 +
 .../main/kotlin/org/example/myplugin/MySimpleCommand.kt   | 7 ++++++-
 .../src/diagnostics/ContextualParametersChecker.kt        | 8 +++++---
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/tools/compiler-common/src/resolve/resolveTypes.kt b/tools/compiler-common/src/resolve/resolveTypes.kt
index f2c981e3f..9f3ce2a51 100644
--- a/tools/compiler-common/src/resolve/resolveTypes.kt
+++ b/tools/compiler-common/src/resolve/resolveTypes.kt
@@ -34,6 +34,7 @@ val COMPOSITE_COMMAND_SUB_COMMAND_FQ_NAME = FqName("net.mamoe.mirai.console.comm
 val SIMPLE_COMMAND_HANDLER_COMMAND_FQ_NAME = FqName("net.mamoe.mirai.console.command.SimpleCommand.Handler")
 val COMMAND_SENDER_FQ_NAME = FqName("net.mamoe.mirai.console.command.CommandSender")
 val CONSOLE_COMMAND_SENDER_FQ_NAME = FqName("net.mamoe.mirai.console.command.ConsoleCommandSender")
+val CONSOLE_COMMAND_OWNER_FQ_NAME = FqName("net.mamoe.mirai.console.command.ConsoleCommandOwner")
 
 ///////////////////////////////////////////////////////////////////////////
 // Plugin
diff --git a/tools/intellij-plugin/run/projects/test-project/src/main/kotlin/org/example/myplugin/MySimpleCommand.kt b/tools/intellij-plugin/run/projects/test-project/src/main/kotlin/org/example/myplugin/MySimpleCommand.kt
index a20342ca6..9ac1aaf83 100644
--- a/tools/intellij-plugin/run/projects/test-project/src/main/kotlin/org/example/myplugin/MySimpleCommand.kt
+++ b/tools/intellij-plugin/run/projects/test-project/src/main/kotlin/org/example/myplugin/MySimpleCommand.kt
@@ -7,9 +7,14 @@ import net.mamoe.mirai.console.command.SimpleCommand
 import net.mamoe.mirai.console.data.AutoSavePluginConfig
 import net.mamoe.mirai.console.data.value
 
-object MySimpleCommand000 : SimpleCommand(
+object MySimpleCommand0001 : SimpleCommand(
     ConsoleCommandOwner, "foo",
     description = "示例指令"
+) {}
+
+object MySimpleCommand000 : SimpleCommand(
+    MyPluginMain, "foo",
+    description = "示例指令"
 ) {
     @Handler
     suspend fun CommandSender.handle(int: Int, str: String) {
diff --git a/tools/intellij-plugin/src/diagnostics/ContextualParametersChecker.kt b/tools/intellij-plugin/src/diagnostics/ContextualParametersChecker.kt
index c4ec82714..703841607 100644
--- a/tools/intellij-plugin/src/diagnostics/ContextualParametersChecker.kt
+++ b/tools/intellij-plugin/src/diagnostics/ContextualParametersChecker.kt
@@ -16,7 +16,7 @@ import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.IL
 import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.ILLEGAL_PLUGIN_DESCRIPTION
 import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.ILLEGAL_VERSION_REQUIREMENT
 import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.RESTRICTED_CONSOLE_COMMAND_OWNER
-import net.mamoe.mirai.console.compiler.common.resolve.COMMAND_SENDER_FQ_NAME
+import net.mamoe.mirai.console.compiler.common.resolve.CONSOLE_COMMAND_OWNER_FQ_NAME
 import net.mamoe.mirai.console.compiler.common.resolve.ResolveContextKind
 import net.mamoe.mirai.console.compiler.common.resolve.resolveContextKinds
 import net.mamoe.mirai.console.intellij.resolve.resolveAllCalls
@@ -135,10 +135,12 @@ class ContextualParametersChecker : DeclarationChecker {
             val expr = argument.getArgumentExpression() ?: return null
 
             if (expr is KtReferenceExpression) {
-                expr.getResolvedCall(context)?.isCalling(COMMAND_SENDER_FQ_NAME) ?: return null
+                if (expr.getResolvedCall(context)?.isCalling(CONSOLE_COMMAND_OWNER_FQ_NAME) == true) {
+                    return RESTRICTED_CONSOLE_COMMAND_OWNER.on(inspectionTarget)
+                }
             }
 
-            return RESTRICTED_CONSOLE_COMMAND_OWNER.on(inspectionTarget)
+            return null
         }
     }