Как настроить Kotlin PSI для подключаемого модуля IntelliJ IDEA Gradle? - PullRequest
0 голосов
/ 27 февраля 2020

Я создаю плагин для IntelliJ IDE для работы с Kotlin файлами в проекте. Мне удалось написать несколько тестов, чтобы взять файл Kotlin и сгенерировать новый файл на основе его содержимого. Когда я запускаю этот плагин в IDE, я не могу обнаружить файлы как Kotlin файлы. Когда я смотрю на отладчик, мой файл говорит, что это KtFile из библиотеки org.jetbrains.kotlin.psi. Но если я пытаюсь привести его к KtFile, я получаю сообщение об ошибке:

java.lang.ClassCastException: org.jetbrains.kotlin.psi.KtFile cannot be cast to org.jetbrains.kotlin.psi.KtFile

Так что, очевидно, версия библиотеки отключена между временем выполнения и временем компиляции. Что мне нужно сделать, чтобы мой плагин использовал правильный Kotlin PSI во время работы плагина?

My plugin.xml выглядит так:

<idea-plugin>
    <id>...</id>
    <name>...</name>
    <vendor email="..." url="...">...</vendor>

    <description><...</description>

    <depends>com.intellij.modules.all</depends>
    <depends>org.jetbrains.kotlin</depends>

    <actions>...</actions>
</idea-plugin>

My build.gradle.kts выглядит например:

plugins {
    id("org.jetbrains.intellij") version "0.4.16"
    kotlin("jvm") version "1.3.61"
}

group = "..."
version = "..."

repositories {
    mavenCentral()
}

dependencies {
    implementation(kotlin("stdlib-jdk8"))
    implementation(kotlin("compiler-embeddable", "1.3.61"))
    implementation(kotlin("gradle-plugin", "1.3.61"))

    testImplementation(group = "junit", name = "junit", version = "4.12")
}

buildscript {
    repositories { mavenCentral() }
    dependencies {
        classpath(kotlin("compiler-embeddable", "1.3.61"))
        classpath(kotlin("gradle-plugin", "1.3.61"))
    }
}

intellij {
    version = "2019.1.4"
    setPlugins("Kotlin")
}
tasks {
    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
}
tasks.getByName<org.jetbrains.intellij.tasks.PatchPluginXmlTask>("patchPluginXml") {
    changeNotes("...")
}

Я уже знаю Как включить Kotlin классы PSI (например, KtClass) в проект подключаемого модуля Intellij IDEA Gradle, написанный на Kotlin? и Как добавить Kotlin исходные файлы PSI в конфигурацию проекта плагина IDEA , что, по сути, я хочу получить ответ, но не получил ничего, чтобы решить мою проблему. Может быть, есть некоторая документация по этому вопросу, но она уклоняется от моих поисков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...