Move search helper options to constructor parameters

This commit is contained in:
Alexey Sedunov
2013-11-01 16:37:41 +04:00
parent ec8eb97e0e
commit 828f24406c
2 changed files with 56 additions and 62 deletions
@@ -63,51 +63,36 @@ public class KotlinPropertyFindUsagesOptions(project: Project): KotlinCallableFi
}
fun KotlinClassFindUsagesOptions.toClassHelper(): ClassUsagesSearchHelper =
ClassUsagesSearchHelper().let { builder ->
builder.constructorUsages = searchConstructorUsages
builder.nonConstructorUsages = isUsages
builder.skipImports = isSkipImportStatements
builder
}
ClassUsagesSearchHelper(
constructorUsages = searchConstructorUsages,
nonConstructorUsages = isUsages,
skipImports = isSkipImportStatements
)
fun KotlinClassFindUsagesOptions.toClassDeclarationsHelper(): ClassDeclarationsUsagesSearchHelper =
ClassDeclarationsUsagesSearchHelper().let { builder ->
builder.functionUsages = isMethodsUsages
builder.propertyUsages = isFieldsUsages
builder.skipImports = isSkipImportStatements
builder
}
ClassDeclarationsUsagesSearchHelper(
functionUsages = isMethodsUsages,
propertyUsages = isFieldsUsages,
skipImports = isSkipImportStatements
)
fun KotlinFunctionFindUsagesOptions.toHelper(): FunctionUsagesSearchHelper =
FunctionUsagesSearchHelper().let { builder ->
builder.selfUsages = isUsages
builder.overrideUsages = isUsages
builder.overloadUsages = isIncludeOverloadUsages
builder.extensionUsages = isIncludeOverloadUsages
builder.skipImports = isSkipImportStatements
builder
}
FunctionUsagesSearchHelper(
selfUsages = isUsages,
overrideUsages = isUsages,
overloadUsages = isIncludeOverloadUsages,
extensionUsages = isIncludeOverloadUsages,
skipImports = isSkipImportStatements
)
fun KotlinPropertyFindUsagesOptions.toHelper(): PropertyUsagesSearchHelper =
PropertyUsagesSearchHelper().let { builder ->
builder.selfUsages = isUsages
builder.overrideUsages = isUsages
builder.readUsages = isReadAccess
builder.writeUsages = isWriteAccess
builder.skipImports = isSkipImportStatements
builder
}
fun JavaFindUsagesOptions.toHelper(): DeclarationUsagesSearchHelper<PsiNamedElement> =
DeclarationUsagesSearchHelper<PsiNamedElement>().let { builder ->
builder.skipImports = isSkipImportStatements
builder
}
PropertyUsagesSearchHelper(
selfUsages = isUsages,
overrideUsages = isUsages,
readUsages = isReadAccess,
writeUsages = isWriteAccess,
skipImports = isSkipImportStatements
)
fun <T : PsiNamedElement> FindUsagesOptions.toSearchTarget(element: T, restrictByTarget: Boolean): UsagesSearchTarget<T> {
val location = if (isSearchForTextOccurrences && searchScope is GlobalSearchScope)
@@ -84,9 +84,9 @@ object DefaultUsagesSearchHelper: UsagesSearchHelper<PsiNamedElement>()
val isNotImportUsage = !((PsiReference::isImportUsage).searchFilter)
open class DeclarationUsagesSearchHelper<T : PsiNamedElement> : UsagesSearchHelper<T>() {
public var skipImports: Boolean = false
open class DeclarationUsagesSearchHelper<T : PsiNamedElement>(
public val skipImports: Boolean = false
) : UsagesSearchHelper<T>() {
protected val isFilteredImport: UsagesSearchFilter
get() = isNotImportUsage.ifOrTrue(skipImports)
@@ -95,10 +95,11 @@ open class DeclarationUsagesSearchHelper<T : PsiNamedElement> : UsagesSearchHelp
val isClassConstructorUsage = (PsiReference::isConstructorUsage).searchFilter
class ClassUsagesSearchHelper : DeclarationUsagesSearchHelper<JetClassOrObject>() {
public var constructorUsages: Boolean = false
public var nonConstructorUsages: Boolean = false
class ClassUsagesSearchHelper(
public val constructorUsages: Boolean = false,
public val nonConstructorUsages: Boolean = false,
skipImports: Boolean = false
) : DeclarationUsagesSearchHelper<JetClassOrObject>(skipImports) {
override fun makeFilter(target: UsagesSearchTarget<JetClassOrObject>): UsagesSearchFilter =
super.makeFilter(target) and when {
constructorUsages && !nonConstructorUsages -> isClassConstructorUsage
@@ -108,10 +109,11 @@ class ClassUsagesSearchHelper : DeclarationUsagesSearchHelper<JetClassOrObject>(
}
}
class ClassDeclarationsUsagesSearchHelper : DeclarationUsagesSearchHelper<JetClassOrObject>() {
public var functionUsages: Boolean = false
public var propertyUsages: Boolean = false
class ClassDeclarationsUsagesSearchHelper(
public val functionUsages: Boolean = false,
public val propertyUsages: Boolean = false,
skipImports: Boolean = false
) : DeclarationUsagesSearchHelper<JetClassOrObject>(skipImports) {
override fun makeItemList(target: UsagesSearchTarget<JetClassOrObject>): List<UsagesSearchRequestItem> {
val items = ArrayList<UsagesSearchRequestItem>()
val declHelper = DeclarationUsagesSearchHelper<JetNamedDeclaration>(skipImports)
@@ -128,10 +130,11 @@ class ClassDeclarationsUsagesSearchHelper : DeclarationUsagesSearchHelper<JetCla
val isOverrideUsage = (PsiReference::isCallableOverrideUsage).searchFilter
abstract class CallableUsagesSearchHelper<T: JetCallableDeclaration>: DeclarationUsagesSearchHelper<T>() {
public var selfUsages: Boolean = true
public var overrideUsages: Boolean = true
abstract class CallableUsagesSearchHelper<T: JetCallableDeclaration>(
public val selfUsages: Boolean = true,
public val overrideUsages: Boolean = true,
skipImports: Boolean = false
): DeclarationUsagesSearchHelper<T>(skipImports) {
val isTargetOrOverrideUsage: UsagesSearchFilter
get() = isTargetUsage.ifOrFalse(selfUsages) or isOverrideUsage.ifOrFalse(overrideUsages)
}
@@ -139,10 +142,13 @@ abstract class CallableUsagesSearchHelper<T: JetCallableDeclaration>: Declaratio
val isOverloadUsage = (PsiReference::isUsageInContainingDeclaration).searchFilter
val isExtensionUsage = (PsiReference::isExtensionOfDeclarationClassUsage).searchFilter
class FunctionUsagesSearchHelper() : CallableUsagesSearchHelper<JetNamedFunction>() {
public var overloadUsages: Boolean = false
public var extensionUsages: Boolean = false
class FunctionUsagesSearchHelper(
public val overloadUsages: Boolean = false,
public val extensionUsages: Boolean = false,
selfUsages: Boolean = true,
overrideUsages: Boolean = true,
skipImports: Boolean = false
) : CallableUsagesSearchHelper<JetNamedFunction>(selfUsages, overrideUsages, skipImports) {
override fun makeFilter(target: UsagesSearchTarget<JetNamedFunction>): UsagesSearchFilter {
return (isTargetOrOverrideUsage
or isOverloadUsage.ifOrFalse(overloadUsages)
@@ -152,10 +158,13 @@ class FunctionUsagesSearchHelper() : CallableUsagesSearchHelper<JetNamedFunction
val isPropertyReadOnlyUsage = (PsiReference::isPropertyReadOnlyUsage).searchFilter
class PropertyUsagesSearchHelper() : CallableUsagesSearchHelper<JetProperty>() {
public var readUsages: Boolean = true
public var writeUsages: Boolean = true
class PropertyUsagesSearchHelper(
public val readUsages: Boolean = true,
public val writeUsages: Boolean = true,
selfUsages: Boolean = true,
overrideUsages: Boolean = true,
skipImports: Boolean = false
) : CallableUsagesSearchHelper<JetProperty>(selfUsages, overrideUsages, skipImports) {
override fun makeWordList(target: UsagesSearchTarget<JetProperty>): List<String> {
return target.element.names(readable = readUsages, writable = writeUsages)
}