mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[groovy] extract import fixes generation into separate file, make it independent from HighlightInfo/HighlightDisplayKey
This commit is contained in:
+4
-6
@@ -61,6 +61,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.intellij.psi.util.PsiUtil.isInnerClass;
|
||||
import static org.jetbrains.plugins.groovy.codeInspection.untypedUnresolvedAccess.ReferenceFixesKt.generateAddImportActions;
|
||||
import static org.jetbrains.plugins.groovy.codeInspection.untypedUnresolvedAccess.ReferenceFixesKt.generateCreateClassActions;
|
||||
import static org.jetbrains.plugins.groovy.lang.psi.impl.PsiImplUtil.hasArguments;
|
||||
import static org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil.hasEnclosingInstanceInScope;
|
||||
@@ -447,12 +448,9 @@ public class GrUnresolvedAccessChecker {
|
||||
}
|
||||
|
||||
private static void registerAddImportFixes(GrReferenceElement refElement, @Nullable HighlightInfo info, final HighlightDisplayKey key) {
|
||||
final String referenceName = refElement.getReferenceName();
|
||||
if (StringUtil.isEmpty(referenceName)) return;
|
||||
if (!(refElement instanceof GrCodeReferenceElement) && Character.isLowerCase(referenceName.charAt(0))) return;
|
||||
if (refElement.getQualifier() != null) return;
|
||||
|
||||
QuickFixAction.registerQuickFixAction(info, GroovyQuickFixFactory.getInstance().createGroovyAddImportAction(refElement), key);
|
||||
for (IntentionAction action : generateAddImportActions(refElement)) {
|
||||
QuickFixAction.registerQuickFixAction(info, action, key);
|
||||
}
|
||||
}
|
||||
|
||||
private static void registerCreateClassByTypeFix(@NotNull GrReferenceElement refElement,
|
||||
|
||||
+13
@@ -17,6 +17,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrExtendsCla
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrImplementsClause
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrInterfaceDefinition
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.packaging.GrPackageDefinition
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement
|
||||
import org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil.canBeClassOrPackage
|
||||
|
||||
fun generateCreateClassActions(ref: GrReferenceElement<*>): Collection<IntentionAction> {
|
||||
@@ -84,3 +85,15 @@ private fun resolvesToGroovy(qualifier: PsiElement?): Boolean {
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
fun generateAddImportActions(ref: GrReferenceElement<*>): Collection<IntentionAction> {
|
||||
return generateAddImportAction(ref)?.let(::listOf) ?: emptyList()
|
||||
}
|
||||
|
||||
private fun generateAddImportAction(ref: GrReferenceElement<*>): IntentionAction? {
|
||||
if (ref.isQualified) return null
|
||||
val referenceName = ref.referenceName ?: return null
|
||||
if (referenceName.isEmpty()) return null
|
||||
if (ref !is GrCodeReferenceElement && Character.isLowerCase(referenceName[0])) return null
|
||||
return GroovyQuickFixFactory.getInstance().createGroovyAddImportAction(ref)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user