mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[gradle] IDEA-357140 Migrate Gradle Java Plugin descriptors to V2: properties module
GitOrigin-RevId: ac7bb2e345150f6d60c5d261ad98619ed4a8c871
This commit is contained in:
committed by
intellij-monorepo-bot
parent
dd70705bfb
commit
d1a52976a3
Generated
+1
@@ -465,6 +465,7 @@
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/gradle/java/groovy/toml/intellij.gradle.java.groovy.toml.iml" filepath="$PROJECT_DIR$/plugins/gradle/java/groovy/toml/intellij.gradle.java.groovy.toml.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/gradle-maven/intellij.gradle.java.maven.iml" filepath="$PROJECT_DIR$/plugins/gradle-maven/intellij.gradle.java.maven.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/gradle/java/performance/intellij.gradle.java.performance.iml" filepath="$PROJECT_DIR$/plugins/gradle/java/performance/intellij.gradle.java.performance.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/gradle/java/properties/intellij.gradle.java.properties.iml" filepath="$PROJECT_DIR$/plugins/gradle/java/properties/intellij.gradle.java.properties.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/gradle/java/intellij.gradle.java.tests.iml" filepath="$PROJECT_DIR$/plugins/gradle/java/intellij.gradle.java.tests.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/gradle/java/toml/intellij.gradle.java.toml.iml" filepath="$PROJECT_DIR$/plugins/gradle/java/toml/intellij.gradle.java.toml.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/gradle/jps-plugin/intellij.gradle.jps.iml" filepath="$PROJECT_DIR$/plugins/gradle/jps-plugin/intellij.gradle.jps.iml" />
|
||||
|
||||
@@ -1002,6 +1002,7 @@ plugins/gradle/java/groovy
|
||||
plugins/gradle/java/groovy/ml
|
||||
plugins/gradle/java/groovy/toml
|
||||
plugins/gradle/java/performance
|
||||
plugins/gradle/java/properties
|
||||
plugins/gradle/java/toml
|
||||
plugins/gradle/jps-plugin
|
||||
plugins/gradle/kotlin/tests
|
||||
|
||||
@@ -53,8 +53,6 @@ jvm_library(
|
||||
"//libraries/xstream",
|
||||
"//plugins/groovy/groovy-psi:psi",
|
||||
"//java/execution/openapi:java-execution",
|
||||
"//plugins/properties/properties-psi-api:psi",
|
||||
"//plugins/properties/properties-psi-impl:backend-psi",
|
||||
"//jps/model-impl",
|
||||
"//platform/statistics",
|
||||
"//platform/core-ui",
|
||||
@@ -73,6 +71,7 @@ jvm_library(
|
||||
"//java/debugger/shared",
|
||||
"//platform/eel-provider",
|
||||
"//platform/execution",
|
||||
"//plugins/properties/properties-psi-impl:backend-psi",
|
||||
],
|
||||
exports = ["//plugins/gradle:gradle-common"],
|
||||
runtime_deps = ["@lib//ant/lib:ant"]
|
||||
@@ -172,6 +171,7 @@ jvm_library(
|
||||
"//plugins/gradle/java/toml",
|
||||
"//plugins/gradle/java/groovy",
|
||||
"//plugins/gradle/java/groovy/toml",
|
||||
"//plugins/gradle/java/properties",
|
||||
],
|
||||
runtime_deps = [":java-tests"]
|
||||
)
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.intellij.psi.OriginInfoAwareElement
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleArtifactHandlerContributor
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleDependencyHandlerContributor
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionProperty
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionsContributor
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionsContributorUtil
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleGroovyProperty
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleNamedDomainCollectionContributor
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleTaskContainerContributor
|
||||
@@ -22,7 +22,7 @@ class GradleGroovyElementFeatureProvider : ElementFeatureProvider {
|
||||
ARTIFACT_HANDLER(GradleArtifactHandlerContributor.ARTIFACTS_ORIGIN_INFO),
|
||||
DEPENDENCY_NOTATION(GradleDependencyHandlerContributor.DEPENDENCY_NOTATION),
|
||||
USER_CONTRIBUTED_PROPERTY(GradleGroovyProperty.EXTENSION_PROPERTY),
|
||||
PROPERTIES_FILE_PROPERTY(GradleExtensionsContributor.PROPERTIES_FILE_ORIGINAL_INFO),
|
||||
PROPERTIES_FILE_PROPERTY(GradleExtensionsContributorUtil.PROPERTIES_FILE_ORIGINAL_INFO),
|
||||
NAMED_DOMAIN_DECLARATION(GradleNamedDomainCollectionContributor.NAMED_DOMAIN_DECLARATION),
|
||||
GRADLE_CONTRIBUTED_PROPERTY(GradleExtensionProperty.GRADLE_EXTENSION_PROPERTY),
|
||||
TASK_METHOD(GradleTaskContainerContributor.GRADLE_TASK_INFO),
|
||||
|
||||
@@ -49,8 +49,6 @@
|
||||
<orderEntry type="module" module-name="intellij.libraries.xstream" />
|
||||
<orderEntry type="module" module-name="intellij.groovy.psi" />
|
||||
<orderEntry type="module" module-name="intellij.java.execution" />
|
||||
<orderEntry type="module" module-name="intellij.properties.psi" />
|
||||
<orderEntry type="module" module-name="intellij.properties.backend.psi" />
|
||||
<orderEntry type="module" module-name="intellij.platform.jps.model.impl" />
|
||||
<orderEntry type="module" module-name="intellij.platform.statistics" />
|
||||
<orderEntry type="module" module-name="intellij.platform.core.ui" />
|
||||
@@ -69,5 +67,6 @@
|
||||
<orderEntry type="module" module-name="intellij.java.debugger.impl.shared" />
|
||||
<orderEntry type="module" module-name="intellij.platform.eel.provider" />
|
||||
<orderEntry type="module" module-name="intellij.platform.execution" />
|
||||
<orderEntry type="module" module-name="intellij.properties.backend.psi" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -68,5 +68,6 @@
|
||||
<orderEntry type="module" module-name="intellij.gradle.java.toml" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.gradle.java.groovy" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.gradle.java.groovy.toml" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.gradle.java.properties" scope="TEST" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,34 @@
|
||||
### auto-generated section `build intellij.gradle.java.properties` start
|
||||
load("@rules_jvm//:jvm.bzl", "jvm_library", "resourcegroup")
|
||||
|
||||
resourcegroup(
|
||||
name = "properties_resources",
|
||||
srcs = glob(["resources/**/*"]),
|
||||
strip_prefix = "resources"
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "properties",
|
||||
module_name = "intellij.gradle.java.properties",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["src/**/*.kt", "src/**/*.java", "src/**/*.form"], allow_empty = True),
|
||||
resources = [":properties_resources"],
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"@lib//:jetbrains-annotations",
|
||||
"//plugins/properties/properties-psi-api:psi",
|
||||
"//plugins/properties/properties-psi-impl:backend-psi",
|
||||
"//plugins/gradle/java",
|
||||
"//platform/core-api:core",
|
||||
"//platform/core-impl",
|
||||
"//platform/util",
|
||||
"//platform/analysis-api:analysis",
|
||||
"//platform/indexing-api:indexing",
|
||||
"//plugins/groovy/groovy-psi:psi",
|
||||
"//java/java-psi-api:psi",
|
||||
"//java/java-psi-impl:psi-impl",
|
||||
"//platform/util:util-ui",
|
||||
"//platform/projectModel-api:projectModel",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build intellij.gradle.java.properties` end
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="com.intellij.gradle.java.properties" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="kotlin-stdlib" level="project" />
|
||||
<orderEntry type="library" name="jetbrains-annotations" level="project" />
|
||||
<orderEntry type="module" module-name="intellij.properties.psi" />
|
||||
<orderEntry type="module" module-name="intellij.properties.backend.psi" />
|
||||
<orderEntry type="module" module-name="intellij.gradle.java" />
|
||||
<orderEntry type="module" module-name="intellij.platform.core" />
|
||||
<orderEntry type="module" module-name="intellij.platform.core.impl" />
|
||||
<orderEntry type="module" module-name="intellij.platform.util" />
|
||||
<orderEntry type="module" module-name="intellij.platform.analysis" />
|
||||
<orderEntry type="module" module-name="intellij.platform.indexing" />
|
||||
<orderEntry type="module" module-name="intellij.groovy.psi" />
|
||||
<orderEntry type="module" module-name="intellij.java.psi" />
|
||||
<orderEntry type="module" module-name="intellij.java.psi.impl" />
|
||||
<orderEntry type="module" module-name="intellij.platform.util.ui" />
|
||||
<orderEntry type="module" module-name="intellij.platform.projectModel" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,26 @@
|
||||
<idea-plugin>
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<referencesSearch implementation="com.intellij.gradle.java.properties.findUsages.GradlePropertyReferencesSearcher"/>
|
||||
<properties.implicitPropertyUsageProvider implementation="com.intellij.gradle.java.properties.findUsages.GradleImplicitPropertyUsageProvider"/>
|
||||
|
||||
<localInspection language="Properties" groupPath="Gradle" shortName="LatestMinorVersion"
|
||||
bundle="messages.GradleInspectionBundle"
|
||||
key="inspection.display.name.latest.minor.version" groupKey="inspection.best.practises"
|
||||
groupBundle="messages.GradleInspectionBundle"
|
||||
enabledByDefault="true" level="WARNING"
|
||||
implementationClass="org.jetbrains.plugins.gradle.codeInspection.GradleLatestMinorVersionInspection"
|
||||
isInternal="true"/>
|
||||
|
||||
<localInspection language="UAST" groupPath="Gradle" shortName="RedundantKotlinStdLibDependency"
|
||||
bundle="messages.GradleInspectionBundle"
|
||||
key="inspection.display.name.redundant.kotlin.std.lib.dependency" groupKey="inspection.best.practises"
|
||||
groupBundle="messages.GradleInspectionBundle"
|
||||
enabledByDefault="true" level="WARNING"
|
||||
implementationClass="com.intellij.gradle.java.properties.codeInspection.GradleRedundantKotlinStdLibInspection"
|
||||
isInternal="true"/>
|
||||
</extensions>
|
||||
|
||||
<extensions defaultExtensionNs="org.intellij.groovy">
|
||||
<membersContributor implementation="com.intellij.gradle.java.properties.service.GradleExtensionsContributor"/>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
+6
-5
@@ -1,11 +1,12 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.gradle.codeInspection
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.gradle.java.properties.codeInspection
|
||||
|
||||
import com.intellij.codeInspection.LocalInspectionTool
|
||||
import com.intellij.codeInspection.ProblemsHolder
|
||||
import com.intellij.gradle.java.properties.util.gradlePropertiesStream
|
||||
import com.intellij.psi.PsiElementVisitor
|
||||
import com.intellij.psi.PsiFile
|
||||
import org.jetbrains.plugins.gradle.service.resolve.gradlePropertiesStream
|
||||
import org.jetbrains.plugins.gradle.codeInspection.GradleDslInspectionProvider
|
||||
|
||||
class GradleRedundantKotlinStdLibInspection : LocalInspectionTool() {
|
||||
override fun isAvailableForFile(file: PsiFile): Boolean {
|
||||
@@ -16,13 +17,13 @@ class GradleRedundantKotlinStdLibInspection : LocalInspectionTool() {
|
||||
if (kotlinStdlibDefaultDependencyProp == "false") return false
|
||||
|
||||
val language = file.language
|
||||
val inspectionProvider = GradleDslInspectionProvider.INSTANCE.forLanguage(language) ?: return false
|
||||
val inspectionProvider = GradleDslInspectionProvider.Companion.INSTANCE.forLanguage(language) ?: return false
|
||||
return inspectionProvider.isRedundantKotlinStdLibInspectionAvailable(file)
|
||||
}
|
||||
|
||||
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor {
|
||||
val language = holder.file.language
|
||||
val inspectionProvider = GradleDslInspectionProvider.INSTANCE.forLanguage(language) ?: return PsiElementVisitor.EMPTY_VISITOR
|
||||
val inspectionProvider = GradleDslInspectionProvider.Companion.INSTANCE.forLanguage(language) ?: return PsiElementVisitor.EMPTY_VISITOR
|
||||
return inspectionProvider.getRedundantKotlinStdLibInspectionVisitor(holder, isOnTheFly)
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -1,11 +1,11 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.gradle.findUsages
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.gradle.java.properties.findUsages
|
||||
|
||||
import com.intellij.lang.properties.codeInspection.unused.ImplicitPropertyUsageProvider
|
||||
import com.intellij.lang.properties.psi.PropertiesFile
|
||||
import com.intellij.lang.properties.psi.Property
|
||||
import com.intellij.util.asSafely
|
||||
import org.jetbrains.plugins.gradle.service.resolve.gradlePropertiesStream
|
||||
import com.intellij.gradle.java.properties.util.gradlePropertiesStream
|
||||
|
||||
class GradleImplicitPropertyUsageProvider : ImplicitPropertyUsageProvider {
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.gradle.findUsages;
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.gradle.java.properties.findUsages;
|
||||
|
||||
import com.intellij.lang.properties.psi.Property;
|
||||
import com.intellij.openapi.application.QueryExecutorBase;
|
||||
+19
-37
@@ -1,45 +1,46 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.gradle.service.resolve
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.gradle.java.properties.service
|
||||
|
||||
import com.intellij.gradle.java.properties.util.gradlePropertiesStream
|
||||
import com.intellij.icons.AllIcons
|
||||
import com.intellij.lang.properties.IProperty
|
||||
import com.intellij.openapi.roots.ProjectFileIndex
|
||||
import com.intellij.psi.CommonClassNames
|
||||
import com.intellij.psi.JavaPsiFacade
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiClassType
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiElementFactory
|
||||
import com.intellij.psi.PsiSubstitutor
|
||||
import com.intellij.psi.PsiType
|
||||
import com.intellij.psi.ResolveState
|
||||
import com.intellij.psi.scope.PsiScopeProcessor
|
||||
import com.intellij.psi.util.InheritanceUtil
|
||||
import icons.GradleIcons
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleCommonClassNames.GRADLE_API_PROJECT
|
||||
import org.jetbrains.plugins.gradle.settings.GradleExtensionsSettings
|
||||
import org.jetbrains.plugins.gradle.settings.GradleExtensionsSettings.GradleExtensionsData
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleCommonClassNames
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionsContributorUtil
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionsContributorUtil.Companion.PROPERTIES_FILE_ORIGINAL_INFO
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionsContributorUtil.Companion.getExtensionsFor
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleGroovyProperty
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleProjectAwareType
|
||||
import org.jetbrains.plugins.gradle.service.resolve.getAccessorsForAllCatalogs
|
||||
import org.jetbrains.plugins.gradle.service.resolve.getVersionCatalogAccessor
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightField
|
||||
import org.jetbrains.plugins.groovy.lang.resolve.NonCodeMembersContributor
|
||||
import org.jetbrains.plugins.groovy.lang.resolve.api.GroovyPropertyBase
|
||||
import org.jetbrains.plugins.groovy.lang.resolve.getName
|
||||
import org.jetbrains.plugins.groovy.lang.resolve.processors.inference.type
|
||||
import org.jetbrains.plugins.groovy.lang.resolve.shouldProcessProperties
|
||||
import javax.swing.Icon
|
||||
|
||||
@ApiStatus.Internal
|
||||
class GradleExtensionsContributor : NonCodeMembersContributor() {
|
||||
|
||||
override fun getClassNames(): Collection<String> {
|
||||
return listOf(GradleCommonClassNames.GRADLE_API_EXTRA_PROPERTIES_EXTENSION, GRADLE_API_PROJECT)
|
||||
return listOf(GradleCommonClassNames.GRADLE_API_EXTRA_PROPERTIES_EXTENSION, GradleCommonClassNames.GRADLE_API_PROJECT)
|
||||
}
|
||||
|
||||
override fun processDynamicElements(qualifierType: PsiType,
|
||||
aClass: PsiClass?,
|
||||
processor: PsiScopeProcessor,
|
||||
place: PsiElement,
|
||||
state: ResolveState) {
|
||||
state: ResolveState
|
||||
) {
|
||||
if (qualifierType !is GradleProjectAwareType && !InheritanceUtil.isInheritor(qualifierType, GradleCommonClassNames.GRADLE_API_EXTRA_PROPERTIES_EXTENSION)) return
|
||||
if (!processor.shouldProcessProperties()) return
|
||||
val file = place.containingFile
|
||||
@@ -64,7 +65,8 @@ class GradleExtensionsContributor : NonCodeMembersContributor() {
|
||||
private fun processPropertiesFromFile(aClass: PsiClass?,
|
||||
processor: PsiScopeProcessor,
|
||||
place: PsiElement,
|
||||
state: ResolveState) : Set<String> {
|
||||
state: ResolveState
|
||||
) : Set<String> {
|
||||
if (aClass == null) {
|
||||
return emptySet()
|
||||
}
|
||||
@@ -104,47 +106,27 @@ class GradleExtensionsContributor : NonCodeMembersContributor() {
|
||||
return newProperty
|
||||
}
|
||||
|
||||
|
||||
class StaticVersionCatalogProperty(place: PsiElement, name: String, val clazz: PsiClass) : GroovyPropertyBase(name, place) {
|
||||
override fun getPropertyType(): PsiType {
|
||||
return PsiElementFactory.getInstance(project).createType(clazz, PsiSubstitutor.EMPTY)
|
||||
}
|
||||
|
||||
override fun getIcon(flags: Int): Icon? {
|
||||
return GradleIcons.Gradle
|
||||
}
|
||||
}
|
||||
|
||||
fun processPropertiesFromCatalog(name: String?, place: PsiElement, processor: PsiScopeProcessor, state: ResolveState) : Set<String>? {
|
||||
if (name == null) {
|
||||
// this case is possible when only a part of a catalog name is written and autocomplete is triggered
|
||||
return processAllCatalogsOfBuild(place, processor, state)
|
||||
}
|
||||
val accessor = getVersionCatalogAccessor(place, name) ?: return emptySet()
|
||||
val element = StaticVersionCatalogProperty(place, name, accessor)
|
||||
val element = GradleExtensionsContributorUtil.Companion.StaticVersionCatalogProperty(place, name, accessor)
|
||||
if (!processor.execute(element, state)) {
|
||||
return null // to stop processing
|
||||
}
|
||||
return setOf(name)
|
||||
}
|
||||
|
||||
fun getExtensionsFor(psiElement: PsiElement): GradleExtensionsData? {
|
||||
val project = psiElement.project
|
||||
val virtualFile = psiElement.containingFile?.originalFile?.virtualFile ?: return null
|
||||
val module = ProjectFileIndex.getInstance(project).getModuleForFile(virtualFile)
|
||||
return GradleExtensionsSettings.getInstance(project).getExtensionsFor(module)
|
||||
}
|
||||
|
||||
const val PROPERTIES_FILE_ORIGINAL_INFO : String = "by gradle.properties"
|
||||
|
||||
private fun processAllCatalogsOfBuild(place: PsiElement, processor: PsiScopeProcessor, state: ResolveState): Set<String>? {
|
||||
val catalogNameToAccessor: Map<String, PsiClass> = getAccessorsForAllCatalogs(place)
|
||||
catalogNameToAccessor.forEach { (catalogName, accessor) ->
|
||||
if (!processor.execute(StaticVersionCatalogProperty(place, catalogName, accessor), state)) {
|
||||
if (!processor.execute(GradleExtensionsContributorUtil.Companion.StaticVersionCatalogProperty(place, catalogName, accessor), state)) {
|
||||
return null // to stop processing
|
||||
}
|
||||
}
|
||||
return catalogNameToAccessor.keys
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+8
-2
@@ -1,13 +1,15 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.gradle.service.resolve
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.gradle.java.properties.util
|
||||
|
||||
import com.intellij.lang.properties.psi.PropertiesFile
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.util.PsiUtilCore
|
||||
import com.intellij.util.asSafely
|
||||
import org.jetbrains.plugins.gradle.properties.GradlePropertiesFile
|
||||
import org.jetbrains.plugins.gradle.service.resolve.module
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants.GRADLE_PROPERTIES_FILE_NAME
|
||||
import java.nio.file.Path
|
||||
|
||||
@@ -21,3 +23,7 @@ private fun Path.getGradlePropertiesFile(project: Project): PropertiesFile? {
|
||||
val file = VfsUtil.findFile(this, false)?.findChild(GRADLE_PROPERTIES_FILE_NAME)
|
||||
return file?.let { PsiUtilCore.getPsiFile(project, it) }.asSafely<PropertiesFile>()
|
||||
}
|
||||
|
||||
internal fun PsiElement.getRootGradleProjectPath() : String? {
|
||||
return ExternalSystemApiUtil.getExternalRootProjectPath(module)
|
||||
}
|
||||
@@ -98,7 +98,6 @@
|
||||
<membersContributor implementation="org.jetbrains.plugins.gradle.service.resolve.GradleArtifactHandlerContributor"/>
|
||||
<membersContributor implementation="org.jetbrains.plugins.gradle.service.resolve.GradleTaskContainerContributor"/>
|
||||
<membersContributor implementation="org.jetbrains.plugins.gradle.service.resolve.GradleNamedDomainCollectionContributor"/>
|
||||
<membersContributor implementation="org.jetbrains.plugins.gradle.service.resolve.GradleExtensionsContributor"/>
|
||||
<membersContributor implementation="org.jetbrains.plugins.gradle.service.resolve.GradleExtensionMembersContributor"/>
|
||||
<callTypeCalculator implementation="org.jetbrains.plugins.gradle.service.resolve.GradleProjectCallTypeCalculator"/>
|
||||
<callTypeCalculator implementation="org.jetbrains.plugins.gradle.service.resolve.GradleArtifactCallTypeCalculator"/>
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
<idea-plugin>
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<referencesSearch implementation="org.jetbrains.plugins.gradle.findUsages.GradlePropertyReferencesSearcher"/>
|
||||
<properties.implicitPropertyUsageProvider implementation="org.jetbrains.plugins.gradle.findUsages.GradleImplicitPropertyUsageProvider"/>
|
||||
|
||||
<localInspection language="Properties" groupPath="Gradle" shortName="LatestMinorVersion"
|
||||
bundle="messages.GradleInspectionBundle"
|
||||
key="inspection.display.name.latest.minor.version" groupKey="inspection.best.practises"
|
||||
groupBundle="messages.GradleInspectionBundle"
|
||||
enabledByDefault="true" level="WARNING"
|
||||
implementationClass="org.jetbrains.plugins.gradle.codeInspection.GradleLatestMinorVersionInspection"
|
||||
isInternal="true"/>
|
||||
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
@@ -18,7 +18,6 @@
|
||||
<module value="org.jetbrains.plugins.gradle.java"/>
|
||||
|
||||
<depends optional="true" config-file="gradle-groovy-integration.xml">org.intellij.groovy</depends>
|
||||
<depends optional="true" config-file="gradle-properties-integration.xml">com.intellij.properties</depends>
|
||||
|
||||
<content namespace="jetbrains">
|
||||
<module name="intellij.gradle.profiler"/>
|
||||
@@ -31,6 +30,7 @@
|
||||
<module name="intellij.gradle.java.groovy.toml"/>
|
||||
<module name="intellij.gradle.java.groovy.ml"/>
|
||||
<module name="intellij.gradle.java.coverage"/>
|
||||
<module name="intellij.gradle.java.properties"/>
|
||||
</content>
|
||||
|
||||
<resource-bundle>messages.GradleInspectionBundle</resource-bundle>
|
||||
@@ -177,12 +177,5 @@
|
||||
implementationClass="org.jetbrains.plugins.gradle.codeInspection.GradleAvoidDependencyNamedArgumentsNotationInspection"
|
||||
isInternal="true"/>
|
||||
|
||||
<localInspection language="UAST" groupPath="Gradle" shortName="RedundantKotlinStdLibDependency"
|
||||
bundle="messages.GradleInspectionBundle"
|
||||
key="inspection.display.name.redundant.kotlin.std.lib.dependency" groupKey="inspection.best.practises"
|
||||
groupBundle="messages.GradleInspectionBundle"
|
||||
enabledByDefault="true" level="WARNING"
|
||||
implementationClass="org.jetbrains.plugins.gradle.codeInspection.GradleRedundantKotlinStdLibInspection"
|
||||
isInternal="true"/>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
|
||||
@@ -46,7 +46,7 @@ interface GradleDslInspectionProvider {
|
||||
fun getAvoidDependencyNamedArgumentsNotationInspectionVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor
|
||||
|
||||
/**
|
||||
* @see GradleRedundantKotlinStdLibInspection
|
||||
* @see com.intellij.gradle.java.properties.codeInspection.GradleRedundantKotlinStdLibInspection
|
||||
*/
|
||||
fun isRedundantKotlinStdLibInspectionAvailable(file: PsiFile): Boolean
|
||||
fun getRedundantKotlinStdLibInspectionVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor
|
||||
|
||||
+2
-2
@@ -7,7 +7,7 @@ import com.intellij.codeInspection.ProblemsHolder
|
||||
import com.intellij.util.containers.map2Array
|
||||
import org.jetbrains.plugins.gradle.codeInspection.GradleInspectionBundle
|
||||
import org.jetbrains.plugins.gradle.service.resolve.DECLARATION_ALTERNATIVES
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionsContributor
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionsContributorUtil
|
||||
import org.jetbrains.plugins.groovy.intentions.GrReplaceMethodCallQuickFix
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyElementVisitor
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression
|
||||
@@ -19,7 +19,7 @@ class GroovyDeprecatedConfigurationInspectionVisitor(val holder: ProblemsHolder)
|
||||
val resolved = referenceExpression.resolve() ?: return
|
||||
val alternatives = resolved.getUserData(DECLARATION_ALTERNATIVES)?.takeIf { it.isNotEmpty() } ?: return
|
||||
|
||||
val knownConfigurations = GradleExtensionsContributor.getExtensionsFor(referenceExpression)?.configurations?.keys ?: emptyList()
|
||||
val knownConfigurations = GradleExtensionsContributorUtil.getExtensionsFor(referenceExpression)?.configurations?.keys ?: emptyList()
|
||||
|
||||
val descriptor = InspectionManager.getInstance(referenceExpression.project)
|
||||
.createProblemDescriptor(
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.intellij.util.lazyPub
|
||||
import org.jetbrains.plugins.gradle.codeInspection.groovy.DelegationHierarchy
|
||||
import org.jetbrains.plugins.gradle.codeInspection.groovy.getDelegationHierarchy
|
||||
import org.jetbrains.plugins.gradle.codeInspection.groovy.getDelegationSourceCaller
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionsContributor
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionsContributorUtil
|
||||
import org.jetbrains.plugins.groovy.lang.completion.api.GroovyCompletionConsumer
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightField
|
||||
import kotlin.math.absoluteValue
|
||||
@@ -33,7 +33,7 @@ class GradleCompletionConsumer(position: PsiElement, val delegate: GroovyComplet
|
||||
GradleLookupWeigher.setGradleCompletionPriority(newElement, GradleLookupWeigher.DEFAULT_COMPLETION_PRIORITY - 1)
|
||||
delegate.consume(newElement)
|
||||
}
|
||||
else if (psi is GrLightField && psi.originInfo == GradleExtensionsContributor.PROPERTIES_FILE_ORIGINAL_INFO) {
|
||||
else if (psi is GrLightField && psi.originInfo == GradleExtensionsContributorUtil.PROPERTIES_FILE_ORIGINAL_INFO) {
|
||||
val property = psi.navigationElement.asSafely<IProperty>() ?: return delegate.consume(element)
|
||||
val value = property.value
|
||||
val newElement = element.modify { withTailText("=$value").withTypeText(psi.type.presentableText, true) }
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ import com.intellij.util.asSafely
|
||||
import org.jetbrains.plugins.gradle.service.project.CommonGradleProjectResolverExtension
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleCommonClassNames
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionProperty
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionsContributor.Companion.StaticVersionCatalogProperty
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleExtensionsContributorUtil.Companion.StaticVersionCatalogProperty
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||
import org.jetbrains.plugins.gradle.util.getCapitalizedAccessorName
|
||||
import org.jetbrains.plugins.groovy.intentions.style.inference.resolve
|
||||
|
||||
@@ -33,7 +33,7 @@ class GradleArtifactHandlerContributor : NonCodeMembersContributor() {
|
||||
if (clazz == null) return
|
||||
if (!processor.shouldProcessMethods()) return
|
||||
|
||||
val data = GradleExtensionsContributor.getExtensionsFor(place) ?: return
|
||||
val data = GradleExtensionsContributorUtil.getExtensionsFor(place) ?: return
|
||||
val methodName = processor.getName(state)
|
||||
val manager = place.manager
|
||||
val objectVarargType = PsiEllipsisType(getJavaLangObject(place))
|
||||
|
||||
@@ -39,7 +39,7 @@ class GradleDependencyHandlerContributor : NonCodeMembersContributor() {
|
||||
if (clazz == null) return
|
||||
if (!processor.shouldProcessMethods()) return
|
||||
|
||||
val data = GradleExtensionsContributor.getExtensionsFor(place) ?: return
|
||||
val data = GradleExtensionsContributorUtil.getExtensionsFor(place) ?: return
|
||||
val methodName = processor.getName(state)
|
||||
val manager = place.manager
|
||||
val objectVarargType = PsiEllipsisType(TypesUtil.getJavaLangObject(place))
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.gradle.service.resolve
|
||||
|
||||
import com.intellij.openapi.roots.ProjectFileIndex
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiElementFactory
|
||||
import com.intellij.psi.PsiSubstitutor
|
||||
import com.intellij.psi.PsiType
|
||||
import icons.GradleIcons
|
||||
import org.jetbrains.plugins.gradle.settings.GradleExtensionsSettings
|
||||
import org.jetbrains.plugins.groovy.lang.resolve.api.GroovyPropertyBase
|
||||
import javax.swing.Icon
|
||||
|
||||
class GradleExtensionsContributorUtil {
|
||||
companion object {
|
||||
const val PROPERTIES_FILE_ORIGINAL_INFO : String = "by gradle.properties"
|
||||
|
||||
fun getExtensionsFor(psiElement: PsiElement): GradleExtensionsSettings.GradleExtensionsData? {
|
||||
val project = psiElement.project
|
||||
val virtualFile = psiElement.containingFile?.originalFile?.virtualFile ?: return null
|
||||
val module = ProjectFileIndex.getInstance(project).getModuleForFile(virtualFile)
|
||||
return GradleExtensionsSettings.getInstance(project).getExtensionsFor(module)
|
||||
}
|
||||
|
||||
class StaticVersionCatalogProperty(place: PsiElement, name: String, val clazz: PsiClass) : GroovyPropertyBase(name, place) {
|
||||
override fun getPropertyType(): PsiType {
|
||||
return PsiElementFactory.getInstance(project).createType(clazz, PsiSubstitutor.EMPTY)
|
||||
}
|
||||
|
||||
override fun getIcon(flags: Int): Icon? {
|
||||
return GradleIcons.Gradle
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -43,7 +43,7 @@ class GradleProjectExtensionContributor : NonCodeMembersContributor() {
|
||||
}
|
||||
|
||||
val containingFile = place.containingFile
|
||||
val extensionsData = GradleExtensionsContributor.getExtensionsFor(containingFile) ?: return
|
||||
val extensionsData = GradleExtensionsContributorUtil.getExtensionsFor(containingFile) ?: return
|
||||
|
||||
val name = processor.getName(state)
|
||||
val allExtensions = extensionsData.extensions
|
||||
|
||||
@@ -26,7 +26,7 @@ class GradleProjectMembersContributor : NonCodeMembersContributor() {
|
||||
|
||||
if (qualifierType !is GradleProjectAwareType) return
|
||||
val file = place.containingFile ?: return
|
||||
val extensionsData = GradleExtensionsContributor.getExtensionsFor(file) ?: return
|
||||
val extensionsData = GradleExtensionsContributorUtil.getExtensionsFor(file) ?: return
|
||||
for (convention in extensionsData.conventions) {
|
||||
if (!createType(convention.typeFqn, file).processReceiverType(processor, state, place)) {
|
||||
return
|
||||
|
||||
@@ -40,7 +40,7 @@ class GradleTaskContainerContributor : NonCodeMembersContributor() {
|
||||
}
|
||||
|
||||
val file = place.containingFile ?: return
|
||||
val data = GradleExtensionsContributor.getExtensionsFor(file) ?: return
|
||||
val data = GradleExtensionsContributorUtil.getExtensionsFor(file) ?: return
|
||||
|
||||
val name = processor.getName(state)
|
||||
val gradleProjectType = JavaPsiFacade.getInstance(place.project).findClass(GradleCommonClassNames.GRADLE_API_PROJECT,
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
package org.jetbrains.plugins.gradle.service.resolve
|
||||
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.roots.ProjectFileIndex
|
||||
import com.intellij.openapi.util.Key
|
||||
import com.intellij.patterns.PatternCondition
|
||||
@@ -37,15 +38,11 @@ internal fun PsiClass?.isResolvedInGradleScript() = this is GroovyScriptClass &&
|
||||
|
||||
internal fun PsiFile?.isGradleScript() = this?.originalFile?.virtualFile?.extension == EXTENSION
|
||||
|
||||
private val PsiElement.module get() = containingFile?.originalFile?.virtualFile?.let {
|
||||
ProjectFileIndex.getInstance(project).getModuleForFile(it)
|
||||
}
|
||||
@get:ApiStatus.Internal
|
||||
val PsiElement.module: Module?
|
||||
get() = containingFile?.originalFile?.virtualFile?.let { ProjectFileIndex.getInstance(project).getModuleForFile(it) }
|
||||
|
||||
@ApiStatus.Internal
|
||||
fun PsiElement.getLinkedGradleProjectPath() : String? {
|
||||
return ExternalSystemApiUtil.getExternalProjectPath(module)
|
||||
}
|
||||
|
||||
internal fun PsiElement.getRootGradleProjectPath() : String? {
|
||||
return ExternalSystemApiUtil.getExternalRootProjectPath(module)
|
||||
}
|
||||
+1
-1
@@ -1,8 +1,8 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.gradle.dsl.inspections
|
||||
|
||||
import com.intellij.gradle.java.properties.codeInspection.GradleRedundantKotlinStdLibInspection
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.plugins.gradle.codeInspection.GradleRedundantKotlinStdLibInspection
|
||||
import org.jetbrains.plugins.gradle.testFramework.GradleCodeInsightTestCase
|
||||
import org.jetbrains.plugins.gradle.testFramework.GradleTestFixtureBuilder
|
||||
import org.jetbrains.plugins.gradle.testFramework.annotations.AllGradleVersionsSource
|
||||
|
||||
@@ -169,6 +169,7 @@ jvm_library(
|
||||
"//plugins/gradle/completion",
|
||||
"//plugins/gradle/completion:completion_test_lib",
|
||||
"//plugins/gradle/java/toml",
|
||||
"//plugins/gradle/java/properties",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build intellij.kotlin.gradle.scripting` end
|
||||
|
||||
+1
@@ -93,5 +93,6 @@
|
||||
<orderEntry type="module" module-name="intellij.kotlin.uast.base" />
|
||||
<orderEntry type="module" module-name="intellij.gradle.completion" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.gradle.java.toml" />
|
||||
<orderEntry type="module" module-name="intellij.gradle.java.properties" scope="TEST" />
|
||||
</component>
|
||||
</module>
|
||||
+1
-1
@@ -1,9 +1,9 @@
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.gradle.scripting.k2.inspections
|
||||
|
||||
import com.intellij.gradle.java.properties.codeInspection.GradleRedundantKotlinStdLibInspection
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.kotlin.gradle.scripting.k2.K2GradleCodeInsightTestCase
|
||||
import org.jetbrains.plugins.gradle.codeInspection.GradleRedundantKotlinStdLibInspection
|
||||
import org.jetbrains.plugins.gradle.frameworkSupport.GradleDsl
|
||||
import org.jetbrains.plugins.gradle.testFramework.GradleTestFixtureBuilder
|
||||
import org.jetbrains.plugins.gradle.testFramework.annotations.AllGradleVersionsSource
|
||||
|
||||
Reference in New Issue
Block a user