[jvm-lang] disable Create Field from Java method calls

This commit is contained in:
Daniil Ovchinnikov
2017-09-06 15:30:25 +03:00
parent 8e4aed4e98
commit dce477391d
3 changed files with 17 additions and 1 deletions

View File

@@ -30,7 +30,7 @@ import com.intellij.psi.util.PsiUtil.resolveClassInClassTypeOnly
import com.intellij.psi.util.parentOfType
fun generateActions(ref: PsiReferenceExpression): List<IntentionAction> {
if (ref.referenceName == null) return emptyList()
if (!checkReference(ref)) return emptyList()
val fieldRequests = CreateFieldRequests(ref).collectRequests()
val extensions = EP_NAME.extensions
return fieldRequests.flatMap { (clazz, request) ->
@@ -40,6 +40,12 @@ fun generateActions(ref: PsiReferenceExpression): List<IntentionAction> {
}
}
private fun checkReference(ref: PsiReferenceExpression): Boolean {
if (ref.referenceName == null) return false
if (ref.parent is PsiMethodCallExpression) return false
return true
}
private class CreateFieldRequests(val myRef: PsiReferenceExpression) {
private val requests = LinkedHashMap<JvmClass, CreateFieldRequest>()

View File

@@ -0,0 +1,9 @@
// "Create field 'foo'" "false"
class Usage {
void usage(A a) {
a.<caret>foo()
}
}
class A {
}

View File

@@ -50,6 +50,7 @@ public class CreateFieldFromUsageTest extends LightQuickFixTestCase {
public void testCreateFromEquals() { doSingleTest(); }
public void testCreateFromEqualsToPrimitiveType() { doSingleTest(); }
public void testInsideInterface() { doSingleTest(); }
public void testReferenceInCall() { doSingleTest(); }
public void testWithAlignment() {
final CommonCodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject()).getCommonSettings(JavaLanguage.INSTANCE);
boolean old = settings.ALIGN_GROUP_FIELD_DECLARATIONS;