List of known Breaking API Changes in 2020.*
com.intellij.openapi.application.NonBlockingReadAction.finishOnUiThread
method parameter type changed from Consumer<T>
to Consumer<? super T>
: This may break source-compatibility with inheritors written in Kotlin.
com.intellij.openapi.diagnostic.ErrorReportSubmitter.submit
method parameter type changed from Consumer<SubmittedReportInfo>
to Consumer<? super SubmittedReportInfo>
: This may break source-compatibility with inheritors written in Kotlin.
com.intellij.execution.ui.ConsoleView.attachToProcess
method ProcessHandler
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.util.indexing.FileContentImpl(VirtualFile, byte[])
constructor removed
: Constructors of FileContentImpl
were replaced with factory methods, use FileContentImpl#createByContent(VirtualFile, byte[])
.
com.intellij.spellchecker.quickfixes.ChangeTo(String)
constructor removed
: Replaced with ChangeTo(String, PsiElement, TextRange)
.
com.intellij.spellchecker.tokenizer.SpellcheckingStrategy.getDefaultRegularFixes(boolean, String, PsiElement)
method removed
: Replaced with SpellcheckingStrategy.getDefaultRegularFixes(boolean, String, PsiElement, TextRange)
.
com.intellij.psi.stubs.IStubElementType.createStub
method parameter type changed from StubElement
to StubElement<?>
: This may break source-compatibility with inheritors written in Kotlin.
com.intellij.execution.application.ApplicationConfiguration.isSwingInspectorEnabled()
method removed
: The Swing Inspector functionality has been removed from the product.
com.intellij.execution.application.ApplicationConfiguration.setSwingInspectorEnabled(boolean)
method removed
: The Swing Inspector functionality has been removed from the product.
show.swing.inspector
property removed from resource bundle messages.ExecutionBundle
: The Swing Inspector functionality has been removed from the product.
show.swing.inspector.disabled
property removed from resource bundle messages.ExecutionBundle
: The Swing Inspector functionality has been removed from the product.
The PSI structure of multi-dimensional arrays in Java source files changed (see com.intellij.psi.PsiTypeElement
)
: Now the children are flattened: brackets for all the dimensions are direct children of the PsiTypeElement
that represent the multi-dimensional array. This change doesn't break source or binary compatibility but may produce behavioral changes in the code that traverses the tree of Java source files.
The com.intellij.psi.PsiAnnotation.getOwner
method now returns PsiType
instead of PsiTypeElement
for type annotations in Java source files
: This change supports identifying whether a type annotation is attached to an inner class or a particular dimension of a multi-dimensional array.
This change doesn't break source or binary compatibility but may produce behavioral changes for callers.
Added PHP 8 support : See Breaking Changes in PhpStorm 2020.3.
All parameters in com.jetbrains.python.psi.PyElementVisitor
marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin.
com.jetbrains.python.parsing.ParsingContext(SyntaxTreeBuilder, LanguageLevel, StatementParsing.FUTURE)
method parameter StatementParsing.FUTURE
removed
: It is no longer used in parsing.
com.jetbrains.python.parsing.StatementParsing(ParsingContext, StatementParsing.FUTURE)
method parameter StatementParsing.FUTURE
removed
: It is no longer used in parsing.
com.jetbrains.python.parsing.StatementParsing.FUTURE
class removed
: Use com.jetbrains.python.psi.FutureFeature
instead.
com.jetbrains.python.sdk.PythonSdkUpdater.updateOrShowError(Sdk, SdkModificator, Project, Component)
method parameter SdkModificator
removed
: It was not processed carefully, it should be enough to pass editable SDK instead.
python.sdk.interpreter.field.is.empty
property removed from resource bundle messages.PyBundle
: Use python.sdk.field.is.empty
from messages.PySdkBundle
instead.
base.interpreter
property removed from resource bundle messages.PyBundle
: Use python.venv.base.label
from messages.PySdkBundle
instead.
interpreter
property removed from resource bundle messages.PyBundle
: Use python.interpreter.label
from messages.PySdkBundle
instead.
com.jetbrains.python.psi.LanguageLevel.hasWithStatement()
method removed
: It is true
for all supported python versions.
Required changes in project setup : When targeting 2020.3, please see this migration guide.
Support for JavaFX deprecated : Plugins should migrate to JCEF. Alternatively, add an explicit dependency on JavaFX Runtime for Plugins.
com.intellij.psi.util.PsiTreeUtil.processElements(element, processor)
method parameter type changed from PsiElementProcessor
to PsiElementProcessor<PsiElement>
: This may break source-compatibility with clients that pass a more specific processor. Passing a more specific processor was illegal before because the processElements
passes every descendant PsiElement
to the processor regardless of its type. However, this worked with some poorly written clients, e.g. PsiElementProcessor.CollectFilteredElements
and PsiElementProcessor.FindFilteredElement
(both deprecated now). To simplify the migration, a new three-arg processElements(element, elementClass, processor)
is introduced that filters by element class. In most cases, the simplest migration would be to add a wanted element class as a second argument. However, it's advised to use SyntaxTraverser
API instead, which is more rich and flexible.
com.maddyhome.idea.copyright.util.FileTypeUtil.getFileTypeByName(String)
method removed
: This was an internal utility method not intended for use in plugins. Use FileTypeManager.getInstance().findFileTypeByName()
instead.
javassist
package removed
: Javassist library was removed, bundle it with your plugin instead.
com.intellij.compiler.backwardRefs.LanguageCompilerRefAdapter.INSTANCES
field removed
: This field leaked instances of plugin's extensions on plugin unloading. Use com.intellij.compiler.backwardRefs.LanguageCompilerRefAdapter#EP_NAME.getExtensionList()
directly instead.
groovy.util.AntBuilder
class removed
: Add org.codehaus.groovy:groovy-ant
dependency.
groovy.util.GroovyTestCase
class removed
: Add org.codehaus.groovy:groovy-test
dependency.
groovy.util.GroovyTestSuite
class removed
: Add org.codehaus.groovy:groovy-test
dependency.
groovy.json.internal
package removed
: Use classes from org.apache.groovy.json.internal
package.
com.intellij.openapi.externalSystem.service.execution.TaskCompletionProvider(Project, ProjectSystemId, TextAccessor, Options)
constructor parameter type changed from groovyjarjarcommonscli.Options
to org.apache.commons.cli.Options
: Update inheritors accordingly.
org.jetbrains.plugins.gradle.service.execution.cmd.GradleCommandLineOptionsProvider.getSupportedOptions()
method return type changed from groovyjarjarcommonscli.Options
to org.apache.commons.cli.Options
: Update call sites accordingly.
com.intellij.openapi.editor.markup.MarkupModel.addLineHighlighter(TextAttributesKey, int, int)
abstract method added
: Use it instead of MarkupModel.addLineHighlighter(int, int, TextAttributes)
.
com.intellij.openapi.editor.markup.MarkupModel.addRangeHighlighter(TextAttributesKey, int, int, int, HighlighterTargetArea)
abstract method added
: Use it instead of MarkupModel.addRangeHighlighter(int, int, int, TextAttributes, HighlighterTargetArea)
.
com.intellij.codeInsight.daemon.LineMarkerProvider.getLineMarkerInfo
method return type changed from LineMarkerInfo
to LineMarkerInfo<?>
: This may break source-compatibility with inheritors written in Kotlin.
com.intellij.codeInsight.daemon.LineMarkerProvider.collectSlowLineMarkers
method parameter type changed from List<PsiElement>
to List<? extends PsiElement>
: This may break source-compatibility with inheritors written in Kotlin.
com.intellij.codeInsight.daemon.LineMarkerProvider.collectSlowLineMarkers
method parameter type changed from List<PsiElement>
to Collection<? super LineMarkerInfo<?>>
: This may break source-compatibility with inheritors written in Kotlin.
com.intellij.util.indexing.FileBasedIndex.FileTypeSpecificInputFilter.registerFileTypesUsedForIndexing
method parameter type changed from Consumer<FileType>
to Consumer<? super FileType>
: This may break source-compatibility with inheritors written in Kotlin.
com.intellij.psi.impl.include.FileIncludeProvider.registerFileTypesUsedForIndexing
method parameter type changed from Consumer<FileType>
to Consumer<? super FileType>
: This may break source-compatibility with inheritors written in Kotlin.
com.intellij.codeInsight.highlighting.HighlightUsagesHandlerBase.selectTargets
method parameter type changed from List<T>
to List<? extends T>
: This may break source-compatibility with inheritors written in Kotlin.
com.intellij.codeInsight.highlighting.HighlightUsagesHandlerBase.selectTargets
method parameter type changed from Consumer<List<? extends T>>
to Consumer<? super List<? extends T>>
: This may break source-compatibility with inheritors written in Kotlin.
com.intellij.codeInsight.highlighting.HighlightUsagesHandlerBase.computeUsages
method parameter type changed from List<T>
to List<? extends T>
: This may break source-compatibility with inheritors written in Kotlin.
com.intellij.pom.java.LanguageLevel.JDK_13_PREVIEW
field removed
: Please remove the plugin code supporting Java 13 language level features.
IntelliJ IDEA supports preview features of the latest Java release and one upcoming release (if available).
com.intellij.diff.util.DiffUserDataKeysEx.REVISION_INFO
field removed
: Use com.intellij.diff.DiffVcsDataKeys.REVISION_INFO
instead.
com.intellij.codeInsight.actions.FormatChangedTextUtil.getChangedElements(Project, Change[], Function)
method removed
: Use com.intellij.codeInsight.actions.VcsFacadeImpl.getVcsInstance().getChangedElements(...)
instead.
org.jetbrains.plugins.github.util.LazyCancellableBackgroundProcessValue(ProgressManager)
constructor removed
: Required for more tight control of task scheduling. Use org.jetbrains.plugins.github.util.LazyCancellableBackgroundProcessValue.Companion#create(ProgressManager, (ProgressIndicator) -> T)
instead of subclassing.
org.jetbrains.plugins.github.util.LazyCancellableBackgroundProcessValue.compute(ProgressIndicator)
method return type changed from T
to CompletableFuture<T>
: Required for more tight control of task scheduling. Use org.jetbrains.plugins.github.util.LazyCancellableBackgroundProcessValue.Companion#create(ProgressManager, (ProgressIndicator) -> T)
instead of subclassing.
org.jetbrains.plugins.github.pullrequest.ui.GHCompletableFutureLoadingModel()
constructor removed
: Model was made disposable and it is now required to pass parent disposable in constructor.
org.jetbrains.plugins.github.util.GithubGitHelper.getPossibleRemoteUrlCoordinates()
method removed
: Use org.jetbrains.plugins.github.util.GHProjectRepositoriesManager.getKnownRepositories()
instead.
org.jetbrains.plugins.groovy.formatter.AlignmentProvider.addPair
method parameter type changed from Boolean
to boolean
: Please adjust/recompile the code.
Java EE plugins split
: Plugin com.intellij.javaee
Java EE: EJB, JPA, Servlets has been split to:
com.inteellij.javaee
Java EE Platform - main plugin other JavaEE/Jakarta plugins depend oncom.intellij.javaee.app.servers.integration
Java EE: Application Servers Integrationcom.intellij.javaee.ejb
Java EE: Enterprise Java Beans (EJB)com.intellij.javaee.jpa
Java EE: JPAcom.intellij.javaee.web
Java EE: Web/Servlets
com.intellij.lang.javascript.linter.jslint
package removed
: JSLint functionality has been unbundled and moved to a separate plugin. Issue
Added Union Types Support : See Breaking Changes in PhpStorm 2020.2.
org.jetbrains.kotlin.idea.core.formatter.KotlinCodeStyleSettings.PACKAGES_TO_USE_STAR_IMPORTS
field type changed from PackageEntryTable
to KotlinPackageEntryTable
: This change was required to implement import layout order for Kotlin. KotlinPackageEntryTable
can be used in the same manner as PackageEntryTable
.
com.jetbrains.python.PythonDialectsTokenSetProvider.INSTANCE
field removed
: PythonDialectsTokenSetProvider
became an application service, use PythonDialectsTokenSetProvider.getInstance()
instead.
com.jetbrains.python.psi.PyUtil.getLanguageLevelForVirtualFile(Project, VirtualFile)
method removed
: Use PythonLanguageLevelPusher.getLanguageLevelForVirtualFile(Project, VirtualFile)
instead.
com.intellij.compiler.ant
package removed
: 'Generate Ant build' functionality is removed from the IDE. Delete the code extending this or replace it with a dependency on the generate-ant
plugin.
org.jetbrains.jps.incremental.ModuleLevelBuilder.getCompilableFileExtensions
marked abstract
: Implement it in ModuleLevelBuilder
's implementation.
com.intellij.codeInsight.TargetElementUtilBase
class removed
: Use com.intellij.codeInsight.TargetElementUtil
instead.
com.intellij.psi.stubs.PrebuiltStubsProviderBase
class now extends com.intellij.index.PrebuiltIndexProvider
and inherits its abstract method getIndexRoot()
: Use com.intellij.psi.stubs.PlatformPrebuiltStubsProviderBase
instead.
com.intellij.psi.PsiElementVisitor.visitElement
method PsiElement
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.psi.PsiElementVisitor.visitFile
method PsiFile
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.psi.PsiElementVisitor.visitBinaryFile
method PsiBinaryFile
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.psi.PsiElementVisitor.visitPlainTextFile
method PsiPlainTextFile
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.psi.PsiElementVisitor.visitErrorElement
method PsiErrorElement
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.psi.PsiElementVisitor.visitPlainText
method PsiPlainText
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.psi.PsiElementVisitor.visitDirectory
method PsiDirectory
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.psi.PsiElementVisitor.visitComment
method PsiComment
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.psi.PsiElementVisitor.visitWhiteSpace
method PsiWhiteSpace
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.psi.PsiElementVisitor.visitOuterLanguageElement
method OuterLanguageElement
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.codeInspection.unused.ImplicitPropertyUsageProvider.isUsed
method Property
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.lang.ReadOnlyASTNode
class removed
: Use com.intellij.testFramework.ReadOnlyLightVirtualFile
-based PSI instead.
Java code migrated to use TYPE_USE
nullability annotations
: In rare cases existing Kotlin code might become uncompilable due to some problems in the Kotlin compiler: if a method is used or overridden, and is written in Java, and returns an array annotated as @Nullable
or @NotNull
.
com.intellij.navigation.ChooseByNameContributorEx.processNames
method parameter type changed from Processor<String>
to Processor<? extends String>
: This may break source-compatibility with inheritors written in Kotlin.
com.intellij.navigation.ChooseByNameContributorEx.processElementsWithName
method parameter type changed from Processor<NavigationItem>
to Processor<? extends NavigationItem>
: This may break source-compatibility with inheritors written in Kotlin.
Images module functionality (package org.intellij.images.*
) extracted to plugin
: The dependency must be declared explicitly now by the <depends>
element:
-
Add
<depends>com.intellij.platform.images</depends>
in plugin.xml -
Add to build.gradle:
intellij { plugins = ['platform-images'] }
-
If your plugin depends on other plugins using
com.intellij.platform.images
(e.g., CSS), please make sure to usegradle-intellij-plugin
>=0.4.19
com.jetbrains.python.psi.PyCallExpression.PyMarkedCallee
class removed
: Use com.jetbrains.python.psi.types.PyCallableType
instead.
com.jetbrains.python.psi.PyCallExpression.multiResolveCallee
method return type changed from List<PyMarkedCallee>
to List<PyCallableType>
: Use com.jetbrains.python.psi.types.PyCallableType
instead of com.jetbrains.python.psi.PyCallExpression.PyMarkedCallee
.