diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/entireContract.kt b/analysis/low-level-api-fir/testdata/inBlockModification/entireContract.kt
new file mode 100644
index 00000000000..79cff317223
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/entireContract.kt
@@ -0,0 +1,9 @@
+import kotlin.contracts.InvocationKind
+
+inline fun foo(block: () -> Unit) {
+ kotlin.contracts.contract {
+ callsInPlace(block, InvocationKind.EXACTLY_ONCE)
+ }
+
+ block()
+}
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/entireContract.txt b/analysis/low-level-api-fir/testdata/inBlockModification/entireContract.txt
new file mode 100644
index 00000000000..f0b4ea084b4
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/entireContract.txt
@@ -0,0 +1 @@
+IN-BLOCK MODIFICATION IS NOT APPLICABLE FOR THIS PLACE
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/entireFunctionBody.kt b/analysis/low-level-api-fir/testdata/inBlockModification/entireFunctionBody.kt
new file mode 100644
index 00000000000..75145b0a21d
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/entireFunctionBody.kt
@@ -0,0 +1,3 @@
+// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtBlockExpression
+
+fun doo() {}
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/entireFunctionBody.txt b/analysis/low-level-api-fir/testdata/inBlockModification/entireFunctionBody.txt
new file mode 100644
index 00000000000..13fd252d3c2
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/entireFunctionBody.txt
@@ -0,0 +1,6 @@
+BEFORE MODIFICATION:
+public final [ResolvedTo(BODY_RESOLVE)] fun doo(): R|kotlin/Unit| {
+}
+
+AFTER MODIFICATION:
+public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] fun doo(): R|kotlin/Unit| { LAZY_BLOCK }
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/entireGetterBody.kt b/analysis/low-level-api-fir/testdata/inBlockModification/entireGetterBody.kt
new file mode 100644
index 00000000000..23cf10645ab
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/entireGetterBody.kt
@@ -0,0 +1,4 @@
+// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtBlockExpression
+
+val i: Int
+ get() {}
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/entireGetterBody.txt b/analysis/low-level-api-fir/testdata/inBlockModification/entireGetterBody.txt
new file mode 100644
index 00000000000..23da416dddf
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/entireGetterBody.txt
@@ -0,0 +1,8 @@
+BEFORE MODIFICATION:
+public final [ResolvedTo(BODY_RESOLVE)] val i: R|kotlin/Int|
+ public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int| {
+ }
+
+AFTER MODIFICATION:
+public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] val i: R|kotlin/Int|
+ public [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] get(): R|kotlin/Int| { LAZY_BLOCK }
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/entireInitializer.kt b/analysis/low-level-api-fir/testdata/inBlockModification/entireInitializer.kt
new file mode 100644
index 00000000000..6d361e1543f
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/entireInitializer.kt
@@ -0,0 +1,3 @@
+// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtConstantExpression
+
+val i: Int = 42
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/entireInitializer.txt b/analysis/low-level-api-fir/testdata/inBlockModification/entireInitializer.txt
new file mode 100644
index 00000000000..4559817b1d1
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/entireInitializer.txt
@@ -0,0 +1,7 @@
+BEFORE MODIFICATION:
+public final [ResolvedTo(BODY_RESOLVE)] val i: R|kotlin/Int| = Int(42)
+ public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
+
+AFTER MODIFICATION:
+public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] val i: R|kotlin/Int| = LAZY_EXPRESSION
+ public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/entireSetterBody.kt b/analysis/low-level-api-fir/testdata/inBlockModification/entireSetterBody.kt
new file mode 100644
index 00000000000..9c3e025e698
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/entireSetterBody.kt
@@ -0,0 +1,4 @@
+// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtBlockExpression
+
+var i: Int = 4
+ set(value) {}
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/entireSetterBody.txt b/analysis/low-level-api-fir/testdata/inBlockModification/entireSetterBody.txt
new file mode 100644
index 00000000000..d608f4cf463
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/entireSetterBody.txt
@@ -0,0 +1,10 @@
+BEFORE MODIFICATION:
+public final [ResolvedTo(BODY_RESOLVE)] var i: R|kotlin/Int| = Int(4)
+ public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
+ public [ResolvedTo(BODY_RESOLVE)] set([ResolvedTo(BODY_RESOLVE)] value: R|kotlin/Int|): R|kotlin/Unit| {
+ }
+
+AFTER MODIFICATION:
+public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] var i: R|kotlin/Int| = Int(4)
+ public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
+ public [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] set([ResolvedTo(BODY_RESOLVE)] value: R|kotlin/Int|): R|kotlin/Unit| { LAZY_BLOCK }
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/insideContract.kt b/analysis/low-level-api-fir/testdata/inBlockModification/insideContract.kt
new file mode 100644
index 00000000000..8bdd2bd00da
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/insideContract.kt
@@ -0,0 +1,9 @@
+import kotlin.contracts.InvocationKind
+
+inline fun foo(block: () -> Unit) {
+ kotlin.contracts.contract {
+ callsInPlace(block, InvocationKind.EXACTLY_ONCE)
+ }
+
+ block()
+}
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/insideContract.txt b/analysis/low-level-api-fir/testdata/inBlockModification/insideContract.txt
new file mode 100644
index 00000000000..f0b4ea084b4
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/insideContract.txt
@@ -0,0 +1 @@
+IN-BLOCK MODIFICATION IS NOT APPLICABLE FOR THIS PLACE
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/insideDefaultParameter.kt b/analysis/low-level-api-fir/testdata/inBlockModification/insideDefaultParameter.kt
new file mode 100644
index 00000000000..f2dc1b1cbb0
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/insideDefaultParameter.kt
@@ -0,0 +1,7 @@
+class MyProducer {
+ fun produce(): Int = 4
+}
+
+fun MyProducer.testFun(param1: Int = produce()) {
+ 42
+}
diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/insideDefaultParameter.txt b/analysis/low-level-api-fir/testdata/inBlockModification/insideDefaultParameter.txt
new file mode 100644
index 00000000000..f0b4ea084b4
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/inBlockModification/insideDefaultParameter.txt
@@ -0,0 +1 @@
+IN-BLOCK MODIFICATION IS NOT APPLICABLE FOR THIS PLACE
diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/OutOfContentRootInBlockModificationTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/OutOfContentRootInBlockModificationTestGenerated.java
index fec486eb50f..63be6ea0c04 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/OutOfContentRootInBlockModificationTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/OutOfContentRootInBlockModificationTestGenerated.java
@@ -30,6 +30,36 @@ public class OutOfContentRootInBlockModificationTestGenerated extends AbstractOu
runTest("analysis/low-level-api-fir/testdata/inBlockModification/contract.kt");
}
+ @Test
+ @TestMetadata("entireContract.kt")
+ public void testEntireContract() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/entireContract.kt");
+ }
+
+ @Test
+ @TestMetadata("entireFunctionBody.kt")
+ public void testEntireFunctionBody() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/entireFunctionBody.kt");
+ }
+
+ @Test
+ @TestMetadata("entireGetterBody.kt")
+ public void testEntireGetterBody() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/entireGetterBody.kt");
+ }
+
+ @Test
+ @TestMetadata("entireInitializer.kt")
+ public void testEntireInitializer() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/entireInitializer.kt");
+ }
+
+ @Test
+ @TestMetadata("entireSetterBody.kt")
+ public void testEntireSetterBody() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/entireSetterBody.kt");
+ }
+
@Test
@TestMetadata("extensionWithDefaultParameters.kt")
public void testExtensionWithDefaultParameters() throws Exception {
@@ -42,6 +72,18 @@ public class OutOfContentRootInBlockModificationTestGenerated extends AbstractOu
runTest("analysis/low-level-api-fir/testdata/inBlockModification/functionWithDefaultParameters.kt");
}
+ @Test
+ @TestMetadata("insideContract.kt")
+ public void testInsideContract() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/insideContract.kt");
+ }
+
+ @Test
+ @TestMetadata("insideDefaultParameter.kt")
+ public void testInsideDefaultParameter() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/insideDefaultParameter.kt");
+ }
+
@Test
@TestMetadata("memberFunWithBodyWithContract.kt")
public void testMemberFunWithBodyWithContract() throws Exception {
diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/SourceInBlockModificationTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/SourceInBlockModificationTestGenerated.java
index ba494a07eb9..3ad2dfd22d2 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/SourceInBlockModificationTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/SourceInBlockModificationTestGenerated.java
@@ -30,6 +30,36 @@ public class SourceInBlockModificationTestGenerated extends AbstractSourceInBloc
runTest("analysis/low-level-api-fir/testdata/inBlockModification/contract.kt");
}
+ @Test
+ @TestMetadata("entireContract.kt")
+ public void testEntireContract() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/entireContract.kt");
+ }
+
+ @Test
+ @TestMetadata("entireFunctionBody.kt")
+ public void testEntireFunctionBody() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/entireFunctionBody.kt");
+ }
+
+ @Test
+ @TestMetadata("entireGetterBody.kt")
+ public void testEntireGetterBody() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/entireGetterBody.kt");
+ }
+
+ @Test
+ @TestMetadata("entireInitializer.kt")
+ public void testEntireInitializer() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/entireInitializer.kt");
+ }
+
+ @Test
+ @TestMetadata("entireSetterBody.kt")
+ public void testEntireSetterBody() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/entireSetterBody.kt");
+ }
+
@Test
@TestMetadata("extensionWithDefaultParameters.kt")
public void testExtensionWithDefaultParameters() throws Exception {
@@ -42,6 +72,18 @@ public class SourceInBlockModificationTestGenerated extends AbstractSourceInBloc
runTest("analysis/low-level-api-fir/testdata/inBlockModification/functionWithDefaultParameters.kt");
}
+ @Test
+ @TestMetadata("insideContract.kt")
+ public void testInsideContract() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/insideContract.kt");
+ }
+
+ @Test
+ @TestMetadata("insideDefaultParameter.kt")
+ public void testInsideDefaultParameter() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/inBlockModification/insideDefaultParameter.kt");
+ }
+
@Test
@TestMetadata("memberFunWithBodyWithContract.kt")
public void testMemberFunWithBodyWithContract() throws Exception {