Replace eager assert with lazy in PseudocodeVariableDataCollector

For some reason some IDE tests would fail after the simple change. Add explicit
toString() call on the descriptor, to be investigated later
This commit is contained in:
Alexander Udalov
2015-04-16 12:56:33 +03:00
parent 1b0a78077f
commit 9ed8ad8dd4
@@ -16,15 +16,19 @@
package org.jetbrains.kotlin.cfg package org.jetbrains.kotlin.cfg
import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction
import org.jetbrains.kotlin.cfg.pseudocode.Pseudocode import org.jetbrains.kotlin.cfg.pseudocode.Pseudocode
import org.jetbrains.kotlin.descriptors.VariableDescriptor import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.cfg.pseudocodeTraverser.*
import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.VariableDeclarationInstruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.VariableDeclarationInstruction
import org.jetbrains.kotlin.cfg.pseudocodeTraverser.Edges
import java.util.* import org.jetbrains.kotlin.cfg.pseudocodeTraverser.TraversalOrder
import org.jetbrains.kotlin.cfg.pseudocodeTraverser.collectData
import org.jetbrains.kotlin.cfg.pseudocodeTraverser.traverse
import org.jetbrains.kotlin.descriptors.VariableDescriptor
import org.jetbrains.kotlin.resolve.BindingContext
import java.util.ArrayList
import java.util.Collections
import java.util.HashMap
public class PseudocodeVariableDataCollector( public class PseudocodeVariableDataCollector(
private val bindingContext: BindingContext, private val bindingContext: BindingContext,
@@ -75,11 +79,16 @@ public class PseudocodeVariableDataCollector(
val variableDeclarationElement = instruction.variableDeclarationElement val variableDeclarationElement = instruction.variableDeclarationElement
val descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, variableDeclarationElement) val descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, variableDeclarationElement)
if (descriptor != null) { if (descriptor != null) {
assert(descriptor is VariableDescriptor, // TODO: investigate why tests fail without this eager computation here
"Variable descriptor should correspond to the instruction for ${instruction.element.getText()}.\n" + descriptor.toString()
"Descriptor : $descriptor")
assert(descriptor is VariableDescriptor) {
"Variable descriptor should correspond to the instruction for ${instruction.element.getText()}.\n" +
"Descriptor: $descriptor"
}
lexicalScopeVariableInfo.registerVariableDeclaredInScope( lexicalScopeVariableInfo.registerVariableDeclaredInScope(
descriptor as VariableDescriptor, instruction.lexicalScope) descriptor as VariableDescriptor, instruction.lexicalScope
)
} }
} }
}) })