diff --git a/kopy-compiler/test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update-each.fir.txt b/kopy-compiler/test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update-each.fir.txt new file mode 100644 index 0000000..e5a302a --- /dev/null +++ b/kopy-compiler/test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update-each.fir.txt @@ -0,0 +1,134 @@ +FILE: simple-deep-invalid-call-chain-deep-update-each.kt + package com.javiersc.kotlin.kopy.playground + + public final fun diagnostics(): R|kotlin/Unit| { + lval qux0: R|com/javiersc/kotlin/kopy/playground/Qux| = R|com/javiersc/kotlin/kopy/playground/Qux.Qux|(R|kotlin/collections/listOf|(vararg(Int(7), Int(9)))) + lval baz0: R|com/javiersc/kotlin/kopy/playground/Baz| = R|com/javiersc/kotlin/kopy/playground/Baz.Baz|(R|/qux0|, String(Random)) + lval bar0: R|com/javiersc/kotlin/kopy/playground/Bar| = R|com/javiersc/kotlin/kopy/playground/Bar.Bar|(R|/baz0|, Boolean(true)) + lval foo0: R|com/javiersc/kotlin/kopy/playground/Foo| = R|com/javiersc/kotlin/kopy/playground/Foo.Foo|(R|/bar0|, Char(W)) + lval foo10: R|com/javiersc/kotlin/kopy/playground/Foo| = R|/foo0|.R|SubstitutionOverride|( = foo0@fun R|com/javiersc/kotlin/kopy/playground/Foo|.(): R|kotlin/Unit| { + (this@R|special/anonymous|, R|/bar0|.R|com/javiersc/kotlin/kopy/playground/Bar.baz|.R|com/javiersc/kotlin/kopy/playground/Baz.qux|.R|com/javiersc/kotlin/kopy/playground/Qux.numbers|).R|SubstitutionOverride|( = updateEach@fun (it: R|kotlin/Int|): R|kotlin/Int| { + ^ R|/it|.R|kotlin/Int.plus|(Int(42)) + } + ) + } + ) + lval foo11: R|com/javiersc/kotlin/kopy/playground/Foo| = R|/foo0|.R|SubstitutionOverride|(copy@fun R|com/javiersc/kotlin/kopy/playground/Foo|.(): R|kotlin/Unit| { + (this@R|special/anonymous|, R|/bar0|.R|com/javiersc/kotlin/kopy/playground/Bar.baz|.R|com/javiersc/kotlin/kopy/playground/Baz.qux|.R|com/javiersc/kotlin/kopy/playground/Qux.numbers|).R|SubstitutionOverride|( = updateEach@fun (it: R|kotlin/Int|): R|kotlin/Int| { + ^ R|/it|.R|kotlin/Int.plus|(Int(42)) + } + ) + } + ) + lval foo20: R|com/javiersc/kotlin/kopy/playground/Foo| = R|/foo0|.R|SubstitutionOverride|( = foo0@fun R|com/javiersc/kotlin/kopy/playground/Foo|.(): R|kotlin/Unit| { + (this@R|special/anonymous|, this@R|special/anonymous|.R|com/javiersc/kotlin/kopy/playground/Foo.bar|.R|com/javiersc/kotlin/kopy/playground/Bar.baz|.R|kotlin/apply|( = apply@fun R|com/javiersc/kotlin/kopy/playground/Baz|.(): R|kotlin/Unit| { + ^@apply Unit + } + ).R|com/javiersc/kotlin/kopy/playground/Baz.qux|.R|com/javiersc/kotlin/kopy/playground/Qux.numbers|).R|SubstitutionOverride|( = updateEach@fun (it: R|kotlin/Int|): R|kotlin/Int| { + ^ R|/it|.R|kotlin/Int.plus|(Int(42)) + } + ) + } + ) + lval foo21: R|com/javiersc/kotlin/kopy/playground/Foo| = R|/foo0|.R|SubstitutionOverride|(copy@fun R|com/javiersc/kotlin/kopy/playground/Foo|.(): R|kotlin/Unit| { + (this@R|special/anonymous|, this@R|special/anonymous|.R|com/javiersc/kotlin/kopy/playground/Foo.bar|.R|com/javiersc/kotlin/kopy/playground/Bar.baz|.R|kotlin/apply|( = apply@fun R|com/javiersc/kotlin/kopy/playground/Baz|.(): R|kotlin/Unit| { + ^@apply Unit + } + ).R|com/javiersc/kotlin/kopy/playground/Baz.qux|.R|com/javiersc/kotlin/kopy/playground/Qux.numbers|).R|SubstitutionOverride|( = updateEach@fun (it: R|kotlin/Int|): R|kotlin/Int| { + ^ R|/it|.R|kotlin/Int.plus|(Int(42)) + } + ) + } + ) + } + @R|com/javiersc/kotlin/kopy/Kopy|() public final data class Qux : R|kotlin/Any|, R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + public constructor(numbers: R|kotlin/collections/List|): R|com/javiersc/kotlin/kopy/playground/Qux| { + super() + } + + public final val numbers: R|kotlin/collections/List| = R|/numbers| + public get(): R|kotlin/collections/List| + + public final operator fun component1(): R|kotlin/collections/List| + + public final fun copy(numbers: R|kotlin/collections/List| = this@R|com/javiersc/kotlin/kopy/playground/Qux|.R|com/javiersc/kotlin/kopy/playground/Qux.numbers|): R|com/javiersc/kotlin/kopy/playground/Qux| + + public open override fun _initKopyable(): R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + } + + public open override val _atomic: R|kotlinx/atomicfu/AtomicRef| + public get(): R|kotlinx/atomicfu/AtomicRef| + + } + @R|com/javiersc/kotlin/kopy/Kopy|() public final data class Baz : R|kotlin/Any|, R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + public constructor(qux: R|com/javiersc/kotlin/kopy/playground/Qux|, text: R|kotlin/String|): R|com/javiersc/kotlin/kopy/playground/Baz| { + super() + } + + public final val qux: R|com/javiersc/kotlin/kopy/playground/Qux| = R|/qux| + public get(): R|com/javiersc/kotlin/kopy/playground/Qux| + + public final val text: R|kotlin/String| = R|/text| + public get(): R|kotlin/String| + + public final operator fun component1(): R|com/javiersc/kotlin/kopy/playground/Qux| + + public final operator fun component2(): R|kotlin/String| + + public final fun copy(qux: R|com/javiersc/kotlin/kopy/playground/Qux| = this@R|com/javiersc/kotlin/kopy/playground/Baz|.R|com/javiersc/kotlin/kopy/playground/Baz.qux|, text: R|kotlin/String| = this@R|com/javiersc/kotlin/kopy/playground/Baz|.R|com/javiersc/kotlin/kopy/playground/Baz.text|): R|com/javiersc/kotlin/kopy/playground/Baz| + + public open override fun _initKopyable(): R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + } + + public open override val _atomic: R|kotlinx/atomicfu/AtomicRef| + public get(): R|kotlinx/atomicfu/AtomicRef| + + } + @R|com/javiersc/kotlin/kopy/Kopy|() public final data class Bar : R|kotlin/Any|, R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + public constructor(baz: R|com/javiersc/kotlin/kopy/playground/Baz|, isValid: R|kotlin/Boolean|): R|com/javiersc/kotlin/kopy/playground/Bar| { + super() + } + + public final val baz: R|com/javiersc/kotlin/kopy/playground/Baz| = R|/baz| + public get(): R|com/javiersc/kotlin/kopy/playground/Baz| + + public final val isValid: R|kotlin/Boolean| = R|/isValid| + public get(): R|kotlin/Boolean| + + public final operator fun component1(): R|com/javiersc/kotlin/kopy/playground/Baz| + + public final operator fun component2(): R|kotlin/Boolean| + + public final fun copy(baz: R|com/javiersc/kotlin/kopy/playground/Baz| = this@R|com/javiersc/kotlin/kopy/playground/Bar|.R|com/javiersc/kotlin/kopy/playground/Bar.baz|, isValid: R|kotlin/Boolean| = this@R|com/javiersc/kotlin/kopy/playground/Bar|.R|com/javiersc/kotlin/kopy/playground/Bar.isValid|): R|com/javiersc/kotlin/kopy/playground/Bar| + + public open override fun _initKopyable(): R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + } + + public open override val _atomic: R|kotlinx/atomicfu/AtomicRef| + public get(): R|kotlinx/atomicfu/AtomicRef| + + } + @R|com/javiersc/kotlin/kopy/Kopy|() public final data class Foo : R|kotlin/Any|, R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + public constructor(bar: R|com/javiersc/kotlin/kopy/playground/Bar|, letter: R|kotlin/Char|): R|com/javiersc/kotlin/kopy/playground/Foo| { + super() + } + + public final val bar: R|com/javiersc/kotlin/kopy/playground/Bar| = R|/bar| + public get(): R|com/javiersc/kotlin/kopy/playground/Bar| + + public final val letter: R|kotlin/Char| = R|/letter| + public get(): R|kotlin/Char| + + public final operator fun component1(): R|com/javiersc/kotlin/kopy/playground/Bar| + + public final operator fun component2(): R|kotlin/Char| + + public final fun copy(bar: R|com/javiersc/kotlin/kopy/playground/Bar| = this@R|com/javiersc/kotlin/kopy/playground/Foo|.R|com/javiersc/kotlin/kopy/playground/Foo.bar|, letter: R|kotlin/Char| = this@R|com/javiersc/kotlin/kopy/playground/Foo|.R|com/javiersc/kotlin/kopy/playground/Foo.letter|): R|com/javiersc/kotlin/kopy/playground/Foo| + + public open override fun _initKopyable(): R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + } + + public open override val _atomic: R|kotlinx/atomicfu/AtomicRef| + public get(): R|kotlinx/atomicfu/AtomicRef| + + } diff --git a/kopy-compiler/test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update-each.kt b/kopy-compiler/test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update-each.kt new file mode 100644 index 0000000..98e475f --- /dev/null +++ b/kopy-compiler/test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update-each.kt @@ -0,0 +1,24 @@ +// !LANGUAGE: +ContextReceivers +// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -MISSING_DEPENDENCY_CLASS -MISSING_DEPENDENCY_SUPERCLASS + +package com.javiersc.kotlin.kopy.playground + +import com.javiersc.kotlin.kopy.Kopy + +fun diagnostics() { + val qux0 = Qux(numbers = listOf(7, 9)) + val baz0 = Baz(qux = qux0, text = "Random") + val bar0 = Bar(baz = baz0, isValid = true) + val foo0 = Foo(bar = bar0, letter = 'W') + + val foo10 = foo0 { bar0.baz.qux.numbers.updateEach { it + 42 } } + val foo11 = foo0 copy { bar0.baz.qux.numbers.updateEach { it + 42 } } + + val foo20 = foo0 { bar.baz.apply {}.qux.numbers.updateEach { it + 42 } } + val foo21 = foo0 copy { bar.baz.apply {}.qux.numbers.updateEach { it + 42 } } +} + +@Kopy data class Qux(val numbers: List) +@Kopy data class Baz(val qux: Qux, val text: String) +@Kopy data class Bar(val baz: Baz, val isValid: Boolean) +@Kopy data class Foo(val bar: Bar, val letter: Char) diff --git a/kopy-compiler/test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update.fir.txt b/kopy-compiler/test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update.fir.txt new file mode 100644 index 0000000..2f7e003 --- /dev/null +++ b/kopy-compiler/test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update.fir.txt @@ -0,0 +1,134 @@ +FILE: simple-deep-invalid-call-chain-deep-update.kt + package com.javiersc.kotlin.kopy.playground + + public final fun diagnostics(): R|kotlin/Unit| { + lval qux0: R|com/javiersc/kotlin/kopy/playground/Qux| = R|com/javiersc/kotlin/kopy/playground/Qux.Qux|(Int(7)) + lval baz0: R|com/javiersc/kotlin/kopy/playground/Baz| = R|com/javiersc/kotlin/kopy/playground/Baz.Baz|(R|/qux0|, String(Random)) + lval bar0: R|com/javiersc/kotlin/kopy/playground/Bar| = R|com/javiersc/kotlin/kopy/playground/Bar.Bar|(R|/baz0|, Boolean(true)) + lval foo0: R|com/javiersc/kotlin/kopy/playground/Foo| = R|com/javiersc/kotlin/kopy/playground/Foo.Foo|(R|/bar0|, Char(W)) + lval foo10: R|com/javiersc/kotlin/kopy/playground/Foo| = R|/foo0|.R|SubstitutionOverride|( = foo0@fun R|com/javiersc/kotlin/kopy/playground/Foo|.(): R|kotlin/Unit| { + (this@R|special/anonymous|, R|/bar0|.R|com/javiersc/kotlin/kopy/playground/Bar.baz|.R|com/javiersc/kotlin/kopy/playground/Baz.qux|.R|com/javiersc/kotlin/kopy/playground/Qux.number|).R|SubstitutionOverride|( = update@fun (it: R|kotlin/Int|): R|kotlin/Int| { + ^ R|/it|.R|kotlin/Int.plus|(Int(42)) + } + ) + } + ) + lval foo11: R|com/javiersc/kotlin/kopy/playground/Foo| = R|/foo0|.R|SubstitutionOverride|(copy@fun R|com/javiersc/kotlin/kopy/playground/Foo|.(): R|kotlin/Unit| { + (this@R|special/anonymous|, R|/bar0|.R|com/javiersc/kotlin/kopy/playground/Bar.baz|.R|com/javiersc/kotlin/kopy/playground/Baz.qux|.R|com/javiersc/kotlin/kopy/playground/Qux.number|).R|SubstitutionOverride|( = update@fun (it: R|kotlin/Int|): R|kotlin/Int| { + ^ R|/it|.R|kotlin/Int.plus|(Int(42)) + } + ) + } + ) + lval foo20: R|com/javiersc/kotlin/kopy/playground/Foo| = R|/foo0|.R|SubstitutionOverride|( = foo0@fun R|com/javiersc/kotlin/kopy/playground/Foo|.(): R|kotlin/Unit| { + (this@R|special/anonymous|, this@R|special/anonymous|.R|com/javiersc/kotlin/kopy/playground/Foo.bar|.R|com/javiersc/kotlin/kopy/playground/Bar.baz|.R|kotlin/apply|( = apply@fun R|com/javiersc/kotlin/kopy/playground/Baz|.(): R|kotlin/Unit| { + ^@apply Unit + } + ).R|com/javiersc/kotlin/kopy/playground/Baz.qux|.R|com/javiersc/kotlin/kopy/playground/Qux.number|).R|SubstitutionOverride|( = update@fun (it: R|kotlin/Int|): R|kotlin/Int| { + ^ R|/it|.R|kotlin/Int.plus|(Int(42)) + } + ) + } + ) + lval foo21: R|com/javiersc/kotlin/kopy/playground/Foo| = R|/foo0|.R|SubstitutionOverride|(copy@fun R|com/javiersc/kotlin/kopy/playground/Foo|.(): R|kotlin/Unit| { + (this@R|special/anonymous|, this@R|special/anonymous|.R|com/javiersc/kotlin/kopy/playground/Foo.bar|.R|com/javiersc/kotlin/kopy/playground/Bar.baz|.R|kotlin/apply|( = apply@fun R|com/javiersc/kotlin/kopy/playground/Baz|.(): R|kotlin/Unit| { + ^@apply Unit + } + ).R|com/javiersc/kotlin/kopy/playground/Baz.qux|.R|com/javiersc/kotlin/kopy/playground/Qux.number|).R|SubstitutionOverride|( = update@fun (it: R|kotlin/Int|): R|kotlin/Int| { + ^ R|/it|.R|kotlin/Int.plus|(Int(42)) + } + ) + } + ) + } + @R|com/javiersc/kotlin/kopy/Kopy|() public final data class Qux : R|kotlin/Any|, R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + public constructor(number: R|kotlin/Int|): R|com/javiersc/kotlin/kopy/playground/Qux| { + super() + } + + public final val number: R|kotlin/Int| = R|/number| + public get(): R|kotlin/Int| + + public final operator fun component1(): R|kotlin/Int| + + public final fun copy(number: R|kotlin/Int| = this@R|com/javiersc/kotlin/kopy/playground/Qux|.R|com/javiersc/kotlin/kopy/playground/Qux.number|): R|com/javiersc/kotlin/kopy/playground/Qux| + + public open override fun _initKopyable(): R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + } + + public open override val _atomic: R|kotlinx/atomicfu/AtomicRef| + public get(): R|kotlinx/atomicfu/AtomicRef| + + } + @R|com/javiersc/kotlin/kopy/Kopy|() public final data class Baz : R|kotlin/Any|, R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + public constructor(qux: R|com/javiersc/kotlin/kopy/playground/Qux|, text: R|kotlin/String|): R|com/javiersc/kotlin/kopy/playground/Baz| { + super() + } + + public final val qux: R|com/javiersc/kotlin/kopy/playground/Qux| = R|/qux| + public get(): R|com/javiersc/kotlin/kopy/playground/Qux| + + public final val text: R|kotlin/String| = R|/text| + public get(): R|kotlin/String| + + public final operator fun component1(): R|com/javiersc/kotlin/kopy/playground/Qux| + + public final operator fun component2(): R|kotlin/String| + + public final fun copy(qux: R|com/javiersc/kotlin/kopy/playground/Qux| = this@R|com/javiersc/kotlin/kopy/playground/Baz|.R|com/javiersc/kotlin/kopy/playground/Baz.qux|, text: R|kotlin/String| = this@R|com/javiersc/kotlin/kopy/playground/Baz|.R|com/javiersc/kotlin/kopy/playground/Baz.text|): R|com/javiersc/kotlin/kopy/playground/Baz| + + public open override fun _initKopyable(): R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + } + + public open override val _atomic: R|kotlinx/atomicfu/AtomicRef| + public get(): R|kotlinx/atomicfu/AtomicRef| + + } + @R|com/javiersc/kotlin/kopy/Kopy|() public final data class Bar : R|kotlin/Any|, R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + public constructor(baz: R|com/javiersc/kotlin/kopy/playground/Baz|, isValid: R|kotlin/Boolean|): R|com/javiersc/kotlin/kopy/playground/Bar| { + super() + } + + public final val baz: R|com/javiersc/kotlin/kopy/playground/Baz| = R|/baz| + public get(): R|com/javiersc/kotlin/kopy/playground/Baz| + + public final val isValid: R|kotlin/Boolean| = R|/isValid| + public get(): R|kotlin/Boolean| + + public final operator fun component1(): R|com/javiersc/kotlin/kopy/playground/Baz| + + public final operator fun component2(): R|kotlin/Boolean| + + public final fun copy(baz: R|com/javiersc/kotlin/kopy/playground/Baz| = this@R|com/javiersc/kotlin/kopy/playground/Bar|.R|com/javiersc/kotlin/kopy/playground/Bar.baz|, isValid: R|kotlin/Boolean| = this@R|com/javiersc/kotlin/kopy/playground/Bar|.R|com/javiersc/kotlin/kopy/playground/Bar.isValid|): R|com/javiersc/kotlin/kopy/playground/Bar| + + public open override fun _initKopyable(): R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + } + + public open override val _atomic: R|kotlinx/atomicfu/AtomicRef| + public get(): R|kotlinx/atomicfu/AtomicRef| + + } + @R|com/javiersc/kotlin/kopy/Kopy|() public final data class Foo : R|kotlin/Any|, R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + public constructor(bar: R|com/javiersc/kotlin/kopy/playground/Bar|, letter: R|kotlin/Char|): R|com/javiersc/kotlin/kopy/playground/Foo| { + super() + } + + public final val bar: R|com/javiersc/kotlin/kopy/playground/Bar| = R|/bar| + public get(): R|com/javiersc/kotlin/kopy/playground/Bar| + + public final val letter: R|kotlin/Char| = R|/letter| + public get(): R|kotlin/Char| + + public final operator fun component1(): R|com/javiersc/kotlin/kopy/playground/Bar| + + public final operator fun component2(): R|kotlin/Char| + + public final fun copy(bar: R|com/javiersc/kotlin/kopy/playground/Bar| = this@R|com/javiersc/kotlin/kopy/playground/Foo|.R|com/javiersc/kotlin/kopy/playground/Foo.bar|, letter: R|kotlin/Char| = this@R|com/javiersc/kotlin/kopy/playground/Foo|.R|com/javiersc/kotlin/kopy/playground/Foo.letter|): R|com/javiersc/kotlin/kopy/playground/Foo| + + public open override fun _initKopyable(): R|com/javiersc/kotlin/kopy/runtime/Kopyable| { + } + + public open override val _atomic: R|kotlinx/atomicfu/AtomicRef| + public get(): R|kotlinx/atomicfu/AtomicRef| + + } diff --git a/kopy-compiler/test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update.kt b/kopy-compiler/test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update.kt new file mode 100644 index 0000000..7b06c62 --- /dev/null +++ b/kopy-compiler/test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update.kt @@ -0,0 +1,24 @@ +// !LANGUAGE: +ContextReceivers +// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -MISSING_DEPENDENCY_CLASS -MISSING_DEPENDENCY_SUPERCLASS + +package com.javiersc.kotlin.kopy.playground + +import com.javiersc.kotlin.kopy.Kopy + +fun diagnostics() { + val qux0 = Qux(number = 7) + val baz0 = Baz(qux = qux0, text = "Random") + val bar0 = Bar(baz = baz0, isValid = true) + val foo0 = Foo(bar = bar0, letter = 'W') + + val foo10 = foo0 { bar0.baz.qux.number.update { it + 42 } } + val foo11 = foo0 copy { bar0.baz.qux.number.update { it + 42 } } + + val foo20 = foo0 { bar.baz.apply {}.qux.number.update { it + 42 } } + val foo21 = foo0 copy { bar.baz.apply {}.qux.number.update { it + 42 } } +} + +@Kopy data class Qux(val number: Int) +@Kopy data class Baz(val qux: Qux, val text: String) +@Kopy data class Bar(val baz: Baz, val isValid: Boolean) +@Kopy data class Foo(val bar: Bar, val letter: Char) diff --git a/kopy-compiler/test-gen/java/com/javiersc/kotlin/kopy/compiler/DiagnosticTestGenerated.java b/kopy-compiler/test-gen/java/com/javiersc/kotlin/kopy/compiler/DiagnosticTestGenerated.java index 9ea3ebe..4fd22bd 100644 --- a/kopy-compiler/test-gen/java/com/javiersc/kotlin/kopy/compiler/DiagnosticTestGenerated.java +++ b/kopy-compiler/test-gen/java/com/javiersc/kotlin/kopy/compiler/DiagnosticTestGenerated.java @@ -35,6 +35,18 @@ public void testAllFilesPresentInInvalid_call_chain() { public void testSimple_deep_invalid_call_chain_deep_set() { runTest("test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-set.kt"); } + + @Test + @TestMetadata("simple-deep-invalid-call-chain-deep-update.kt") + public void testSimple_deep_invalid_call_chain_deep_update() { + runTest("test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update.kt"); + } + + @Test + @TestMetadata("simple-deep-invalid-call-chain-deep-update-each.kt") + public void testSimple_deep_invalid_call_chain_deep_update_each() { + runTest("test-data/diagnostics/invalid-call-chain/simple-deep-invalid-call-chain-deep-update-each.kt"); + } } @Nested