Improved logic of finding conflicts for refactoring actions

This commit is contained in:
Stanislav Erokhin
2015-08-25 20:02:28 +03:00
parent 9a435e332f
commit aaebe70342
8 changed files with 25 additions and 24 deletions
@@ -21,6 +21,8 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithVisibility
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
import org.jetbrains.kotlin.idea.util.getAllAccessibleFunctions
import org.jetbrains.kotlin.idea.util.getAllAccessibleVariables
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.*
@@ -97,10 +99,9 @@ public class NewDeclarationNameValidator(
return when(target) {
Target.VARIABLES ->
getProperties(name, NoLookupLocation.FROM_IDE).any { !it.isExtension && it.isVisible() } ||
getLocalVariable(name) != null
getAllAccessibleVariables(name).any { !it.isExtension && it.isVisible() }
Target.FUNCTIONS_AND_CLASSES ->
getFunctions(name, NoLookupLocation.FROM_IDE).any { !it.isExtension && it.isVisible() } ||
getAllAccessibleFunctions(name).any { !it.isExtension && it.isVisible() } ||
getClassifier(name, NoLookupLocation.FROM_IDE)?.let { it.isVisible() } ?: false
}
}