Refactoring
This commit is contained in:
@@ -100,14 +100,14 @@ class InflowSlicer(
|
||||
&& function.hasModifier(KtTokens.OPERATOR_KEYWORD)
|
||||
) {
|
||||
|
||||
ReferencesSearch.search(function, parentUsage.scope.toSearchScope())
|
||||
ReferencesSearch.search(function, analysisScope)
|
||||
.filterIsInstance<KtPropertyDelegationMethodsReference>()
|
||||
.forEach { (it.element.parent as? KtProperty)?.processPropertyAssignments() }
|
||||
}
|
||||
|
||||
val parameterDescriptor = parameter.resolveToParameterDescriptorIfAny(BodyResolveMode.FULL) ?: return
|
||||
|
||||
(function as? KtFunction)?.processCalls(parentUsage.scope.toSearchScope(), includeOverriders) body@{
|
||||
(function as? KtFunction)?.processCalls(analysisScope, includeOverriders) body@{
|
||||
val refElement = it.element ?: return@body
|
||||
val refParent = refElement.parent
|
||||
|
||||
@@ -132,7 +132,7 @@ class InflowSlicer(
|
||||
}
|
||||
|
||||
if (parameter.valOrVarKeyword.toValVar() == KotlinValVar.Var) {
|
||||
processAssignments(parameter, parentUsage.scope.toSearchScope())
|
||||
processAssignments(parameter, analysisScope)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,7 +201,6 @@ class InflowSlicer(
|
||||
}
|
||||
|
||||
private fun KtProperty.processPropertyAssignments() {
|
||||
val analysisScope = parentUsage.scope.toSearchScope()
|
||||
val accessSearchScope = if (isVar) {
|
||||
analysisScope
|
||||
} else {
|
||||
@@ -272,7 +271,7 @@ class InflowSlicer(
|
||||
|
||||
private fun PsiElement.passDeclarationToProcessorWithOverriders() {
|
||||
passToProcessor()
|
||||
HierarchySearchRequest(this, parentUsage.scope.toSearchScope())
|
||||
HierarchySearchRequest(this, analysisScope)
|
||||
.searchOverriders()
|
||||
.forEach { it.namedUnwrappedElement?.passToProcessor() }
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ class OutflowSlicer(
|
||||
val accessKind = if (withDereferences) AccessKind.READ_OR_WRITE else AccessKind.READ_ONLY
|
||||
processVariableAccesses(
|
||||
variable,
|
||||
parentUsage.scope.toSearchScope(),
|
||||
analysisScope,
|
||||
accessKind
|
||||
) body@{
|
||||
val refElement = it.element
|
||||
@@ -62,12 +62,12 @@ class OutflowSlicer(
|
||||
|
||||
private fun processFunction(function: KtFunction) {
|
||||
if (function is KtConstructor<*> || function is KtNamedFunction && function.name != null) {
|
||||
function.processCalls(this.parentUsage.scope.toSearchScope(), includeOverriders = false) {
|
||||
function.processCalls(analysisScope, includeOverriders = false) {
|
||||
when (val refElement = it.element) {
|
||||
null -> (it.reference as? LightMemberReference)?.element?.passToProcessor()
|
||||
is KtExpression -> {
|
||||
refElement.getCallElementForExactCallee()?.passToProcessor()
|
||||
refElement.getCallableReferenceForExactCallee()?.passToProcessor(this.parentUsage.lambdaLevel + 1)
|
||||
refElement.getCallableReferenceForExactCallee()?.passToProcessor(parentUsage.lambdaLevel + 1)
|
||||
}
|
||||
else -> refElement.passToProcessor()
|
||||
}
|
||||
@@ -88,8 +88,8 @@ class OutflowSlicer(
|
||||
when (instr) {
|
||||
is WriteValueInstruction -> instr.target.accessedDescriptor?.originalSource?.getPsi()?.passToProcessor()
|
||||
is CallInstruction -> {
|
||||
if (this.parentUsage.lambdaLevel > 0 && instr.receiverValues[pseudoValue] != null) {
|
||||
instr.element.passToProcessor(this.parentUsage.lambdaLevel - 1)
|
||||
if (parentUsage.lambdaLevel > 0 && instr.receiverValues[pseudoValue] != null) {
|
||||
instr.element.passToProcessor(parentUsage.lambdaLevel - 1)
|
||||
} else {
|
||||
instr.arguments[pseudoValue]?.originalSource?.getPsi()?.passToProcessor()
|
||||
}
|
||||
|
||||
@@ -38,6 +38,8 @@ abstract class Slicer(
|
||||
) {
|
||||
abstract fun processChildren()
|
||||
|
||||
protected val analysisScope = parentUsage.scope.toSearchScope()
|
||||
|
||||
protected class PseudocodeCache {
|
||||
private val computedPseudocodes = HashMap<KtElement, Pseudocode>()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user