@@ -8,15 +8,10 @@ import com.android.tools.lint.detector.api.JavaContext
8
8
import com.android.tools.lint.detector.api.Scope
9
9
import com.android.tools.lint.detector.api.Severity
10
10
import com.android.tools.lint.detector.api.SourceCodeScanner
11
- import com.android.tools.lint.detector.api.computeKotlinArgumentMapping
12
- import com.intellij.psi.PsiElement
13
- import com.intellij.psi.PsiJavaFile
14
- import com.intellij.psi.PsiMember
15
11
import com.intellij.psi.PsiMethod
16
12
import com.intellij.psi.PsiNamedElement
17
13
import org.jetbrains.uast.UBlockExpression
18
14
import org.jetbrains.uast.UCallExpression
19
- import org.jetbrains.uast.ULambdaExpression
20
15
import org.jetbrains.uast.skipParenthesizedExprDown
21
16
import org.jetbrains.uast.tryResolveNamed
22
17
@@ -51,7 +46,7 @@ class MaterialDialogWithOrbitButtonsDetector : Detector(), SourceCodeScanner {
51
46
52
47
override fun visitMethodCall (context : JavaContext , node : UCallExpression , method : PsiMethod ) {
53
48
if (method.isInPackageName(PACKAGE_MATERIAL_ALERT )) {
54
- val confirmButtonArgument = getArgument(node, method , MATERIAL_ALERT_CONFIRM_BUTTON_PARAM )
49
+ val confirmButtonArgument = method. getArgument(node, MATERIAL_ALERT_CONFIRM_BUTTON_PARAM )
55
50
56
51
(confirmButtonArgument?.body as ? UBlockExpression )?.let { body ->
57
52
val resolvedBodyExpression = body.resolveFirstBodyExpression() ? : return @let
@@ -77,7 +72,7 @@ class MaterialDialogWithOrbitButtonsDetector : Detector(), SourceCodeScanner {
77
72
}
78
73
}
79
74
80
- val dismissButtonArgument = getArgument(node, method , MATERIAL_ALERT_DISMISS_BUTTON_PARAM )
75
+ val dismissButtonArgument = method. getArgument(node, MATERIAL_ALERT_DISMISS_BUTTON_PARAM )
81
76
82
77
(dismissButtonArgument?.body as ? UBlockExpression )?.let { body ->
83
78
val resolvedBodyExpression = body.resolveFirstBodyExpression() ? : return @let
@@ -105,29 +100,6 @@ class MaterialDialogWithOrbitButtonsDetector : Detector(), SourceCodeScanner {
105
100
}
106
101
}
107
102
108
- private fun getArgument (
109
- node : UCallExpression ,
110
- method : PsiMethod ,
111
- argumentName : String ,
112
- ): ULambdaExpression ? = computeKotlinArgumentMapping(node, method)
113
- .orEmpty()
114
- .filter { (_, parameter) ->
115
- parameter.name == argumentName
116
- }
117
- .keys
118
- .filterIsInstance<ULambdaExpression >()
119
- .firstOrNull()
120
-
121
- private fun PsiMethod.isInPackageName (packageName : String ): Boolean {
122
- val actual = (containingFile as ? PsiJavaFile )?.packageName
123
- return packageName == actual
124
- }
125
-
126
- private fun PsiElement.getPackageName (): String? = when (this ) {
127
- is PsiMember -> this .containingClass?.qualifiedName?.let { it.substring(0 , it.lastIndexOf(" ." )) }
128
- else -> null
129
- }
130
-
131
103
private fun UBlockExpression.resolveFirstBodyExpression (): PsiNamedElement ? {
132
104
return expressions.firstOrNull()?.skipParenthesizedExprDown()?.tryResolveNamed()
133
105
}
0 commit comments