Incompatible Changes in IntelliJ Platform and Plugins API 2020.*
Please see Incompatible API Changes on how to verify compatibility.
2020.2
Changes in IntelliJ Platform 2020.2
com.intellij.psi.util.PsiTreeUtil.processElements(element, processor)
method parameter type changed fromPsiElementProcessor
toPsiElementProcessor<PsiElement>
- This may break source-compatibility with clients that pass more specific processor. Passing more specific processor was illegal before as well because the
processElements
passes every descendantPsiElement
to the processor regardless of its type. However, this worked with some poorly written clients, e.g.PsiElementProcessor.CollectFilteredElements
andPsiElementProcessor.FindFilteredElement
(both deprecated now). To simplify the migration, a new three-argprocessElements(element, elementClass, processor)
is introduced that actually filters by element class, so in most cases, the simplest migration would be to add a wanted element class as a second argument. However, it’s advised to useSyntaxTraverser
API instead, which is more rich and flexible.
2020.1
Changes in IntelliJ Platform 2020.1
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 extendscom.intellij.index.PrebuiltIndexProvider
and inherits its abstract methodgetIndexRoot()
- Use
com.intellij.psi.stubs.PlatformPrebuiltStubsProviderBase
instead. com.intellij.psi.PsiElementVisitor.visitElement
methodPsiElement
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
methodPsiFile
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
methodPsiBinaryFile
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
methodPsiPlainTextFile
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
methodPsiErrorElement
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
methodPsiPlainText
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
methodPsiDirectory
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
methodPsiComment
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
methodPsiWhiteSpace
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
methodOuterLanguageElement
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
methodProperty
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 - Due to some problems in Kotlin compiler existing Kotlin code might become incompilable in rare cases if a method written in Java returning an array and annotated as
@Nullable
or@NotNull
is used or overridden. com.intellij.navigation.ChooseByNameContributorEx.processNames
method parameter type changed fromProcessor<String>
toProcessor<? extends String>
- This may break source-compatibility with inheritors written in Kotlin.
com.intellij.navigation.ChooseByNameContributorEx.processElementsWithName
method parameter type changed fromProcessor<NavigationItem>
toProcessor<? 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:
- Add
<depends>com.intellij.platform.images</depends>
inplugin.xml
- Add to
build.gradle
:intellij { plugins = ['platform-images'] }
- Add
Changes in Python plugin 2020.1
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 fromList<PyMarkedCallee>
toList<PyCallableType>
- Use
com.jetbrains.python.psi.types.PyCallableType
instead ofcom.jetbrains.python.psi.PyCallExpression.PyMarkedCallee
.
Last modified: 25 March 2020