[java] Add extension for providing contract support in library plugins

#IDEA-366120

GitOrigin-RevId: 5d684047c2d75b09435e4d4c883a4ef3b94222f3
This commit is contained in:
Bart van Helvert
2025-02-17 11:33:19 +01:00
committed by intellij-monorepo-bot
parent be7a9adbcd
commit df5df7e45f
3 changed files with 27 additions and 1 deletions

View File

@@ -0,0 +1,6 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.codeInspection.dataFlow
class JbContractAnnotationProvider : JvmContractAnnotationProvider {
override val fqn: String = "org.jetbrains.annotations.Contract"
}

View File

@@ -0,0 +1,18 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.codeInspection.dataFlow
import com.intellij.openapi.extensions.ExtensionPointName
interface JvmContractAnnotationProvider {
val fqn: String
companion object {
private val EP_NAME: ExtensionPointName<JvmContractAnnotationProvider> =
ExtensionPointName.Companion.create<JvmContractAnnotationProvider>("com.intellij.codeInsight.contractProvider")
@JvmStatic
fun qualifiedNames(): List<String> {
return EP_NAME.extensionList.map { it.fqn }
}
}
}

View File

@@ -39,6 +39,7 @@
</projectListeners>
<extensionPoints>
<extensionPoint qualifiedName="com.intellij.codeInsight.contractProvider" interface="com.intellij.codeInspection.dataFlow.JvmContractAnnotationProvider" dynamic="true"/>
<extensionPoint qualifiedName="com.intellij.methodImplementor" interface="com.intellij.codeInsight.MethodImplementor" dynamic="true"/>
<extensionPoint qualifiedName="com.intellij.javaExpressionSurrounder"
interface="com.intellij.codeInsight.generation.surroundWith.JavaExpressionSurrounder" dynamic="true"/>
@@ -1039,7 +1040,7 @@
order="last, after NestingTreeStructureProvider"/>
<importFilteringRule implementation="com.intellij.usages.impl.rules.ImportFilteringRule"/>
<usageContextPanelProvider implementation="com.intellij.usageView.UsageContextDataflowFromPanel$Provider"/>
<usageContextPanelProvider implementation="com.intellij.usageView.UsageContextDataflowToPanel$Provider"/>
<usageContextPanelProvider implementation="com.intellij.usageView.UsageContextDataflowToPanel$Provider"/>\
<usageTypeProvider implementation="com.intellij.usages.impl.rules.JavaUsageTypeProvider"/>
<fileStructureGroupRuleProvider implementation="com.intellij.usages.impl.rules.JavaClassGroupRuleProvider"/>
<fileStructureGroupRuleProvider implementation="com.intellij.usages.impl.rules.JavaMethodGroupRuleProvider"/>
@@ -2762,6 +2763,7 @@
<registryKey defaultValue="false" description="Suggested refactoring from call-site in Java"
key="ide.java.refactoring.suggested.call.site"/>
<dataflowIRProvider language="JAVA" implementationClass="com.intellij.codeInspection.dataFlow.java.JavaDataFlowIRProvider"/>
<codeInsight.contractProvider implementation="com.intellij.codeInspection.dataFlow.JbContractAnnotationProvider"/>
<java.effectively.final.fixer implementation="com.intellij.codeInsight.daemon.impl.quickfix.makefinal.MoveInitializerToIfBranchFixer"/>
<java.effectively.final.fixer implementation="com.intellij.codeInspection.streamMigration.ConvertToStreamFixer"/>
<postStartupActivity implementation="com.intellij.ide.FileNotInSourceRootChecker"/>