Как настроить версию Kotlin, используемую для чистых файлов в IntelliJ IDEA? - PullRequest
0 голосов
/ 16 октября 2018

Я недавно установил IntelliJ IDEA в попытке изучить Kotlin.Я настроил проект Kotlin и настроил IDEA для использования последней стабильной версии плагина Kotlin (1.2.71-release-IJ2018.2-1).

Следующий код работает нормально, если выполняется вфайл проекта (например, src/main.kt):

sealed class Port
class InputPort<in T> : Port()
class OutputPort<out T> : Port()

Однако, если я попытаюсь выполнить это вместо файла с нулями, я получу следующие ошибки:

scratch.kts:2:25: error: cannot access '<init>': it is private in 'Port'
class InputPort<in T> : Port()
                        ^
scratch.kts:2:25: error: this type is sealed, so it can be inherited by only its own nested classes or objects
class InputPort<in T> : Port()
                        ^
scratch.kts:3:27: error: cannot access '<init>': it is private in 'Port'
class OutputPort<out T> : Port()
                          ^
scratch.kts:3:27: error: this type is sealed, so it can be inherited by only its own nested classes or objects
class OutputPort<out T> : Port()
                          ^

Из Документация Kotlin , я вижу, что это потому, что использование закрытых классов допустимо только в Kotlin 1.1+.Это подразумевает, что файлы проекта выполняются с> = Kotlin 1.1, тогда как рабочие файлы используют

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

Ниже приведен пример конфигурации запуска / отладки, которую я использую для своих чистых файлов:

При выполнении файла с исходным кодом я вижу следующую команду, появляющуюся на панели вывода с нуля (форматирование изменено для ясности):

"C:\Program Files\Java\jdk-11\bin\java.exe" ^
    -javaagent:C:\Users\<me>\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\182.4505.22\lib\idea_rt.jar=53595:C:\Users\<me>\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\182.4505.22\bin ^
    -Dfile.encoding=windows-1252 ^
    -classpath C:\Users\<me>\.IdeaIC2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-compiler.jar;C:\Users\<me>\.IdeaIC2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-reflect.jar;C:\Users\<me>\.IdeaIC2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-stdlib.jar;C:\Users\<me>\.IdeaIC2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-script-runtime.jar org.jetbrains.kotlin.cli.jvm.K2JVMCompiler ^
    -kotlin-home C:\Users\<me>\.IdeaIC2018.2\config\plugins\Kotlin\kotlinc 
    -script C:/Users/<me>/.IdeaIC2018.2/config/scratches/scratch_2.kts

1 Ответ

0 голосов
/ 16 октября 2018

Это не проблема с вашей конфигурацией.В настоящее время запечатанный класс может наследоваться только собственным вложенным классом в сценариях Kotlin.

В YouTrack существует проблема: https://youtrack.jetbrains.com/issue/KT-20180

...