Incompatible Changes in IntelliJ Platform and Plugins API 2021.*
Edit pageLast modified: 07 August 2024Please see Verifying Plugin Compatibility on how to use Plugin Verifier and IDE inspections to check such problems.
Early Access Program (EAP) releases of upcoming versions are available here.
note
Non-listed changesChanges from API marked with
@Deprecated(forRemoval=true)
or any ofApiStatus
@Experimental
,@ScheduledForRemoval
, or@Internal
are not listed here, as incompatible changes are to be expected.For API annotated with
@ApiStatus.Internal
/@IntellijInternalApi
, see Internal API Migration for more details and replacements.
note
2021.3
IntelliJ Platform 2021.3
- Running tests fails with
jarFiles is not set for [...]
orCreated extension classloader is not equal to plugin's one
Set system property
idea.force.use.core.classloader
totrue
.- Running tests fails using Gradle setup
Please use workarounds.
com.intellij.ui.mac.MacMessages.showMessageDialog(String, String, String[], boolean, Window, int, int, DialogWrapper.DoNotAskOption)
method removedUse
com.intellij.ui.mac.MacMessages.showMessageDialog(String, String, String[], boolean, Window, int, int, DoNotAskOption)
instead.com.intellij.openapi.ui.MessageDialogBuilder.doNotAsk(DialogWrapper.DoNotAskOption)
method removedUse
com.intellij.openapi.ui.MessageDialogBuilder.doNotAsk(DoNotAskOption)
instead.com.intellij.ide.util.projectWizard.WizardContext.getWizard()
method removedUse
com.intellij.ide.util.projectWizard.WizardContext.getUserData(AbstractWizard.KEY)
instead.com.intellij.openapi.ui.TextComponentAccessor.TEXT_FIELD_WITH_HISTORY_WHOLE_TEXT
field removedUse
com.intellij.openapi.ui.TextComponentAccessors.TEXT_FIELD_WITH_HISTORY_WHOLE_TEXT
instead.com.intellij.execution.process.ColoredOutputTypeRegistry.getAnsiColorKey(int)
method removedUse
com.intellij.execution.process.ColoredOutputTypeRegistryImpl.getAnsiColorKey(int)
instead.com.intellij.diagnostic.PerformanceWatcher.Snapshot
class now interfaceRecompile the dependant code or use
com.intellij.diagnostic.PerformanceWatcherImpl.SnapshotImpl
instead.com.intellij.openapi.fileEditor.impl.EditorTabPresentationUtil.getEditorTabTitle(Project, VirtualFile, EditorWindow)
method parameterEditorWindow
removedThis parameter was never needed, but led to code coupling.
com.intellij.openapi.fileEditor.impl.EditorTabPresentationUtil.getUniqueEditorTabTitle(Project, VirtualFile, EditorWindow)
method parameterEditorWindow
removedThis parameter was never needed, but led to code coupling.
com.intellij.openapi.fileEditor.impl.EditorTabTitleProvider.getEditorTabTitle(Project, VirtualFile, EditorWindow)
method parameterEditorWindow
removedThis parameter was never needed, but led to code coupling.
- Constructor
com.intellij.codeInsight.hints.settings.InlayProviderSettingsModel
changed Added
Language
parameter.com.intellij.codeInsight.hints.settings.InlayProviderSettingsModel.getDescription()
abstract method addedProvides short description.
com.intellij.codeInsight.hints.settings.InlayProviderSettingsModel.getCaseDescription(ImmediateConfigurable.Case)
abstract method addedProvides description text for given case.
com.intellij.codeInsight.hints.settings.InlayProviderSettingsModel.getCasePreview(ImmediateConfigurable.Case)
abstract method addedProvides preview text for given case.
com.intellij.openapi.wm.ToolWindow.getEmptyText()
method removedPlease safe-cast and use
com.intellij.openapi.wm.ex.ToolWindowEx.getEmptyText()
.
VCS Log 2021.3
Git Plugin 2021.3
Python Plugin 2021.3
com.jetbrains.python.console.PydevConsoleRunnerImpl(Project, Sdk, PyConsoleType, String, Map<String, String>, PyConsoleOptions.PyConsoleSettings, Consumer<? super String>, String[])
constructor parameter typecom.intellij.util.Consumer<? super String>
removedThere is no need to pass a Restart action as a constructor parameter, it should be created inside the
com.jetbrains.python.console.PydevConsoleRunnerImpl#createRerunAction
method
IntelliJ IDEA Ultimate 2021.3
Miscellaneous
Expression Language (EL) / JSP
Expression Language (EL) was extracted from com.intellij.jsp
("Java Server Pages (JSP)") plugin to new com.intellij.javaee.el
(Java EE: Expression Language (EL)) plugin. com.intellij.jsp
has mandatory dependency on com.intellij.javaee.el
. 10+ Ultimate plugins (Spring, Java EE, Frameworks) now have optional dependency on com.intellij.javaee.el
plugin (mandatory dependency to com.intellij.jsp
was removed).
com.intellij.jsp.el.impl.ELResolveUtil.VariableInfoData
class renamed tocom.intellij.jsp.el.impl.JspELResolveUtil.VariableInfoData
To support dynamic plugins.
com.intellij.jsp.el.impl.ELResolveUtil
class renamed tocom.intellij.javaee.el.util.ELResolveUtil
Use new class from
com.intellij.javaee.el
plugin instead orcom.intellij.jsp.el.impl.JspELResolveUtil
fromcom.intellij.jsp
plugin.com.intellij.jsp.el.impl.ELElementProcessor
class renamed tocom.intellij.javaee.el.ELElementProcessor
Use new class from
com.intellij.javaee.el
plugin instead.com.intellij.psi.jsp.el.ELElementTypes
class renamed tocom.intellij.javaee.el.psi.ELElementTypes
Use new class from
com.intellij.javaee.el
plugin instead.com.intellij.psi.jsp.el.ELLiteralExpression
class renamed tocom.intellij.javaee.el.psi.ELLiteralExpression
Use new class from
com.intellij.javaee.el
plugin instead.com.intellij.psi.jsp.el.ELElementType
class renamed tocom.intellij.javaee.el.psi.ELElementType
Use new class from
com.intellij.javaee.el
plugin instead.com.intellij.psi.jsp.el.ELExpressionHolder
class renamed tocom.intellij.javaee.el.psi.ELExpressionHolder
Use new class from
com.intellij.javaee.el
plugin instead.com.intellij.jsp.el.impl.ElVariablesProvider
class renamed tocom.intellij.javaee.el.providers.ElVariablesProvider
Use new class from
com.intellij.javaee.el
plugin instead.com.intellij.psi.jsp.el.ELVariable
class renamed tocom.intellij.javaee.el.psi.ELVariable
Use new class from
com.intellij.javaee.el
plugin instead.
Persistence
Application Servers
Various package renames to support dynamic plugins
Old package name | New package name |
---|---|
|
|
|
|
|
|
|
|
com.intellij.javaee.deployment.DeploymentModel
class renamed tocom.intellij.javaee.appServers.deployment.DeploymentModel
To support dynamic plugins.
com.intellij.javaee.deployment.DeploymentSource
class renamed tocom.intellij.javaee.appServers.deployment.DeploymentSource
To support dynamic plugins.
com.intellij.javaee.deployment.DeploymentProvider
class renamed tocom.intellij.javaee.appServers.deployment.DeploymentProvider
To support dynamic plugins.
com.intellij.javaee.openapi.ex.AppServerIntegrationsManager
class renamed tocom.intellij.javaee.appServers.openapi.ex.AppServerIntegrationsManager
To support dynamic plugins.
com.intellij.javaee.appServerIntegrations.AppServerIntegration
class renamed tocom.intellij.javaee.appServers.appServerIntegrations.AppServerIntegration
To support dynamic plugins.
com.intellij.javaee.appServerIntegrations.ApplicationServerPersistentData
class renamed tocom.intellij.javaee.appServers.appServerIntegrations.ApplicationServerPersistentData
To support dynamic plugins.
com.intellij.javaee.facet.JavaeeFrameworkSupportInfoCollector
class renamed tocom.intellij.javaee.appServers.facet.JavaeeFrameworkSupportInfoCollector
To support dynamic plugins.
com.intellij.javaee.appServerIntegrations.ApplicationServer
class renamed tocom.intellij.javaee.appServers.appServerIntegrations.ApplicationServer
To support dynamic plugins.
com.intellij.javaee.appServerIntegrations.ApplicationServerHelper
class renamed tocom.intellij.javaee.appServers.appServerIntegrations.ApplicationServerHelper
To support dynamic plugins.
com.intellij.javaee.serverInstances.J2EEServerInstance
class renamed tocom.intellij.javaee.appServers.serverInstances.J2EEServerInstance
To support dynamic plugins.
Database Plugin 2021.3
2021.2
IntelliJ Platform 2021.2
com.intellij.openapi.editor.impl.event.DocumentEventImpl.translateLineViaDiff(int)
method removedUse persistent range markers instead, see
com.intellij.openapi.editor.Document.createRangeMarker(int, int, boolean)
withsurviveOnExternalChange=true
.com.intellij.openapi.editor.impl.event.DocumentEventImpl.translateLineViaDiffStrict(int)
method removedUse persistent range markers instead, see
com.intellij.openapi.editor.Document.createRangeMarker(int, int, boolean)
withsurviveOnExternalChange=true
.com.intellij.openapi.file.exclude.EnforcedPlainTextFileType
class removedUse
com.intellij.openapi.fileTypes.PlainTextFileType
instead.com.intellij.openapi.updateSettings.impl.CheckForUpdateResult
class removedUse
com.intellij.openapi.updateSettings.impl.PlatformUpdates
instead.com.intellij.openapi.updateSettings.impl.UpdateStrategy.checkForUpdates()
method return type changed fromcom.intellij.openapi.updateSettings.impl.CheckForUpdateResult
tocom.intellij.openapi.updateSettings.impl.PlatformUpdates
Use
com.intellij.openapi.updateSettings.impl.PlatformUpdates
instead ofcom.intellij.openapi.updateSettings.impl.CheckForUpdateResult
.com.intellij.openapi.updateSettings.impl.pluginsAdvertisement.PluginsAdvertiser.Plugin
class removedUse
com.intellij.ide.plugins.advertiser.PluginData
instead.com.intellij.ide.plugins.DisabledPluginsState.disablePlugin(PluginId)
method removedUse either
com.intellij.ide.plugins.PluginManagerCore.disablePlugin(PluginId)
orcom.intellij.ide.plugins.PluginEnabler.disablePlugins(Collection)
instead.com.intellij.ide.plugins.PluginManagerMain.suggestToEnableInstalledDependantPlugins(PluginEnabler, List)
method parameter type changed fromcom.intellij.ide.plugins.PluginManagerMain.PluginEnabler
tocom.intellij.ide.plugins.PluginEnabler
com.intellij.ide.plugins.PluginManagerMain.PluginEnabler
has been renamed tocom.intellij.ide.plugins.PluginEnabler
.com.intellij.ssh.ui.unified.SshConfigConfigurable.Visibility
class removedUse
com.intellij.ssh.ui.unified.SshConfigVisibility
instead.com.intellij.ssh.ui.unified.SshConfigComboBox.reload(PresentableId, SshConfigConfigurable.Visibility)
method parameter type changed fromcom.intellij.ssh.ui.unified.SshConfigConfigurable.Visibility
tocom.intellij.ssh.ui.unified.SshConfigVisibility
SshConfigConfigurable.Visibility
has been renamed toSshConfigVisibility
.com.intellij.ssh.ui.unified.SshConfigComboBox(Project, Disposable, SshConfigConfigurable.Visibility)
constructor parameter type changed fromcom.intellij.ssh.ui.unified.SshConfigConfigurable.Visibility
tocom.intellij.ssh.ui.unified.SshConfigVisibility
SshConfigConfigurable.Visibility
has been renamed toSshConfigVisibility
.org.jetbrains.uast.UAnnotated.getAnnotations()
method removedUse
org.jetbrains.uast.UAnnotated.getUAnnotations()
instead.org.jetbrains.uast.UAnnotated.getUAnnotations()
marked abstractPreviously this circularly referenced
org.jetbrains.uast.UAnnotated.getAnnotations()
, which has been removed.
Performance Testing Plugin 2021.2
Database Plugin 2021.2
GitHub Plugin 2021.2
org.jetbrains.plugins.github.util.GithubAuthData
class removedUse
org.jetbrains.plugins.github.authentication.GithubAuthenticationManager
instead.org.jetbrains.plugins.github.util.GithubAuthData$BasicAuth
class removedUse
org.jetbrains.plugins.github.authentication.GithubAuthenticationManager
instead.org.jetbrains.plugins.github.util.GithubSettings.getAuthData(GithubAuthData)
method removedUse
org.jetbrains.plugins.github.authentication.GithubAuthenticationManager
instead.
Spring Plugin 2021.2
Python Plugin 2021.2.1
com.jetbrains.python.psi.types.PyTypedDictType.Companion.match(PyTypedDictType, PyDictLiteralExpression, TypeEvalContext)
method removedAs the result of the refactoring aimed at fixing PY-48799, for dict literals containing only string keys we infer
PyTypedDictType
now, so there's no need to match dict literals withTypedDict
s. There's a new method for comparing the inferredTypedDict
s with the given ones:com.jetbrains.python.psi.types.PyTypedDictType.Companion.match(PyType, PyTypedDictType, TypeEvalContext)
.
2021.1
IntelliJ Platform 2021.1
com.intellij.util.io.PersistentHashMap.isCorrupted
method removedThe storage checks for corruption automatically, there is no need of any explicit additional checks.
com.intellij.lang.StdLanguages.JSPX
field removedAdd a dependency on the
com.intellij.jsp
plugin and replace the reference withcom.intellij.lang.jspx.JspxLanguageImpl.INSTANCE
.com.intellij.lang.StdLanguages.JSP
field removedAdd a dependency on the
com.intellij.jsp
plugin and replace the reference withcom.intellij.lang.jsp.NewJspLanguage.getInstance()
.com.intellij.ide.actions.searcheverywhere.SEResultsEqualityProvider.compareItems(alreadyFoundItem)
method parameter type changed fromSearchEverywhereFoundElementInfo
toList<SearchEverywhereFoundElementInfo>
New API is more abstract which allows to review all already found items before making "deduplication" decision. Also consider implementing
com.intellij.ide.actions.searcheverywhere.AbstractEqualityProvider
instead ofcom.intellij.ide.actions.searcheverywhere.SEResultsEqualityProvider
.com.intellij.ide.actions.searcheverywhere.SEResultsEqualityProvider.SEEqualElementsActionType.SKIP
field removedEnum class
SEEqualElementsActionType
was converted to sealed class with the same name.com.intellij.ide.actions.searcheverywhere.SEResultsEqualityProvider.SEEqualElementsActionType.DO_NOTHING
field removedEnum class
SEEqualElementsActionType
was converted to sealed class with the same name.com.intellij.ide.actions.searcheverywhere.SEResultsEqualityProvider.SEEqualElementsActionType.Replace
field removedEnum class
SEEqualElementsActionType
was converted to sealed class with the same name.org.sqlite.SQLiteConfig.setBusyTimeout(String)
method parameter type changed fromString
toint
Please use updated sqlite-jdbc API.
com.intellij.usages.impl.rules.UsageTypeProvider.getUsageType
methodPsiElement
parameter marked@NotNull
This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.jetbrains.performancePlugin.CommandProvider.getCommands(Project)
method parameterProject
removedProject is now only accessible via
com.intellij.openapi.ui.playback.PlaybackContext.getProject()
since it may change during script execution.- JSON Widget suppressor
com.intellij.json.jsonWidgetSuppressor
EP Override new method
JsonWidgetSuppressor.isCandidateForSuppress(VirtualFile, Project)
for quick check in EDT beforesuppressSwitcherWidget()
is called on a background thread.
HTTP Client Plugin 2021.1
Java UML Plugin 2021.1
Rename of packages to .java.
specific variants
Old package name | New package name |
---|---|
|
|
|
|
|
|
Kotlin Plugin 2021.1
org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinChangeInfo(KotlinMethodDescriptor, String, KotlinTypeInfo, Visibility, List, KotlinParameterInfo, PsiElement, Collection)
constructor parameter type changed fromorg.jetbrains.kotlin.descriptors.Visibility
toorg.jetbrains.kotlin.descriptors.DescriptorVisibility
Visibility
has been renamed toDescriptorVisibility
.
Go Plugin 2021.1
CoffeeScript Plugin 2021.1
Thanks for your feedback!