From a7e032456c4f0f27f3fac32b427f8311809f3a6a Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 25 Jun 2015 21:53:17 +0200 Subject: [PATCH] Minor corrections after code review --- .../idea/completion/BasicCompletionSession.kt | 3 +-- .../kotlin/idea/completion/CompletionSorting.kt | 2 +- .../idea/completion/DeclarationLookupObjectImpl.kt | 2 +- .../idea/completion/LookupElementsCollector.kt | 5 +++++ .../completion/ParameterNameAndTypeCompletion.kt | 14 +++++++------- .../idea/core/refactoring/JetNameSuggester.java | 2 +- 6 files changed, 16 insertions(+), 12 deletions(-) diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt index 07fa63b486d..ce541503e30 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt @@ -145,8 +145,7 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration, val prefixPattern = StandardPatterns.string().with(object : PatternCondition("Prefix ends with uppercase letter") { override fun accepts(prefix: String, context: ProcessingContext?) = prefix.isNotEmpty() && prefix.last().isUpperCase() }) - (CompletionService.getCompletionService().getCurrentCompletion() as CompletionProgressIndicator) - .addWatchedPrefix(parameters.getOffset(), prefixPattern) + collector.restartCompletionOnPrefixChange(prefixPattern) } if (completionKind == CompletionKind.PARAMETER_NAME || completionKind == CompletionKind.ANNOTATION_TYPES_OR_PARAMETER_NAME) { diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSorting.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSorting.kt index 97d3dc35402..442c27c115b 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSorting.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSorting.kt @@ -166,7 +166,7 @@ private class JetDeclarationRemotenessWeigher(private val file: JetFile) : Looku DescriptorUtils.getFqName(descriptor!!).toString() } else { - (psiElement as? PsiClass)?.getQualifiedName(); + (psiElement as? PsiClass)?.getQualifiedName() } } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/DeclarationLookupObjectImpl.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/DeclarationLookupObjectImpl.kt index 896084589e0..6a17db302ff 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/DeclarationLookupObjectImpl.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/DeclarationLookupObjectImpl.kt @@ -59,7 +59,7 @@ public abstract class DeclarationLookupObjectImpl( return descriptorsEqualWithSubstitution(descriptor, lookupObject.descriptor) && psiElement == lookupObject.psiElement } - override val isDeprecated = if (descriptor != null) KotlinBuiltIns.isDeprecated(descriptor) else (psiElement as PsiDocCommentOwner).isDeprecated() + override val isDeprecated = if (descriptor != null) KotlinBuiltIns.isDeprecated(descriptor) else (psiElement as? PsiDocCommentOwner)?.isDeprecated() ?: false companion object { private val LOG = Logger.getInstance("#" + javaClass().getName()) diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementsCollector.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementsCollector.kt index 67f2955c8fb..1f3f3b24620 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementsCollector.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementsCollector.kt @@ -21,6 +21,7 @@ import com.intellij.codeInsight.lookup.LookupElement import com.intellij.codeInsight.lookup.LookupElementDecorator import com.intellij.codeInsight.lookup.LookupElementPresentation import com.intellij.openapi.util.TextRange +import com.intellij.patterns.ElementPattern import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassifierDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -199,4 +200,8 @@ class LookupElementsCollector( public fun advertiseSecondCompletion() { JavaCompletionContributor.advertiseSecondCompletion(completionParameters.getOriginalFile().getProject(), defaultResultSet) } + + public fun restartCompletionOnPrefixChange(prefixCondition: ElementPattern) { + defaultResultSet.restartCompletionOnPrefixChange(prefixCondition) + } } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ParameterNameAndTypeCompletion.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ParameterNameAndTypeCompletion.kt index 577615f7991..18a247cec18 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ParameterNameAndTypeCompletion.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ParameterNameAndTypeCompletion.kt @@ -56,26 +56,26 @@ class ParameterNameAndTypeCompletion( private val parametersInCurrentFilePrefixMatcher = MyPrefixMatcher(defaultPrefixMatcher.getPrefix()) private val prefixWords: Array - private val allPrefixes: List // prefixes to use to generate parameter names from class names + private val nameSuggestionPrefixes: List // prefixes to use to generate parameter names from class names init { val prefix = defaultPrefixMatcher.getPrefix() prefixWords = NameUtil.splitNameIntoWords(prefix) - allPrefixes = if (prefix.isEmpty() || prefix[0].isUpperCase()) + nameSuggestionPrefixes = if (prefix.isEmpty() || prefix[0].isUpperCase()) emptyList() else - prefixWords.indices.map { if (it == 0) prefix else prefixWords.drop(it).join("") } + prefixWords.indices.map { index -> if (index == 0) prefix else prefixWords.drop(index).join("") } } - private val allPrefixMatchers = allPrefixes.map { MyPrefixMatcher(it) } + private val nameSuggestionPrefixMatchers = nameSuggestionPrefixes.map { MyPrefixMatcher(it) } - private val userPrefixes = allPrefixes.indices.map { prefixWords.take(it).join("") } + private val userPrefixes = nameSuggestionPrefixes.indices.map { prefixWords.take(it).join("") } private val suggestionsByTypesAdded = HashSet() public fun addFromImportedClasses(position: PsiElement, bindingContext: BindingContext, visibilityFilter: (DeclarationDescriptor) -> Boolean) { - for ((i, prefixMatcher) in allPrefixMatchers.withIndex()) { + for ((i, prefixMatcher) in nameSuggestionPrefixMatchers.withIndex()) { val resolutionScope = position.getResolutionScope(bindingContext, resolutionFacade) val classifiers = resolutionScope.getDescriptorsFiltered(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS, prefixMatcher.toClassifierNamePrefixMatcher().asNameFilter()) @@ -90,7 +90,7 @@ class ParameterNameAndTypeCompletion( } public fun addFromAllClasses(parameters: CompletionParameters, indicesHelper: KotlinIndicesHelper) { - for ((i, prefixMatcher) in allPrefixMatchers.withIndex()) { + for ((i, prefixMatcher) in nameSuggestionPrefixMatchers.withIndex()) { AllClassesCompletion(parameters, indicesHelper, prefixMatcher.toClassifierNamePrefixMatcher(), { !it.isSingleton() }) .collect( { addSuggestionsForClassifier(it, userPrefixes[i], prefixMatcher) }, diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/refactoring/JetNameSuggester.java b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/refactoring/JetNameSuggester.java index 62133977f1a..0171d058ba5 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/refactoring/JetNameSuggester.java +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/refactoring/JetNameSuggester.java @@ -242,7 +242,7 @@ public class JetNameSuggester { } } - public static String decapitalize(String s) { + private static String decapitalize(String s) { char c = s.charAt(0); if (!Character.isUpperCase(c)) return s;