mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-28 01:07:49 +08:00
using_kotlin.md: cleanups
This commit is contained in:
parent
c176d00a80
commit
89fd1c0e8a
@ -222,11 +222,13 @@ kotlin.incremental.useClasspathSnapshot=false
|
|||||||
{id="object-vs-class"}
|
{id="object-vs-class"}
|
||||||
|
|
||||||
Plugins *may* use [Kotlin classes](https://kotlinlang.org/docs/classes.html) (`class` keyword) to implement declarations in the [plugin configuration file](plugin_configuration_file.md).
|
Plugins *may* use [Kotlin classes](https://kotlinlang.org/docs/classes.html) (`class` keyword) to implement declarations in the [plugin configuration file](plugin_configuration_file.md).
|
||||||
When registering an extension, the platform uses a dependency injection framework to instantiate these classes at runtime.
|
When registering an [extension](plugin_extensions.md), the platform uses a dependency injection framework to instantiate these classes at runtime.
|
||||||
For this reason, plugins *must not* use [Kotlin objects](https://kotlinlang.org/docs/object-declarations.html#object-declarations-overview) (`object` keyword) to implement any <path>[plugin.xml](plugin_configuration_file.md)</path> declarations.
|
For this reason, plugins *must not* use [Kotlin objects](https://kotlinlang.org/docs/object-declarations.html#object-declarations-overview) (`object` keyword)
|
||||||
|
to implement any <path>[plugin.xml](plugin_configuration_file.md)</path> declarations.
|
||||||
Managing the lifecycle of extensions is the platform's responsibility, and instantiating these classes as Kotlin singletons may cause issues.
|
Managing the lifecycle of extensions is the platform's responsibility, and instantiating these classes as Kotlin singletons may cause issues.
|
||||||
|
|
||||||
A notable exception is `com.intellij.openapi.fileTypes.FileType` (`com.intellij.fileType` extension point), see also the inspection descriptions below.
|
A notable exception is [`FileType`](%gh-ic%/platform/core-api/src/com/intellij/openapi/fileTypes/FileType.java)
|
||||||
|
(`com.intellij.fileType` extension point), see also the inspection descriptions below.
|
||||||
|
|
||||||
Problems are highlighted via these inspections (2023.2):
|
Problems are highlighted via these inspections (2023.2):
|
||||||
|
|
||||||
@ -237,7 +239,7 @@ Problems are highlighted via these inspections (2023.2):
|
|||||||
|
|
||||||
{id="companion-object-extensions"}
|
{id="companion-object-extensions"}
|
||||||
|
|
||||||
Kotlin `companion object` is always created once you try to load its containing class, and [extension point implementations](plugin_extensions.md) are supposed to be cheap to create.
|
A Kotlin `companion object` is always created once you try to load its containing class, and [extension point implementations](plugin_extensions.md) are supposed to be cheap to create.
|
||||||
To avoid unnecessary classloading (and thus slowdown in IDE startup), `companion object` in extensions must only contain simple constants or [logger](ide_infrastructure.md#logging).
|
To avoid unnecessary classloading (and thus slowdown in IDE startup), `companion object` in extensions must only contain simple constants or [logger](ide_infrastructure.md#logging).
|
||||||
Anything else must be a top-level declaration or stored in an `object`.
|
Anything else must be a top-level declaration or stored in an `object`.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user