mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java-refactoring] Suggested refactoring: avoid canHaveOverrides in EDT
It could trigger resolve if modifiers are augmented (e.g., with Lombok). The same is checked anyway in background. Improves IDEA-322957 T: DirectoryIndexImpl.getInfoForFile Improves EA-765399 - T: DirectoryIndexImpl.getInfoForFile GitOrigin-RevId: 7b1ff3fc823a53fdd959f662bffadce2c4747fa3
This commit is contained in:
committed by
intellij-monorepo-bot
parent
4a164c70d3
commit
d5ccfc998a
+16
-8
@@ -28,21 +28,29 @@ class JavaSuggestedRefactoringAvailability(refactoringSupport: SuggestedRefactor
|
||||
|
||||
override fun amendStateInBackground(state: SuggestedRefactoringState): Iterator<SuggestedRefactoringState> {
|
||||
return iterator {
|
||||
if (state.additionalData[HAS_OVERRIDES] == null) {
|
||||
var updatedState = state
|
||||
if (updatedState.additionalData[HAS_OVERRIDES] == null) {
|
||||
val method = state.declaration as? PsiMethod
|
||||
if (method != null && method.canHaveOverrides(state.oldSignature)) {
|
||||
val restoredMethod = state.restoredDeclarationCopy() as PsiMethod
|
||||
val hasOverrides = OverridingMethodsSearch.search(restoredMethod, false).findFirst() != null
|
||||
yield(state.withAdditionalData(HAS_OVERRIDES, hasOverrides))
|
||||
if (method != null) {
|
||||
val hasOverrides: Boolean
|
||||
if (!method.canHaveOverrides(state.oldSignature)) {
|
||||
hasOverrides = false
|
||||
} else {
|
||||
val restoredMethod = state.restoredDeclarationCopy() as PsiMethod
|
||||
hasOverrides = OverridingMethodsSearch.search(restoredMethod, false).findFirst() != null
|
||||
}
|
||||
updatedState = state.withAdditionalData(HAS_OVERRIDES, hasOverrides)
|
||||
yield(updatedState)
|
||||
}
|
||||
}
|
||||
|
||||
if (state.additionalData[HAS_USAGES] == null) {
|
||||
if (updatedState.additionalData[HAS_USAGES] == null) {
|
||||
val declarationCopy = state.restoredDeclarationCopy()
|
||||
val useScope = declarationCopy?.useScope
|
||||
if (useScope is LocalSearchScope) {
|
||||
val hasUsages = ReferencesSearch.search(declarationCopy, useScope).findFirst() != null
|
||||
yield(state.withAdditionalData(HAS_USAGES, hasUsages))
|
||||
updatedState = updatedState.withAdditionalData(HAS_USAGES, hasUsages)
|
||||
yield(updatedState)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -132,7 +140,7 @@ class JavaSuggestedRefactoringAvailability(refactoringSupport: SuggestedRefactor
|
||||
return SuggestedRenameData(declaration as PsiNamedElement, oldSignature.name)
|
||||
}
|
||||
|
||||
val canHaveOverrides = declaration.canHaveOverrides(oldSignature) && updatedState.additionalData[HAS_OVERRIDES] != false
|
||||
val canHaveOverrides = updatedState.additionalData[HAS_OVERRIDES] != false
|
||||
if (updatedState.additionalData[HAS_USAGES] == false && !canHaveOverrides) return null
|
||||
|
||||
val updateUsagesData = SuggestedChangeSignatureData.create(updatedState, whatToUpdate)
|
||||
|
||||
+16
-8
@@ -87,7 +87,8 @@ class JavaSuggestedRefactoringAvailabilityTest : BaseSuggestedRefactoringAvailab
|
||||
{
|
||||
replaceTextAtCaret("int", "long")
|
||||
},
|
||||
expectedAvailability = Availability.Disabled
|
||||
expectedAvailability = Availability.Available(changeSignatureAvailableTooltip("foo", "overrides")),
|
||||
expectedAvailabilityAfterBackgroundAmend = Availability.Disabled
|
||||
)
|
||||
}
|
||||
|
||||
@@ -102,7 +103,8 @@ class JavaSuggestedRefactoringAvailabilityTest : BaseSuggestedRefactoringAvailab
|
||||
{
|
||||
replaceTextAtCaret("void", "int")
|
||||
},
|
||||
expectedAvailability = Availability.Disabled
|
||||
expectedAvailability = Availability.Available(changeSignatureAvailableTooltip("foo", "overrides")),
|
||||
expectedAvailabilityAfterBackgroundAmend = Availability.Disabled
|
||||
)
|
||||
}
|
||||
|
||||
@@ -175,7 +177,8 @@ class JavaSuggestedRefactoringAvailabilityTest : BaseSuggestedRefactoringAvailab
|
||||
{
|
||||
replaceTextAtCaret("public", "private")
|
||||
},
|
||||
expectedAvailability = Availability.Disabled
|
||||
expectedAvailability = Availability.Available(changeSignatureAvailableTooltip("foo", "overrides")),
|
||||
expectedAvailabilityAfterBackgroundAmend = Availability.Disabled
|
||||
)
|
||||
}
|
||||
|
||||
@@ -222,7 +225,8 @@ class JavaSuggestedRefactoringAvailabilityTest : BaseSuggestedRefactoringAvailab
|
||||
{
|
||||
replaceTextAtCaret("void", "int")
|
||||
},
|
||||
expectedAvailability = Availability.Disabled
|
||||
expectedAvailability = Availability.Available(changeSignatureAvailableTooltip("foo", "overrides")),
|
||||
expectedAvailabilityAfterBackgroundAmend = Availability.Disabled
|
||||
)
|
||||
}
|
||||
|
||||
@@ -237,7 +241,8 @@ class JavaSuggestedRefactoringAvailabilityTest : BaseSuggestedRefactoringAvailab
|
||||
{
|
||||
replaceTextAtCaret("void", "int")
|
||||
},
|
||||
expectedAvailability = Availability.Disabled
|
||||
expectedAvailability = Availability.Available(changeSignatureAvailableTooltip("foo", "overrides")),
|
||||
expectedAvailabilityAfterBackgroundAmend = Availability.Disabled
|
||||
)
|
||||
}
|
||||
|
||||
@@ -252,7 +257,8 @@ class JavaSuggestedRefactoringAvailabilityTest : BaseSuggestedRefactoringAvailab
|
||||
{
|
||||
replaceTextAtCaret("void", "int")
|
||||
},
|
||||
expectedAvailability = Availability.Disabled
|
||||
expectedAvailability = Availability.Available(changeSignatureAvailableTooltip("foo", "overrides")),
|
||||
expectedAvailabilityAfterBackgroundAmend = Availability.Disabled
|
||||
)
|
||||
}
|
||||
|
||||
@@ -267,7 +273,8 @@ class JavaSuggestedRefactoringAvailabilityTest : BaseSuggestedRefactoringAvailab
|
||||
{
|
||||
replaceTextAtCaret("void", "int")
|
||||
},
|
||||
expectedAvailability = Availability.Disabled
|
||||
expectedAvailability = Availability.Available(changeSignatureAvailableTooltip("foo", "overrides")),
|
||||
expectedAvailabilityAfterBackgroundAmend = Availability.Disabled
|
||||
)
|
||||
}
|
||||
|
||||
@@ -455,7 +462,8 @@ class JavaSuggestedRefactoringAvailabilityTest : BaseSuggestedRefactoringAvailab
|
||||
{
|
||||
replaceTextAtCaret("int", "long")
|
||||
},
|
||||
expectedAvailability = Availability.Disabled
|
||||
expectedAvailability = Availability.Available(changeSignatureAvailableTooltip("C", "overrides")),
|
||||
expectedAvailabilityAfterBackgroundAmend = Availability.Disabled
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user