Minor corrections after code review

This commit is contained in:
Valentin Kipyatkov
2015-06-25 21:53:17 +02:00
parent f679ed7011
commit a7e032456c
6 changed files with 16 additions and 12 deletions
@@ -145,8 +145,7 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration,
val prefixPattern = StandardPatterns.string().with(object : PatternCondition<String>("Prefix ends with uppercase letter") { val prefixPattern = StandardPatterns.string().with(object : PatternCondition<String>("Prefix ends with uppercase letter") {
override fun accepts(prefix: String, context: ProcessingContext?) = prefix.isNotEmpty() && prefix.last().isUpperCase() override fun accepts(prefix: String, context: ProcessingContext?) = prefix.isNotEmpty() && prefix.last().isUpperCase()
}) })
(CompletionService.getCompletionService().getCurrentCompletion() as CompletionProgressIndicator) collector.restartCompletionOnPrefixChange(prefixPattern)
.addWatchedPrefix(parameters.getOffset(), prefixPattern)
} }
if (completionKind == CompletionKind.PARAMETER_NAME || completionKind == CompletionKind.ANNOTATION_TYPES_OR_PARAMETER_NAME) { if (completionKind == CompletionKind.PARAMETER_NAME || completionKind == CompletionKind.ANNOTATION_TYPES_OR_PARAMETER_NAME) {
@@ -166,7 +166,7 @@ private class JetDeclarationRemotenessWeigher(private val file: JetFile) : Looku
DescriptorUtils.getFqName(descriptor!!).toString() DescriptorUtils.getFqName(descriptor!!).toString()
} }
else { else {
(psiElement as? PsiClass)?.getQualifiedName(); (psiElement as? PsiClass)?.getQualifiedName()
} }
} }
@@ -59,7 +59,7 @@ public abstract class DeclarationLookupObjectImpl(
return descriptorsEqualWithSubstitution(descriptor, lookupObject.descriptor) && psiElement == lookupObject.psiElement 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 { companion object {
private val LOG = Logger.getInstance("#" + javaClass<DeclarationLookupObject>().getName()) private val LOG = Logger.getInstance("#" + javaClass<DeclarationLookupObject>().getName())
@@ -21,6 +21,7 @@ import com.intellij.codeInsight.lookup.LookupElement
import com.intellij.codeInsight.lookup.LookupElementDecorator import com.intellij.codeInsight.lookup.LookupElementDecorator
import com.intellij.codeInsight.lookup.LookupElementPresentation import com.intellij.codeInsight.lookup.LookupElementPresentation
import com.intellij.openapi.util.TextRange import com.intellij.openapi.util.TextRange
import com.intellij.patterns.ElementPattern
import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
@@ -199,4 +200,8 @@ class LookupElementsCollector(
public fun advertiseSecondCompletion() { public fun advertiseSecondCompletion() {
JavaCompletionContributor.advertiseSecondCompletion(completionParameters.getOriginalFile().getProject(), defaultResultSet) JavaCompletionContributor.advertiseSecondCompletion(completionParameters.getOriginalFile().getProject(), defaultResultSet)
} }
public fun restartCompletionOnPrefixChange(prefixCondition: ElementPattern<String>) {
defaultResultSet.restartCompletionOnPrefixChange(prefixCondition)
}
} }
@@ -56,26 +56,26 @@ class ParameterNameAndTypeCompletion(
private val parametersInCurrentFilePrefixMatcher = MyPrefixMatcher(defaultPrefixMatcher.getPrefix()) private val parametersInCurrentFilePrefixMatcher = MyPrefixMatcher(defaultPrefixMatcher.getPrefix())
private val prefixWords: Array<String> private val prefixWords: Array<String>
private val allPrefixes: List<String> // prefixes to use to generate parameter names from class names private val nameSuggestionPrefixes: List<String> // prefixes to use to generate parameter names from class names
init { init {
val prefix = defaultPrefixMatcher.getPrefix() val prefix = defaultPrefixMatcher.getPrefix()
prefixWords = NameUtil.splitNameIntoWords(prefix) prefixWords = NameUtil.splitNameIntoWords(prefix)
allPrefixes = if (prefix.isEmpty() || prefix[0].isUpperCase()) nameSuggestionPrefixes = if (prefix.isEmpty() || prefix[0].isUpperCase())
emptyList() emptyList()
else 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<Type>() private val suggestionsByTypesAdded = HashSet<Type>()
public fun addFromImportedClasses(position: PsiElement, bindingContext: BindingContext, visibilityFilter: (DeclarationDescriptor) -> Boolean) { 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 resolutionScope = position.getResolutionScope(bindingContext, resolutionFacade)
val classifiers = resolutionScope.getDescriptorsFiltered(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS, prefixMatcher.toClassifierNamePrefixMatcher().asNameFilter()) val classifiers = resolutionScope.getDescriptorsFiltered(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS, prefixMatcher.toClassifierNamePrefixMatcher().asNameFilter())
@@ -90,7 +90,7 @@ class ParameterNameAndTypeCompletion(
} }
public fun addFromAllClasses(parameters: CompletionParameters, indicesHelper: KotlinIndicesHelper) { 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() }) AllClassesCompletion(parameters, indicesHelper, prefixMatcher.toClassifierNamePrefixMatcher(), { !it.isSingleton() })
.collect( .collect(
{ addSuggestionsForClassifier(it, userPrefixes[i], prefixMatcher) }, { addSuggestionsForClassifier(it, userPrefixes[i], prefixMatcher) },
@@ -242,7 +242,7 @@ public class JetNameSuggester {
} }
} }
public static String decapitalize(String s) { private static String decapitalize(String s) {
char c = s.charAt(0); char c = s.charAt(0);
if (!Character.isUpperCase(c)) return s; if (!Character.isUpperCase(c)) return s;