code review

This commit is contained in:
Dmitry Jemerov
2015-08-05 17:57:57 +02:00
parent c29ebfbb04
commit 43bbed495b
4 changed files with 11 additions and 8 deletions
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.psi.*
public interface KotlinFileStub : PsiFileStub<JetFile> {
public fun getPackageFqName(): FqName
public fun isScript(): Boolean
public fun findImportByAlias(alias: String): KotlinImportDirectiveStub?
public fun findImportsByAlias(alias: String): List<KotlinImportDirectiveStub>
}
public interface KotlinPlaceHolderStub<T : JetElement> : StubElement<T>
@@ -45,8 +45,8 @@ public class KotlinFileStubImpl(jetFile: JetFile?, private val packageName: Stri
return childrenStubs.filterIsInstance<PsiClassStub<*>>().map { it.psi }.toTypedArray()
}
override fun findImportByAlias(alias: String): KotlinImportDirectiveStub? {
val importList = childrenStubs.firstOrNull { it.stubType == JetStubElementTypes.IMPORT_LIST } ?: return null
return importList.childrenStubs.filterIsInstance<KotlinImportDirectiveStub>().firstOrNull { it.getAliasName() == alias }
override fun findImportsByAlias(alias: String): List<KotlinImportDirectiveStub> {
val importList = childrenStubs.firstOrNull { it.stubType == JetStubElementTypes.IMPORT_LIST } ?: return emptyList()
return importList.childrenStubs.filterIsInstance<KotlinImportDirectiveStub>().filter { it.getAliasName() == alias }
}
}
@@ -24,6 +24,8 @@ import org.jetbrains.kotlin.psi.stubs.*;
import org.jetbrains.kotlin.psi.stubs.elements.StubIndexService;
import org.jetbrains.kotlin.util.UtilPackage;
import java.util.List;
public class StubIndexServiceImpl implements StubIndexService {
@Override
@@ -127,9 +129,9 @@ public class StubIndexServiceImpl implements StubIndexService {
KotlinFileStub fileStub = getContainingFileStub(stub);
if (fileStub != null) {
KotlinImportDirectiveStub aliasImportStub = fileStub.findImportByAlias(stub.getShortName());
if (aliasImportStub != null) {
sink.occurrence(JetAnnotationsIndex.getInstance().getKey(), aliasImportStub.getImportedFqName().shortName().asString());
List<KotlinImportDirectiveStub> aliasImportStubs = fileStub.findImportsByAlias(stub.getShortName());
for (KotlinImportDirectiveStub importStub : aliasImportStubs) {
sink.occurrence(JetAnnotationsIndex.getInstance().getKey(), importStub.getImportedFqName().shortName().asString());
}
}
}
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.stubindex.JetAnnotationsIndex
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType
import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
import org.jetbrains.kotlin.resolve.BindingContext
@@ -91,7 +92,7 @@ public class KotlinAnnotatedElementsSearcher : QueryExecutor<PsiModifierListOwne
return JetAnnotationsIndex.getInstance().get(name, annClass.getProject(), useScope)
}
return (useScope as LocalSearchScope).scope.flatMap { it.getChildrenOfType<JetAnnotationEntry>().asIterable() }
return (useScope as LocalSearchScope).scope.flatMap { it.collectDescendantsOfType<JetAnnotationEntry>() }
})
}