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 } }