DeclarationProvider.getAllDeclarations() -> getDeclarations(kindFilter, nameFilter)
This commit is contained in:
+3
-1
@@ -28,6 +28,7 @@ import org.jetbrains.jet.storage.StorageManager
|
|||||||
|
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils.safeNameForLazyResolve
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils.safeNameForLazyResolve
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
||||||
|
|
||||||
public abstract class AbstractPsiBasedDeclarationProvider(storageManager: StorageManager) : DeclarationProvider {
|
public abstract class AbstractPsiBasedDeclarationProvider(storageManager: StorageManager) : DeclarationProvider {
|
||||||
|
|
||||||
@@ -72,7 +73,8 @@ public abstract class AbstractPsiBasedDeclarationProvider(storageManager: Storag
|
|||||||
|
|
||||||
protected abstract fun doCreateIndex(index: Index)
|
protected abstract fun doCreateIndex(index: Index)
|
||||||
|
|
||||||
override fun getAllDeclarations(): List<JetDeclaration> = index().allDeclarations
|
override fun getDeclarations(kindFilter: (JetScope.DescriptorKind) -> Boolean, nameFilter: (Name) -> Boolean): List<JetDeclaration>
|
||||||
|
= index().allDeclarations
|
||||||
|
|
||||||
override fun getFunctionDeclarations(name: Name): List<JetNamedFunction>
|
override fun getFunctionDeclarations(name: Name): List<JetNamedFunction>
|
||||||
= index().functions[ResolveSessionUtils.safeNameForLazyResolve(name)].toList()
|
= index().functions[ResolveSessionUtils.safeNameForLazyResolve(name)].toList()
|
||||||
|
|||||||
+3
-2
@@ -16,15 +16,16 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.lazy.declarations
|
package org.jetbrains.jet.lang.resolve.lazy.declarations
|
||||||
|
|
||||||
import org.jetbrains.annotations.ReadOnly
|
|
||||||
import org.jetbrains.jet.lang.psi.JetDeclaration
|
import org.jetbrains.jet.lang.psi.JetDeclaration
|
||||||
import org.jetbrains.jet.lang.psi.JetNamedFunction
|
import org.jetbrains.jet.lang.psi.JetNamedFunction
|
||||||
import org.jetbrains.jet.lang.psi.JetProperty
|
import org.jetbrains.jet.lang.psi.JetProperty
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassLikeInfo
|
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassLikeInfo
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name
|
import org.jetbrains.jet.lang.resolve.name.Name
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope.DescriptorKind
|
||||||
|
|
||||||
public trait DeclarationProvider {
|
public trait DeclarationProvider {
|
||||||
public fun getAllDeclarations(): List<JetDeclaration>
|
public fun getDeclarations(kindFilter: (JetScope.DescriptorKind) -> Boolean, nameFilter: (Name) -> Boolean): List<JetDeclaration>
|
||||||
|
|
||||||
public fun getFunctionDeclarations(name: Name): Collection<JetNamedFunction>
|
public fun getFunctionDeclarations(name: Name): Collection<JetNamedFunction>
|
||||||
|
|
||||||
|
|||||||
+21
-6
@@ -120,23 +120,38 @@ public abstract class AbstractLazyMemberScope<D : DeclarationDescriptor, DP : De
|
|||||||
|
|
||||||
protected fun computeDescriptorsFromDeclaredElements(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
protected fun computeDescriptorsFromDeclaredElements(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||||
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
||||||
val declarations = declarationProvider.getAllDeclarations()
|
val declarations = declarationProvider.getDeclarations(kindFilter, nameFilter)
|
||||||
val result = ArrayList<DeclarationDescriptor>(declarations.size())
|
val result = ArrayList<DeclarationDescriptor>(declarations.size())
|
||||||
for (declaration in declarations) {
|
for (declaration in declarations) {
|
||||||
if (declaration is JetClassOrObject) {
|
if (declaration is JetClassOrObject) {
|
||||||
result.addAll(classDescriptors(declaration.getNameAsSafeName()))
|
val name = declaration.getNameAsSafeName()
|
||||||
|
if (nameFilter(name)) {
|
||||||
|
result.addAll(classDescriptors(name))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (declaration is JetFunction) {
|
else if (declaration is JetFunction) {
|
||||||
result.addAll(getFunctions(declaration.getNameAsSafeName()))
|
val name = declaration.getNameAsSafeName()
|
||||||
|
if (nameFilter(name)) {
|
||||||
|
result.addAll(getFunctions(name))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (declaration is JetProperty) {
|
else if (declaration is JetProperty) {
|
||||||
result.addAll(getProperties(declaration.getNameAsSafeName()))
|
val name = declaration.getNameAsSafeName()
|
||||||
|
if (nameFilter(name)) {
|
||||||
|
result.addAll(getProperties(name))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (declaration is JetParameter) {
|
else if (declaration is JetParameter) {
|
||||||
result.addAll(getProperties(declaration.getNameAsSafeName()))
|
val name = declaration.getNameAsSafeName()
|
||||||
|
if (nameFilter(name)) {
|
||||||
|
result.addAll(getProperties(name))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (declaration is JetScript) {
|
else if (declaration is JetScript) {
|
||||||
result.addAll(classDescriptors(ScriptNameUtil.classNameForScript(declaration).shortName()))
|
val name = ScriptNameUtil.classNameForScript(declaration).shortName()
|
||||||
|
if (nameFilter(name)) {
|
||||||
|
result.addAll(classDescriptors(name))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (declaration is JetTypedef || declaration is JetMultiDeclaration) {
|
else if (declaration is JetTypedef || declaration is JetMultiDeclaration) {
|
||||||
// Do nothing for typedefs as they are not supported.
|
// Do nothing for typedefs as they are not supported.
|
||||||
|
|||||||
+4
-1
@@ -18,13 +18,16 @@ package org.jetbrains.jet.plugin.stubindex.resolve
|
|||||||
|
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.declarations.PackageMemberDeclarationProvider
|
import org.jetbrains.jet.lang.resolve.lazy.declarations.PackageMemberDeclarationProvider
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name
|
import org.jetbrains.jet.lang.resolve.name.Name
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope.DescriptorKind
|
||||||
|
|
||||||
public class CombinedPackageMemberDeclarationProvider(val providers: Collection<PackageMemberDeclarationProvider>) : PackageMemberDeclarationProvider {
|
public class CombinedPackageMemberDeclarationProvider(val providers: Collection<PackageMemberDeclarationProvider>) : PackageMemberDeclarationProvider {
|
||||||
override fun getAllDeclaredSubPackages() = providers.flatMap { it.getAllDeclaredSubPackages() }
|
override fun getAllDeclaredSubPackages() = providers.flatMap { it.getAllDeclaredSubPackages() }
|
||||||
|
|
||||||
override fun getPackageFiles() = providers.flatMap { it.getPackageFiles() }
|
override fun getPackageFiles() = providers.flatMap { it.getPackageFiles() }
|
||||||
|
|
||||||
override fun getAllDeclarations() = providers.flatMap { it.getAllDeclarations() }
|
override fun getDeclarations(kindFilter: (JetScope.DescriptorKind) -> Boolean, nameFilter: (Name) -> Boolean)
|
||||||
|
= providers.flatMap { it.getDeclarations(kindFilter, nameFilter) }
|
||||||
|
|
||||||
override fun getFunctionDeclarations(name: Name) = providers.flatMap { it.getFunctionDeclarations(name) }
|
override fun getFunctionDeclarations(name: Name) = providers.flatMap { it.getFunctionDeclarations(name) }
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -30,6 +30,7 @@ import org.jetbrains.jet.plugin.stubindex.PackageIndexUtil
|
|||||||
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassLikeInfo
|
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassLikeInfo
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassInfoUtil
|
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassInfoUtil
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
||||||
|
|
||||||
public class StubBasedPackageMemberDeclarationProvider(
|
public class StubBasedPackageMemberDeclarationProvider(
|
||||||
private val fqName: FqName,
|
private val fqName: FqName,
|
||||||
@@ -37,9 +38,8 @@ public class StubBasedPackageMemberDeclarationProvider(
|
|||||||
private val searchScope: GlobalSearchScope
|
private val searchScope: GlobalSearchScope
|
||||||
) : PackageMemberDeclarationProvider {
|
) : PackageMemberDeclarationProvider {
|
||||||
|
|
||||||
override fun getAllDeclarations(): List<JetDeclaration> {
|
override fun getDeclarations(kindFilter: (JetScope.DescriptorKind) -> Boolean, nameFilter: (Name) -> Boolean): List<JetDeclaration> {
|
||||||
return TOP_LEVEL_DECLARATION_INDICES.flatMap {
|
return TOP_LEVEL_DECLARATION_INDICES.flatMap { index ->
|
||||||
index ->
|
|
||||||
val fqNames = index.getAllKeys(project).toSet().map { FqName(it) }.filter { !it.isRoot() && it.parent() == fqName }
|
val fqNames = index.getAllKeys(project).toSet().map { FqName(it) }.filter { !it.isRoot() && it.parent() == fqName }
|
||||||
fqNames.flatMap { index.get(it.asString(), project, searchScope) }
|
fqNames.flatMap { index.get(it.asString(), project, searchScope) }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user