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 interface KotlinFileStub : PsiFileStub<JetFile> {
public fun getPackageFqName(): FqName public fun getPackageFqName(): FqName
public fun isScript(): Boolean public fun isScript(): Boolean
public fun findImportByAlias(alias: String): KotlinImportDirectiveStub? public fun findImportsByAlias(alias: String): List<KotlinImportDirectiveStub>
} }
public interface KotlinPlaceHolderStub<T : JetElement> : StubElement<T> 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() return childrenStubs.filterIsInstance<PsiClassStub<*>>().map { it.psi }.toTypedArray()
} }
override fun findImportByAlias(alias: String): KotlinImportDirectiveStub? { override fun findImportsByAlias(alias: String): List<KotlinImportDirectiveStub> {
val importList = childrenStubs.firstOrNull { it.stubType == JetStubElementTypes.IMPORT_LIST } ?: return null val importList = childrenStubs.firstOrNull { it.stubType == JetStubElementTypes.IMPORT_LIST } ?: return emptyList()
return importList.childrenStubs.filterIsInstance<KotlinImportDirectiveStub>().firstOrNull { it.getAliasName() == alias } 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.psi.stubs.elements.StubIndexService;
import org.jetbrains.kotlin.util.UtilPackage; import org.jetbrains.kotlin.util.UtilPackage;
import java.util.List;
public class StubIndexServiceImpl implements StubIndexService { public class StubIndexServiceImpl implements StubIndexService {
@Override @Override
@@ -127,9 +129,9 @@ public class StubIndexServiceImpl implements StubIndexService {
KotlinFileStub fileStub = getContainingFileStub(stub); KotlinFileStub fileStub = getContainingFileStub(stub);
if (fileStub != null) { if (fileStub != null) {
KotlinImportDirectiveStub aliasImportStub = fileStub.findImportByAlias(stub.getShortName()); List<KotlinImportDirectiveStub> aliasImportStubs = fileStub.findImportsByAlias(stub.getShortName());
if (aliasImportStub != null) { for (KotlinImportDirectiveStub importStub : aliasImportStubs) {
sink.occurrence(JetAnnotationsIndex.getInstance().getKey(), aliasImportStub.getImportedFqName().shortName().asString()); 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.stubindex.JetAnnotationsIndex
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.psi.* 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.getChildrenOfType
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
@@ -91,7 +92,7 @@ public class KotlinAnnotatedElementsSearcher : QueryExecutor<PsiModifierListOwne
return JetAnnotationsIndex.getInstance().get(name, annClass.getProject(), useScope) 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>() }
}) })
} }