# Incompatible Changes in IntelliJ Platform and Plugins API 2024.*
List of known Breaking API Changes in 2024.*
## 2024.3
### IntelliJ Platform 2024.3
`com.intellij.psi.stubs.StubElement.getChildrenStubs()` method return type changed from `List` to `List>`
: Raw-type changed to a properly parameterized type. This is binary compatible change but may cause compilation errors. In most of the cases, it's enough to add `>` at the use site to fix the issue.
Unbundled JUnit library
: Add an explicit dependency in the plugin project.
`com.intellij.openapi.actionSystem.impl.MoreActionGroup(boolean, int, DefaultConstructorMarker)` constructor removed
: Use other constructors instead.
### JSON Plugin (new) 2024.3
`com.intellij.json.JsonElementTypes` class removed
: Add [explicit dependency](plugin_dependencies.md) on the newly extracted JSON plugin (`com.intellij.modules.json`) in `plugin.xml`.
`com.intellij.json.JsonFileType` class removed
: Add [explicit dependency](plugin_dependencies.md) on the newly extracted JSON plugin (`com.intellij.modules.json`) in `plugin.xml`.
`com.intellij.json.JsonLanguage` class removed
: Add [explicit dependency](plugin_dependencies.md) on the newly extracted JSON plugin (`com.intellij.modules.json`) in `plugin.xml`.
`com.intellij.json.JsonParserDefinition` class removed
: Add [explicit dependency](plugin_dependencies.md) on the newly extracted JSON plugin (`com.intellij.modules.json`) in `plugin.xml`.
`com.intellij.json.JsonTokenType` class removed
: Add [explicit dependency](plugin_dependencies.md) on the newly extracted JSON plugin (`com.intellij.modules.json`) in `plugin.xml`.
`com.intellij.json` package removed
: Add [explicit dependency](plugin_dependencies.md) on the newly extracted JSON plugin (`com.intellij.modules.json`) in `plugin.xml`.
`com.intellij.json.codeinsight` package removed
: Add [explicit dependency](plugin_dependencies.md) on the newly extracted JSON plugin (`com.intellij.modules.json`) in `plugin.xml`.
`com.intellij.json.highlighting` package removed
: Add [explicit dependency](plugin_dependencies.md) on the newly extracted JSON plugin (`com.intellij.modules.json`) in `plugin.xml`.
`com.intellij.json.psi` package removed
: Add [explicit dependency](plugin_dependencies.md) on the newly extracted JSON plugin (`com.intellij.modules.json`) in `plugin.xml`.
`com.jetbrains.jsonSchema` package removed
: Add [explicit dependency](plugin_dependencies.md) on the newly extracted JSON plugin (`com.intellij.modules.json`) in `plugin.xml`.
### Database Plugin 2024.3
`com.intellij.database.datagrid.DataGrid.getFormatterConfig(ModelIndex)` abstract method added
: Only recompilation is needed for classes that implement `DataGrid` and delegate calls to an actual `DataGrid` implementation.
## 2024.2
### IntelliJ Platform 2024.2
Constructor of `com.intellij.ui.tabs.TabInfo` requires not-null `JComponent` argument.
`com.intellij.execution.lineMarker.ExecutorAction.Companion.wrap(RunContextAction, Int)` method removed
: Use `com.intellij.execution.lineMarker.ExecutorAction.Companion.wrap(AnAction, Executor, Int)` instead.
`org.apache.sanselan.util` package removed
: `org.apache.sanselan.util.IOUtils` compatibility shim is obsolete; instead, please use JRE methods or `org.apache.commons.io.IOUtils`.
`com.intellij.platform.workspace.storage.url.VirtualFileUrlManager.getOrCreateFromUri(String)` method removed
: Use `com.intellij.platform.workspace.storage.url.VirtualFileUrlManager.getOrCreateFromUrl(String)` instead.
`com.intellij.platform.workspace.jps.entities.DependenciesKt.modifyEntity(MutableEntityStorage, LibraryEntity, Function1)` method removed
: Use `com.intellij.platform.workspace.jps.entities.DependenciesKt.modifyLibraryEntity(MutableEntityStorage, LibraryEntity, Function1)` instead.
### UML Plugin 2024.2
`com.intellij.uml.UmlGraphBuilder(Project, Graph2D, Graph2DView, DiagramDataModel>, DiagramPresentationModel)` constructor removed
: Use `com.intellij.uml.UmlGraphBuilder(Project, Graph2D, Graph2DView, DiagramDataModel>, GraphThreadingType, DiagramPresentationModel)` instead.
`com.intellij.openapi.graph.impl.builder.GraphBuilderImpl.addEdge(Object, Object, Object)` method removed
: Use `com.intellij.openapi.graph.impl.builder.GraphBuilderImpl.addEdge(Object, Object, String, Object, Object[], Function super E,? extends Edge>)` instead.
### Python Plugin 2024.2
`com.jetbrains.python.PyElementTypes.STATEMENT_LIST` field type changed from `PyElementType` to `IElementType`
: Update code usages.
### Kotlin Plugin 2024.2
`org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService.getFirResolveSessionNoCaching(module: KtModule)` method removed
: Internals of Kotlin plugin.
`org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider.Companion.getModule(Project, PsiElement, KtModule)` method removed
: Use `org.jetbrains.kotlin.analysis.api.projectStructure.KaModuleProvider.Companion.getModule(Project, PsiElement, KtModule)` instead.
`org.jetbrains.kotlin.codegen.state.TypeMappingUtil.getJVM_SUPPRESS_WILDCARDS_ANNOTATION_FQ_NAME` method removed
: Use `org.jetbrains.kotlin.name.JvmStandardClassIds.getJVM_SUPPRESS_WILDCARDS_ANNOTATION_FQ_NAME` instead.
`org.jetbrains.kotlin.fir.types.ConeTypeUtilsKt.renderReadableWithFqNames(ConeKotlinType)` method removed
: Internals of Kotlin compiler.
`org.jetbrains.kotlin.analysis.project.structure.KtModule` class renamed to `org.jetbrains.kotlin.analysis.api.projectStructure.KaModule`
: Update code usages.
`org.jetbrains.kotlin.fir.expressions.FirAssignmentOperatorStatement` class removed
: Internals of Kotlin compiler.
### Database Plugin 2024.2
`com.intellij.database.datagrid.DataGrid.getCoroutineScope()` abstract method added
: Only recompilation is needed for classes that implement `DataGrid` and delegate calls to an actual `DataGrid` implementation.
`com.intellij.database.datagrid.DataGrid.getModificationTracker()` abstract method added
: Only recompilation is needed for classes that implement `DataGrid` and delegate calls to an actual `DataGrid` implementation.
`com.intellij.database.datagrid.DataGrid.adaptForNewQuery()` abstract method added
: Only recompilation is needed for classes that implement `DataGrid` and delegate calls to an actual `DataGrid` implementation.
### HTTP Client Plugin 2024.2
`com.intellij.httpClient.http.request.HttpRequestPsiConverter.toRequestConfig(HttpRequest)` method visibility changed from `public` to `private`
: This method is an implementation detail.
### Dependency Analysis Plugin 2024.2
`com.jetbrains.dependencyAnalysis` package removed
: The package `com.jetbrains.dependencyAnalysis` has been removed. Please update your code to use the new package `com.jetbrains.dependencyAnalysis.core` instead.
## 2024.1
### IntelliJ Platform 2024.1
`com.intellij.refactoring.RefactoringHelper.prepareOperation(UsageInfo [] usages, List elements)` abstract method added
: Use instead of `com.intellij.refactoring.RefactoringHelper.prepareOperation(UsageInfo [] usages)` and `com.intellij.refactoring.RefactoringHelper.prepareOperation(UsageInfo [] usages, PsiElement primaryElement)`.
`com.intellij.refactoring.RefactoringHelper.prepareOperation(UsageInfo [] usages)` method removed
: Use `com.intellij.refactoring.RefactoringHelper.prepareOperation(UsageInfo [] usages, List elements)` instead.
`com.intellij.refactoring.RefactoringHelper.prepareOperation(UsageInfo [] usages, PsiElement primaryElement)` method removed
: Use `com.intellij.refactoring.RefactoringHelper.prepareOperation(UsageInfo [] usages, List elements)` instead.
`com.jetbrains.commandInterface.commandLine.psi.CommandLineFile` class moved to package `com.intellij.commandInterface.commandLine.psi`
: Update code usages.
`com.jetbrains.commandInterface.commandLine.CommandLineLanguage` class moved to package `com.intellij.commandInterface.commandLine`
: Update code usages.
`com.jetbrains.commandInterface.commandLine.psi.CommandLineArgument` class moved to package `com.intellij.commandInterface.commandLine.psi`
: Update code usages.
`com.jetbrains.commandInterface.commandLine.psi.CommandLineOption` class moved to package `com.intellij.commandInterface.commandLine.psi`
: Update code usages.
`com.intellij.application.options.editor.CodeFoldingConfigurable.applyCodeFoldingSettingsChanges()` method removed
: Use top-level method `CodeFoldingConfigurableKt.applyCodeFoldingSettingsChanges` instead.
`com.intellij.ide.bookmark.providers.LineBookmarkProvider.Companion` class removed
: Use `com.intellij.ide.bookmark.providers.LineBookmarkProvider.Util` instead.
`com.intellij.execution.process.mediator.util` package removed
: The sole extension method `Deferred.blockingGet()` contained in this package is an anti-pattern, and was not supposed to be exposed in the first place. The process mediator and the elevation service are now product modules, and no longer part of the platform.
`com.intellij.vcs.log.VcsLogFileHistoryHandler.getSupportedVcs()` abstract method added
: Must be implemented.
`com.intellij.vcs.log.VcsLogFileHistoryHandler.getHistoryFast(root: VirtualFile, filePath: FilePath, hash: Hash?, filters: VcsLogFilterCollection, commitCount: Int)` abstract method added
: Parameter `filters: VcsLogFilterCollection` was added to provide filtering capabilities to file history. Implement `com.intellij.vcs.log.VcsLogFileHistoryHandler.getSupportedFilters` to specify which filters are supported by this extension (currently, branch filter, revision filter and range filter are available).
`com.intellij.vcs.log.VcsLogFileHistoryHandler.collectHistory(root: VirtualFile, filePath: FilePath, hash: Hash?, filters: VcsLogFilterCollection, consumer)` abstract method added
: Parameter `filters: VcsLogFilterCollection` was added to provide filtering capabilities to file history. Implement `com.intellij.vcs.log.VcsLogFileHistoryHandler.getSupportedFilters` to specify which filters are supported by this extension (currently, branch filter, revision filter and range filter are available).
`org.apache.tools` package removed
: Please provide all necessary libraries in your plugin distribution.
`com.intellij.openapi.projectRoots.impl.ProjectJdkImpl.readExternal(Element, ProjectJdkTable)` method removed
: Use `com.intellij.openapi.projectRoots.impl.ProjectJdkImpl.readExternal(Element, Function)` instead.
`com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil.createSdk(Collection, String, SdkType, SdkAdditionalData, String)` method return type changed from `ProjectJdkImpl` to `Sdk`
: Update code usages.
`com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil.createSdk(Collection, VirtualFile, SdkType, SdkAdditionalData, String)` method return type changed from `ProjectJdkImpl` to `Sdk`
: Update code usages.
Class `com.intellij.diff.editor.DiffVirtualFile` now extends `com.intellij.diff.editor.DiffViewerVirtualFile` and inherits its abstract method `com.intellij.diff.editor.DiffViewerVirtualFile.createViewer(Project)`
: Update code usages.
`com.intellij.diff.tools.combined.CombinedDiffVirtualFile.getSourceId()` method removed
: Update code usages.
`com.intellij.diff.tools.combined.CombinedDiffModel` interface removed
: Use `com.intellij.diff.tools.combined.CombinedDiffModel` class instead.
`com.intellij.diff.tools.combined.CombinedDiffVirtualFile.createViewer(Project)` abstract method added
: Must be implemented.
`com.intellij.openapi.util.io.NioPathUtil.isAncestor(Path, Path, boolean)` method removed
: Use `Path.startsWith()` instead.
`com.intellij.util.CachedValueBase.setData(CachedValueBase.Data)` abstract method added
: Must be implemented.
`com.intellij.util.CachedValueBase.getRawData()` abstract method added
: Must be implemented.
Visibility of class `com.intellij.util.CachedValuesFactory` changed from public to internal
: The class is not supposed to be used directly.
`com.intellij.ui.popup.ActionPopupStep.performAction(AnAction, InputEvent)` method parameter type changed from `AnAction` to `ActionItem`
: Use `com.intellij.ui.popup.ActionPopupStep.performActionItem(ActionItem, InputEvent)` instead.
`com.intellij.openapi.actionSystem.AnAction.getTemplateText()` method marked final
: Use `AnAction.getTemplatePresentation().setText()` instead.
`com.intellij.openapi.actionSystem.ActionGroup.isPopup()` method marked final
: Use `ActionGroup.getTemplatePresentation().setPopupGroup(boolean)` instead.
`com.intellij.webcore.packaging.InstalledPackagesPanel.myInstallButton` field removed
: Use `InstalledPackagesPanel.myInstallEnabled` instead.
### UML Plugin 2024.1
`com.intellij.uml.core.actions.ShowDiagramBase.findProviders(AnActionEvent, DiagramProvider, BiFunction)` method removed
: Use `com.intellij.uml.core.actions.ShowDiagramBase.findProviders(DiagramProvider>, BiFunction super DiagramProvider>,? super DataContext,java.lang.Object>, DataContext)` instead.
### Java Plugin 2024.1
`com.intellij.lang.properties.RemovePropertyLocalFix` class removed
: Use `com.intellij.codeInsight.daemon.impl.quickfix.DeleteElementFix` instead.
### Django Plugin 2024.1
Package `com.jetbrains.jinja2` renamed to `com.intellij.jinja`
: Update code usages.
### Restructured Text Plugin 2024.1
`com.jetbrains.rest.RestLanguage` class moved to package `com.intellij.python.reStructuredText`
: Update code usages.
### GitHub Plugin 2024.1
`org.jetbrains.plugins.github.pullrequest.comment.GHPRDiffReviewSupport` class removed
: Migrated to MVVM.
`org.jetbrains.plugins.github.pullrequest.comment.GHPRDiffReviewSupport.Companion` class removed
: Migrated to MVVM.
`org.jetbrains.plugins.github.pullrequest.action.GHPRActionKeys.getPULL_REQUEST_DATA_PROVIDER()` method removed
: Migrated to MVVM, hidden implementation details.
### Kotlin Plugin 2024.1
`org.jetbrains.kotlin.ir.visitors.IrElementVisitor.visitInlinedFunctionBlock(inlinedFunctionBlock: IrInlinedFunctionBlock, data: D)` abstract method added
: Update code usages.
`org.jetbrains.kotlin.ir.visitors.IrElementVisitor.visitReturnableBlock(returnableBlock: IrReturnableBlock, data: D)` abstract method added
: Update code usages.
`org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid.visitInlinedFunctionBlock(inlinedFunctionBlock: IrInlinedFunctionBlock)` abstract method added
: Update code usages.
`org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid.visitInlinedFunctionBlock(inlinedFunctionBlock: IrInlinedFunctionBlock, data: Nothing?)` abstract method added
: Update code usages.
`org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid.visitReturnableBlock(returnableBlock: IrReturnableBlock)` abstract method added
: Update code usages.
`org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid.visitReturnableBlock(retunrableBlock: IrReturnableBlock, data: Nothing?)` abstract method added
: Update code usages.
`org.jetbrains.kotlin.fir.expressions.FirConstExpression` class renamed `org.jetbrains.kotlin.fir.expressions.FirLiteralExpression`
: Update code usages.
`org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.DELEGATE` class removed
: `org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.Companion.DELEGATE` should be used instead.
`org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.DELEGATED_MEMBER` class removed
: `org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.Companion.DELEGATED_MEMBER` should be used instead.
`org.jetbrains.kotlin.config.JvmDefaultMode.DEFAULT` field removed
: Use `org.jetbrains.kotlin.config.JvmDefaultMode.DISABLE`.
Method `org.jetbrains.kotlin.backend.common.lower.LocalDeclarationsLoweringKt.getParentsWithSelf(IrDeclaration)` renamed to `org.jetbrains.kotlin.ir.util.IrUtilsKt.getParentsWithSelf`
: Update code usages.
`org.jetbrains.kotlin.daemon.common.CompileService.Companion.getNO_SESSION()` method removed
: Use `org.jetbrains.kotlin.daemon.common.CompileService.NO_SESSION` const instead.
Class `org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl` made final
: Create a new `IrDeclarationOrigin` by delegation. See https://github.com/JetBrains/kotlin/blob/a3b55cf758f3a7ceb596f65507c2f61ada5266af/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt#L20.
`org.jetbrains.kotlin.idea.refactoring.introduce.extractFunction.ExtractKotlinFunctionHandlerKt` class removed
: Use `com.intellij.lang.refactoring.RefactoringSupportProvider.getExtractMethodHandler` instead to invoke Kotlin extract function refactoring
### Maven Plugin 2024.1
`org.jetbrains.idea.maven.indices.MavenIndex.getUpdateTimestamp()` method removed
: Use `org.jetbrains.idea.maven.indices.MavenIndexImpl.getUpdateTimestamp()` instead. `MavenIndex` is an obsolete interface now with `MavenIndexImpl` as the only implementation, consider using `MavenGAVIndex` to get information about available Maven GAV coordinates, or `MavenSearchIndex` to search Maven artifacts by content.
`org.jetbrains.idea.maven.indices.MavenIndex.getFailureMessage()` method removed
: Use `org.jetbrains.idea.maven.indices.MavenIndexImpl.getFailureMessage()` instead. `MavenIndex` is an obsolete interface now with `MavenIndexImpl` as the only implementation, consider using `MavenGAVIndex` to get information about available Maven GAV coordinates, or `MavenSearchIndex` to search Maven artifacts by content.
`org.jetbrains.idea.maven.indices.MavenIndex.getRepositoryPathOrUrl()` method removed
: Use `org.jetbrains.idea.maven.indices.MavenRepositoryIndex.getRepository().getUrl()` instead. Also, `MavenRepositoryInfo.getKind()` could be used to distinguish between local and remote repo.
`org.jetbrains.idea.maven.indices.MavenIndicesManager.scheduleUpdateContent(List, boolean)` method removed
: Use `org.jetbrains.idea.maven.indices.searcher.MavenLuceneIndexer.update(List, Boolean)` to update content for lucene indices. You should not care of GAV indices update.
`org.jetbrains.idea.maven.indices.MavenIndicesManager.scheduleUpdateIndicesList(Consumer)` method removed
: Use `org.jetbrains.idea.maven.indices.searcher.MavenIndicesManager.scheduleUpdateIndicesList()` to update an indices list for a specific project. To get all search indices for specific project use `MavenSystemIndicesManager.getClassIndexForRepository()`, you can get a list of all repositories with `MavenIndexUtils.getAllRepositories(Project)`.
### Database Plugin 2024.1
`com.intellij.database.datagrid.DataGrid.getLocalFilterState()` abstract method added
: Only recompilation is needed for classes that implement `DataGrid` and delegate calls to an actual `DataGrid` implementation.
`com.intellij.database.datagrid.DataGrid.getColumnAttributes()` abstract method added
: Only recompilation is needed for classes that implement `DataGrid` and delegate calls to an actual `DataGrid` implementation.
`com.intellij.sql.psi.SqlTableExpression.getSqlType()` method removed
: Use `getDasType()` instead
### HTTP Client Plugin 2024.1
`com.intellij.httpClient.actions.generation.RequestUrlContextInfo(requestContextData: RequestContextData)` constructor parameter removed
: Use `com.intellij.httpClient.actions.generation.RequestBody` and `com.intellij.httpClient.actions.generation.HttpRequestUrlPathInfo.Companion.create()` to describe a request body that will be coomputed lazily during the corresponding request generation.
### Markdown Plugin 2024.1
`org.intellij.plugins.markdown.ui.split` package removed
: Update code usages.
`org.intellij.plugins.markdown.ui.split.SplitTextEditorProvider` class removed
: Use `com.intellij.openapi.fileEditor.TextEditorWithPreviewProvider` instead.
### Python Plugin 2024.1
`com.jetbrains.extensions.ModuleExt` class moved to package `com.jetbrains.python.extensions`
: Update code usages.
`com.jetbrains.extensions.QualifiedNameExt` class moved to package `com.jetbrains.python.extensions`
: Update code usages.
`com.jetbrains.extensions.python.PyCallExpressionExt` class moved to package `com.jetbrains.python.extensions.python`
: Update code usages.
`com.jetbrains.extensions.python.FileChooserDescriptorExtKt` class moved to package `com.jetbrains.python.extensions`
: Update code usages.
`com.jetbrains.python.module.PythonModuleBuilder` class moved to package `com.intellij.python.community.plugin.java.facet`
: Update code usages.
`com.jetbrains.python.facet` package removed
: Private package is no longer available as an API.
`com.jetbrains.python.debugger.remote` package removed
: Private package is no longer available as an API.
`com.jetbrains.django.util.DjangoUtil` class removed
: Private class is no longer available as an API.
`com.jetbrains.django.testRunner` package removed
: Private package is no longer available as an API.
### JavaScript Plugin 2024.1
`com.intellij.lang.javascript.documentation.JSDocumentationProvider.generateDoc(PsiElement, PsiElement)` method marked final
: Override `com.intellij.lang.javascript.documentation.JSDocumentationProvider.generateDoc(PsiElement, PsiElement, Ref)` instead
### Rd Framework 2024.1
`com.jetbrains.rd.framework.IMarshaller.DefaultImpls.getId(IMarshaller)` method removed
: Due to `RdId` becoming a value class, the `getId` method is removed at runtime, causing unresolved method invocations. Use the method that returns long in Java and recompile the Kotlin code.
`com.jetbrains.rd.framework.RdId.write(AbstractBuffer)` method removed
: Due to `RdId` becoming a value class, the `getId` method is removed at runtime, causing unresolved method invocations. Use `AbstractBuffer.writeLong(long)` method in Java and recompile the Kotlin code.
`org.digma.intellij.plugin.rider.protocol.LensPerObjectId.getRdid()` method removed
: Due to `RdId` becoming a value class, the `getId` method is removed at runtime, causing unresolved method invocations. Use the method that returns `long` in Java and recompile the Kotlin code.
`com.jetbrains.rd.framework.RdId.Companion.read(AbstractBuffer)` method removed
: Due to `RdId` becoming a value class, the `getId` method is removed at runtime, causing unresolved method invocations. Use `AbstractBuffer.readLong()` method in Java and recompile the Kotlin code.
`com.jetbrains.rd.framework.base.RdBindableBaseKt.withId(RdBindableBase, RdId)` method removed
: Due to `RdId` becoming a value class, the `getId` method is removed at runtime, causing unresolved method invocations. Use `withId(RdBindableBase, long)` method in Java and recompile the Kotlin code.
### Properties Plugin 2024.1
Added method parameter `Property` to `com.intellij.lang.properties.PropertiesQuickFixFactory.createRemovePropertyLocalFix()`
: Supply the property that the fix should be applied for.