Code refactoring

This commit is contained in:
Valentin Kipyatkov
2014-11-21 15:37:41 +03:00
parent 14d1b9ce35
commit 1f7f046552
@@ -73,11 +73,7 @@ class PartialBodyResolveFilter(
} }
val nameFilter = NameFilter() val nameFilter = NameFilter()
if (!statementMarks.hasMarks(block, MarkLevel.NEED_REFERENCE_RESOLVE)) return nameFilter val startStatement = statementMarks.lastMarkedStatement(block, MarkLevel.NEED_REFERENCE_RESOLVE) ?: return nameFilter
val startStatement = block.getLastChild().siblings(forward = false)
.filterIsInstance<JetExpression>()
.first { statementMarks.statementMark(it) > MarkLevel.TAKE }
for (statement in startStatement.siblings(forward = false)) { for (statement in startStatement.siblings(forward = false)) {
if (statement !is JetExpression) continue if (statement !is JetExpression) continue
@@ -480,9 +476,12 @@ class PartialBodyResolveFilter(
fun statementMark(statement: JetExpression): MarkLevel fun statementMark(statement: JetExpression): MarkLevel
= statementMarks[statement] ?: MarkLevel.SKIP = statementMarks[statement] ?: MarkLevel.SKIP
fun hasMarks(block: JetBlockExpression, minLevel: MarkLevel): Boolean { fun lastMarkedStatement(block: JetBlockExpression, minLevel: MarkLevel): JetExpression? {
val level = blockLevels[block] ?: return minLevel == MarkLevel.SKIP val level = blockLevels[block] ?: MarkLevel.SKIP
return level >= minLevel if (level < minLevel) return null // optimization
return block.getLastChild().siblings(forward = false)
.filterIsInstance<JetExpression>()
.first { statementMark(it) >= minLevel }
} }
} }