-
Notifications
You must be signed in to change notification settings - Fork 45
Closed
Labels
comp-codegenIssue is related to code generatorIssue is related to code generatorctg-bugIssue is a bugIssue is a buglang-kotlinIssue is related to Kotlin language supportIssue is related to Kotlin language support
Milestone
Description
Description
Right now we are unable to properly assemble models if there are not nullable reference parameters in constructor -- such models are instantiated through reflection right now.
To Reproduce
Launch action on class Sample
from below:
data class Point(var x: Int, var y: Int)
class Sample(val y: Point) {
fun test(): Int {
if (y.x == 2)
return -1
return 0
}
}
Expected behavior
Tests with assembled models are generated.
Actual behavior
Classes are instantiated through reflection
Visual proofs (screenshots, logs, images)
@Test
fun testKek1() {
val s = (createInstance("nullability.Sample") as Sample)
val point = (createInstance("nullability.Point") as Point)
point.x = 2
setField(s, "nullability.Sample", "y", point)
val actual = kek(s)
assertEquals(-1, actual)
}
Environment
Symbolic execution 100%.
Additional context
Seems like the problem is that Kotlin compiler adds to constructor of Sample
instructions like INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkNotNullParameter (Ljava/lang/Object;Ljava/lang/String;)V
This leads to incorrect behavior of isAppropriate
and other methods in ConstructorAnalyzer
Metadata
Metadata
Assignees
Labels
comp-codegenIssue is related to code generatorIssue is related to code generatorctg-bugIssue is a bugIssue is a buglang-kotlinIssue is related to Kotlin language supportIssue is related to Kotlin language support
Type
Projects
Status
Done