Partial body resolve: corrected it for explicit function type but unfortunately it does not work for non-explicit type yet

This commit is contained in:
Valentin Kipyatkov
2014-11-21 12:32:26 +03:00
parent 058af69078
commit cc84e9682b
5 changed files with 36 additions and 3 deletions
@@ -68,6 +68,10 @@ class PartialBodyResolveFilter(
//TODO: do..while is special case
private fun processBlock(block: JetBlockExpression): NameFilter {
if (isValueNeeded(block)) {
block.lastStatement()?.let { statementTree.mark(it, MarkLevel.NEED_REFERENCE_RESOLVE) }
}
val nameFilter = NameFilter()
if (!statementTree.hasMarks(block, MarkLevel.NEED_REFERENCE_RESOLVE)) return nameFilter
@@ -117,9 +121,6 @@ class PartialBodyResolveFilter(
val level = statementTree.statementMark(statement)
if (level > MarkLevel.RESOLVE_STATEMENT) {
for (nestedBlock in statementTree.blocks(statement)) {
if (isValueNeeded(nestedBlock)) {
nestedBlock.lastStatement()?.let { statementTree.mark(it, MarkLevel.NEED_REFERENCE_RESOLVE) }
}
val childFilter = processBlock(nestedBlock)
nameFilter.addNames(childFilter)
}