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:
@@ -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
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user