@@ -5,11 +5,10 @@ import com.intellij.openapi.diagnostic.logger
5
5
import com.intellij.openapi.project.Project
6
6
import com.intellij.psi.PsiElement
7
7
import com.intellij.psi.PsiElementVisitor
8
- import com.intellij.psi.util.elementType
9
8
import com.jetbrains.php.lang.documentation.phpdoc.psi.PhpDocType
10
- import com.jetbrains.php.lang.lexer.PhpTokenTypes
11
9
import com.jetbrains.php.lang.psi.elements.*
12
10
import com.jetbrains.php.lang.psi.visitors.PhpElementVisitor
11
+ import com.vk.modulite.SymbolName
13
12
import com.vk.modulite.composer.ComposerPackage
14
13
import com.vk.modulite.modulite.Modulite
15
14
import com.vk.modulite.modulite.ModuliteRestrictionChecker
@@ -26,25 +25,14 @@ class InternalSymbolUsageInspection : LocalInspectionTool() {
26
25
private val LOG = logger<InternalSymbolUsageInspection >()
27
26
}
28
27
29
- class AddSymbolToRequiresQuickFix (private val contextModulite : Modulite ) : LocalQuickFix {
28
+ class AddSymbolToRequiresQuickFix (
29
+ private val contextModulite : Modulite ,
30
+ private val symbol : SymbolName ,
31
+ ) : LocalQuickFix {
30
32
override fun getFamilyName () = " Add symbol to requires"
31
33
32
34
override fun applyFix (project : Project , descriptor : ProblemDescriptor ) {
33
- val element = descriptor.psiElement
34
-
35
- val ref = if (element.elementType == PhpTokenTypes .IDENTIFIER ) {
36
- element.parent as ? PhpReference
37
- } else {
38
- descriptor.psiElement as ? PhpReference
39
- }
40
-
41
- if (ref == null ) {
42
- return
43
- }
44
-
45
- val reference = ref.resolveGlobal(false ).firstOrNull() ? : return
46
-
47
- contextModulite.addDependencies(reference.symbolName(forNotRequired = true ))
35
+ contextModulite.addDependencies(symbol)
48
36
}
49
37
}
50
38
@@ -156,6 +144,7 @@ class InternalSymbolUsageInspection : LocalInspectionTool() {
156
144
holder.addProblem(
157
145
reason,
158
146
element,
147
+ reference,
159
148
context,
160
149
problemPsiElement
161
150
)
@@ -168,6 +157,7 @@ class InternalSymbolUsageInspection : LocalInspectionTool() {
168
157
private fun ProblemsHolder.addProblem (
169
158
reason : ModuliteRestrictionChecker .ViolationTypes ,
170
159
symbolElement : PhpNamedElement ,
160
+ reference : PhpReference ,
171
161
context : ModuliteRestrictionChecker .Context ,
172
162
problemElement : PsiElement ,
173
163
) {
@@ -186,7 +176,8 @@ class InternalSymbolUsageInspection : LocalInspectionTool() {
186
176
}
187
177
188
178
ModuliteRestrictionChecker .ViolationTypes .NotRequired -> {
189
- val readableName = symbolElement.symbolName(forNotRequired = true ).readableNameWithAction()
179
+ val symbol = symbolElement.symbolName(reference, forNotRequired = true )
180
+ val readableName = symbol.readableNameWithAction()
190
181
191
182
// Если символ определен в композер пакете, то нужно добавить его, а не модуль.
192
183
if (refPackage != null ) {
@@ -202,7 +193,7 @@ class InternalSymbolUsageInspection : LocalInspectionTool() {
202
193
restricted to $readableName , $refModulite is not required by ${context.modulite}
203
194
""" .trimIndent()
204
195
} else {
205
- quickFixes.add(AddSymbolToRequiresQuickFix (context.modulite!! ))
196
+ quickFixes.add(AddSymbolToRequiresQuickFix (context.modulite!! , symbol ))
206
197
207
198
"""
208
199
restricted to $readableName , it's not required by ${context.modulite}
0 commit comments