Revert "[kotlin] Remove useless check for android DSL"

This reverts commit f5cde819c0f65fef7adaa3bf3197573796f7c2f4.

GitOrigin-RevId: 8bc869641fbec3bc35171c1729e8a96cd3e0dd7d
This commit is contained in:
Victoria.Petrakovich
2024-10-10 19:55:31 +00:00
committed by intellij-monorepo-bot
parent 6bf6087d24
commit 2b77f37dd5
@@ -61,6 +61,10 @@ internal class KotlinOptionsToCompilerOptionsInGradleScriptInspection : Abstract
return object : KtVisitorVoid() {
override fun visitReferenceExpression(expression: KtReferenceExpression) {
val referencedName = (expression as? KtNameReferenceExpression)?.getReferencedName() ?: return
// ATM, we don't have proper dependencies for tests to perform `analyze` in Gradle build scripts
if (referencedName == "android" && !isUnitTestMode()) {
if (elementIsAndroidDsl(expression)) return
}
if (referencedName != "kotlinOptions") return
val expressionParent = expression.parent
@@ -133,6 +137,17 @@ internal class KotlinOptionsToCompilerOptionsInGradleScriptInspection : Abstract
}
}
private fun elementIsAndroidDsl(expression: KtExpression): Boolean {
val importableFqName = analyze(expression) {
val symbol = expression.resolveToCall()
?.successfulFunctionCallOrNull()?.partiallyAppliedSymbol?.signature?.symbol
val kaSymbol =
(symbol?.containingDeclaration as? KaClassLikeSymbol) ?: expression.resolveExpression()
kaSymbol?.importableFqName?.toString()
}
return importableFqName == "org.gradle.kotlin.dsl.android"
}
private fun expressionsContainForbiddenOperations(element: PsiElement): Boolean {
if (element is KtBinaryExpression) { // for sth like `kotlinOptions.sourceMapEmbedSources = "inlining"`
if (expressionContainsOperationForbiddenToReplace(element)) return true