From 1f7f0465526740f57451ae56f0e447e06a62074a Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 21 Nov 2014 15:37:41 +0300 Subject: [PATCH] Code refactoring --- .../lang/resolve/lazy/PartialBodyResolveFilter.kt | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/idea/ide-common/src/org/jetbrains/jet/lang/resolve/lazy/PartialBodyResolveFilter.kt b/idea/ide-common/src/org/jetbrains/jet/lang/resolve/lazy/PartialBodyResolveFilter.kt index 3af506b136d..add1fc9b0f7 100644 --- a/idea/ide-common/src/org/jetbrains/jet/lang/resolve/lazy/PartialBodyResolveFilter.kt +++ b/idea/ide-common/src/org/jetbrains/jet/lang/resolve/lazy/PartialBodyResolveFilter.kt @@ -73,11 +73,7 @@ class PartialBodyResolveFilter( } val nameFilter = NameFilter() - if (!statementMarks.hasMarks(block, MarkLevel.NEED_REFERENCE_RESOLVE)) return nameFilter - - val startStatement = block.getLastChild().siblings(forward = false) - .filterIsInstance() - .first { statementMarks.statementMark(it) > MarkLevel.TAKE } + val startStatement = statementMarks.lastMarkedStatement(block, MarkLevel.NEED_REFERENCE_RESOLVE) ?: return nameFilter for (statement in startStatement.siblings(forward = false)) { if (statement !is JetExpression) continue @@ -480,9 +476,12 @@ class PartialBodyResolveFilter( fun statementMark(statement: JetExpression): MarkLevel = statementMarks[statement] ?: MarkLevel.SKIP - fun hasMarks(block: JetBlockExpression, minLevel: MarkLevel): Boolean { - val level = blockLevels[block] ?: return minLevel == MarkLevel.SKIP - return level >= minLevel + fun lastMarkedStatement(block: JetBlockExpression, minLevel: MarkLevel): JetExpression? { + val level = blockLevels[block] ?: MarkLevel.SKIP + if (level < minLevel) return null // optimization + return block.getLastChild().siblings(forward = false) + .filterIsInstance() + .first { statementMark(it) >= minLevel } } }