[Tests] Add JS/Wasm IC invalidation tests using intra-module IRInliner

^KT-79799
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirES6InvalidationPerFileTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirES6InvalidationPerFileTestGenerated.java
index 0f2515e..0aeafc468 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirES6InvalidationPerFileTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirES6InvalidationPerFileTestGenerated.java
@@ -375,6 +375,12 @@
   }
 
   @Test
+  @TestMetadata("jsCodeWithConstStringFromOtherModuleWithIRInliner")
+  public void testJsCodeWithConstStringFromOtherModuleWithIRInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/");
+  }
+
+  @Test
   @TestMetadata("jsExport")
   public void testJsExport() {
     runTest("js/js.translator/testData/incremental/invalidation/jsExport/");
@@ -465,6 +471,18 @@
   }
 
   @Test
+  @TestMetadata("moveAndModifyInlineFunctionWithCrossModuleInliner")
+  public void testMoveAndModifyInlineFunctionWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveAndModifyInlineFunctionWithIntraModuleInliner")
+  public void testMoveAndModifyInlineFunctionWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("moveExternalDeclarationsBetweenFiles")
   public void testMoveExternalDeclarationsBetweenFiles() {
     runTest("js/js.translator/testData/incremental/invalidation/moveExternalDeclarationsBetweenFiles/");
@@ -483,12 +501,36 @@
   }
 
   @Test
+  @TestMetadata("moveFilesBetweenModulesWithCrossModuleInliner")
+  public void testMoveFilesBetweenModulesWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveFilesBetweenModulesWithIntraModuleInliner")
+  public void testMoveFilesBetweenModulesWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("moveInlineFunctionBetweenModules")
   public void testMoveInlineFunctionBetweenModules() {
     runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModules/");
   }
 
   @Test
+  @TestMetadata("moveInlineFunctionBetweenModulesWithCrossModuleInliner")
+  public void testMoveInlineFunctionBetweenModulesWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveInlineFunctionBetweenModulesWithIntraModuleInliner")
+  public void testMoveInlineFunctionBetweenModulesWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("multiModuleEagerInitialization")
   public void testMultiModuleEagerInitialization() {
     runTest("js/js.translator/testData/incremental/invalidation/multiModuleEagerInitialization/");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirES6InvalidationPerModuleTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirES6InvalidationPerModuleTestGenerated.java
index b6c3156..dff2d7b 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirES6InvalidationPerModuleTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirES6InvalidationPerModuleTestGenerated.java
@@ -375,6 +375,12 @@
   }
 
   @Test
+  @TestMetadata("jsCodeWithConstStringFromOtherModuleWithIRInliner")
+  public void testJsCodeWithConstStringFromOtherModuleWithIRInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/");
+  }
+
+  @Test
   @TestMetadata("jsExport")
   public void testJsExport() {
     runTest("js/js.translator/testData/incremental/invalidation/jsExport/");
@@ -465,6 +471,18 @@
   }
 
   @Test
+  @TestMetadata("moveAndModifyInlineFunctionWithCrossModuleInliner")
+  public void testMoveAndModifyInlineFunctionWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveAndModifyInlineFunctionWithIntraModuleInliner")
+  public void testMoveAndModifyInlineFunctionWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("moveExternalDeclarationsBetweenFiles")
   public void testMoveExternalDeclarationsBetweenFiles() {
     runTest("js/js.translator/testData/incremental/invalidation/moveExternalDeclarationsBetweenFiles/");
@@ -483,12 +501,36 @@
   }
 
   @Test
+  @TestMetadata("moveFilesBetweenModulesWithCrossModuleInliner")
+  public void testMoveFilesBetweenModulesWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveFilesBetweenModulesWithIntraModuleInliner")
+  public void testMoveFilesBetweenModulesWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("moveInlineFunctionBetweenModules")
   public void testMoveInlineFunctionBetweenModules() {
     runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModules/");
   }
 
   @Test
+  @TestMetadata("moveInlineFunctionBetweenModulesWithCrossModuleInliner")
+  public void testMoveInlineFunctionBetweenModulesWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveInlineFunctionBetweenModulesWithIntraModuleInliner")
+  public void testMoveInlineFunctionBetweenModulesWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("multiModuleEagerInitialization")
   public void testMultiModuleEagerInitialization() {
     runTest("js/js.translator/testData/incremental/invalidation/multiModuleEagerInitialization/");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirInvalidationPerFileTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirInvalidationPerFileTestGenerated.java
index a645ae8..34965c2 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirInvalidationPerFileTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirInvalidationPerFileTestGenerated.java
@@ -373,6 +373,12 @@
   }
 
   @Test
+  @TestMetadata("jsCodeWithConstStringFromOtherModuleWithIRInliner")
+  public void testJsCodeWithConstStringFromOtherModuleWithIRInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/");
+  }
+
+  @Test
   @TestMetadata("jsExport")
   public void testJsExport() {
     runTest("js/js.translator/testData/incremental/invalidation/jsExport/");
@@ -463,6 +469,18 @@
   }
 
   @Test
+  @TestMetadata("moveAndModifyInlineFunctionWithCrossModuleInliner")
+  public void testMoveAndModifyInlineFunctionWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveAndModifyInlineFunctionWithIntraModuleInliner")
+  public void testMoveAndModifyInlineFunctionWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("moveExternalDeclarationsBetweenFiles")
   public void testMoveExternalDeclarationsBetweenFiles() {
     runTest("js/js.translator/testData/incremental/invalidation/moveExternalDeclarationsBetweenFiles/");
@@ -481,12 +499,36 @@
   }
 
   @Test
+  @TestMetadata("moveFilesBetweenModulesWithCrossModuleInliner")
+  public void testMoveFilesBetweenModulesWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveFilesBetweenModulesWithIntraModuleInliner")
+  public void testMoveFilesBetweenModulesWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("moveInlineFunctionBetweenModules")
   public void testMoveInlineFunctionBetweenModules() {
     runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModules/");
   }
 
   @Test
+  @TestMetadata("moveInlineFunctionBetweenModulesWithCrossModuleInliner")
+  public void testMoveInlineFunctionBetweenModulesWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveInlineFunctionBetweenModulesWithIntraModuleInliner")
+  public void testMoveInlineFunctionBetweenModulesWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("multiModuleEagerInitialization")
   public void testMultiModuleEagerInitialization() {
     runTest("js/js.translator/testData/incremental/invalidation/multiModuleEagerInitialization/");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirInvalidationPerModuleTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirInvalidationPerModuleTestGenerated.java
index ac8c34b..cdd3af5 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirInvalidationPerModuleTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirInvalidationPerModuleTestGenerated.java
@@ -373,6 +373,12 @@
   }
 
   @Test
+  @TestMetadata("jsCodeWithConstStringFromOtherModuleWithIRInliner")
+  public void testJsCodeWithConstStringFromOtherModuleWithIRInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/");
+  }
+
+  @Test
   @TestMetadata("jsExport")
   public void testJsExport() {
     runTest("js/js.translator/testData/incremental/invalidation/jsExport/");
@@ -463,6 +469,18 @@
   }
 
   @Test
+  @TestMetadata("moveAndModifyInlineFunctionWithCrossModuleInliner")
+  public void testMoveAndModifyInlineFunctionWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveAndModifyInlineFunctionWithIntraModuleInliner")
+  public void testMoveAndModifyInlineFunctionWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("moveExternalDeclarationsBetweenFiles")
   public void testMoveExternalDeclarationsBetweenFiles() {
     runTest("js/js.translator/testData/incremental/invalidation/moveExternalDeclarationsBetweenFiles/");
@@ -481,12 +499,36 @@
   }
 
   @Test
+  @TestMetadata("moveFilesBetweenModulesWithCrossModuleInliner")
+  public void testMoveFilesBetweenModulesWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveFilesBetweenModulesWithIntraModuleInliner")
+  public void testMoveFilesBetweenModulesWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("moveInlineFunctionBetweenModules")
   public void testMoveInlineFunctionBetweenModules() {
     runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModules/");
   }
 
   @Test
+  @TestMetadata("moveInlineFunctionBetweenModulesWithCrossModuleInliner")
+  public void testMoveInlineFunctionBetweenModulesWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveInlineFunctionBetweenModulesWithIntraModuleInliner")
+  public void testMoveInlineFunctionBetweenModulesWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("multiModuleEagerInitialization")
   public void testMultiModuleEagerInitialization() {
     runTest("js/js.translator/testData/incremental/invalidation/multiModuleEagerInitialization/");
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModule/project.fir.info b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModule/project.fir.info
index b0f3e67..4b103b7 100644
--- a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModule/project.fir.info
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModule/project.fir.info
@@ -1,26 +1,32 @@
 MODULES: lib1, lib2, main
 
 STEP 0:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, lib2, main
     dirty js modules: lib1, lib2, main
     dirty js files: lib1/l1, lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction, main, main/m, main/m.export
 STEP 1..3:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, lib2, main
     dirty js modules: lib1, lib2
     dirty js files: lib1/l1, lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
 STEP 4:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, lib2, main
     dirty js modules: lib2
     dirty js files: lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
 STEP 5:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, lib2, main
     dirty js modules: lib1
     dirty js files: lib1/l1
 STEP 6:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, lib2, main
     dirty js modules: lib2
     dirty js files: lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
 STEP 7:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, lib2, main
     dirty js modules: lib1, lib2
     dirty js files: lib1/l1, lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/directives.txt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/directives.txt
new file mode 100644
index 0000000..57a07ce
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/directives.txt
@@ -0,0 +1 @@
+// TARGET_BACKEND: JS_IR, JS_IR_ES6
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.0.kt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.0.kt
new file mode 100644
index 0000000..89a021b
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.0.kt
@@ -0,0 +1,2 @@
+const val CONST_KEY = "KEY"
+const val CONST_VALUE = "0"
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.1.kt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.1.kt
new file mode 100644
index 0000000..e7f6198
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.1.kt
@@ -0,0 +1,2 @@
+const val CONST_KEY = "KEY"
+const val CONST_VALUE = "1"
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.2.kt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.2.kt
new file mode 100644
index 0000000..80d184f
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.2.kt
@@ -0,0 +1,2 @@
+const val CONST_KEY = "KEY"
+const val CONST_VALUE = 2
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.3.kt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.3.kt
new file mode 100644
index 0000000..72c28c8
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.3.kt
@@ -0,0 +1,2 @@
+const val CONST_KEY = "KEY"
+const val CONST_VALUE = 3
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.5.kt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.5.kt
new file mode 100644
index 0000000..4f02e80
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.5.kt
@@ -0,0 +1,2 @@
+const val CONST_KEY = "KEY"
+const val CONST_VALUE = 6
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.7.kt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.7.kt
new file mode 100644
index 0000000..992680f
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/l1.7.kt
@@ -0,0 +1,2 @@
+const val CONST_KEY = "KEY"
+const val CONST_VALUE = 7
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/module.fir.info b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/module.fir.info
new file mode 100644
index 0000000..b49b580
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib1/module.fir.info
@@ -0,0 +1,26 @@
+STEP 0:
+    modifications:
+        U : l1.0.kt -> l1.kt
+    added file: l1.kt
+STEP 1:
+    modifications:
+        U : l1.1.kt -> l1.kt
+    modified ir: l1.kt
+STEP 2:
+    modifications:
+        U : l1.2.kt -> l1.kt
+    modified ir: l1.kt
+STEP 3:
+    modifications:
+        U : l1.3.kt -> l1.kt
+    modified ir: l1.kt
+STEP 4:
+STEP 5:
+    modifications:
+        U : l1.5.kt -> l1.kt
+    modified ir: l1.kt
+STEP 6:
+STEP 7:
+    modifications:
+        U : l1.7.kt -> l1.kt
+    modified ir: l1.kt
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/inlineFunction.0.6.kt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/inlineFunction.0.6.kt
new file mode 100644
index 0000000..6834b50
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/inlineFunction.0.6.kt
@@ -0,0 +1,3 @@
+inline fun inlineFunction(): String {
+    return js("var testObj = { $CONST_KEY: '$CONST_VALUE' }; testObj.$CONST_KEY") as String
+}
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/inlineFunction.4.kt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/inlineFunction.4.kt
new file mode 100644
index 0000000..6c48714
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/inlineFunction.4.kt
@@ -0,0 +1,3 @@
+inline fun inlineFunction(): String {
+    return js("'4'") as String
+}
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/inlineFunctionProxy.0.kt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/inlineFunctionProxy.0.kt
new file mode 100644
index 0000000..f36f366
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/inlineFunctionProxy.0.kt
@@ -0,0 +1 @@
+fun inlineFunctionProxy() = inlineFunction()
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/module.fir.info b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/module.fir.info
new file mode 100644
index 0000000..3a9f18a
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/module.fir.info
@@ -0,0 +1,27 @@
+STEP 0:
+    dependencies: lib1
+    modifications:
+        U : inlineFunction.0.6.kt -> inlineFunction.kt
+        U : inlineFunctionProxy.0.kt -> inlineFunctionProxy.kt
+        U : simpleFunction.0.6.kt -> simpleFunction.kt
+    added file: inlineFunction.kt, inlineFunctionProxy.kt, simpleFunction.kt
+STEP 1..3:
+    dependencies: lib1
+    modified ir: simpleFunction.kt, inlineFunction.kt inlineFunctionProxy.kt
+STEP 4:
+    dependencies: lib1
+    modifications:
+        U : inlineFunction.4.kt -> inlineFunction.kt
+        U : simpleFunction.4.kt -> simpleFunction.kt
+    modified ir: simpleFunction.kt, inlineFunction.kt inlineFunctionProxy.kt
+STEP 5:
+    dependencies: lib1
+STEP 6:
+    dependencies: lib1
+    modifications:
+        U : inlineFunction.0.6.kt -> inlineFunction.kt
+        U : simpleFunction.0.6.kt -> simpleFunction.kt
+    modified ir: simpleFunction.kt, inlineFunction.kt inlineFunctionProxy.kt
+STEP 7:
+    dependencies: lib1
+    modified ir: simpleFunction.kt, inlineFunction.kt inlineFunctionProxy.kt
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/simpleFunction.0.6.kt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/simpleFunction.0.6.kt
new file mode 100644
index 0000000..9fb59d4
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/simpleFunction.0.6.kt
@@ -0,0 +1,3 @@
+fun simpleFunction(): String {
+    return js("var testObj = { $CONST_KEY: '$CONST_VALUE' }; testObj.$CONST_KEY") as String
+}
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/simpleFunction.4.kt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/simpleFunction.4.kt
new file mode 100644
index 0000000..9c2e990
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/lib2/simpleFunction.4.kt
@@ -0,0 +1,3 @@
+fun simpleFunction(): String {
+    return js("'4'") as String
+}
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/main/m.kt b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/main/m.kt
new file mode 100644
index 0000000..4a3005f
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/main/m.kt
@@ -0,0 +1,11 @@
+fun box(stepId: Int, isWasm: Boolean): String {
+    val expected = if (stepId == 5) stepId - 1 else stepId
+
+    var got = simpleFunction()
+    if (got != "$expected") return "Fail simpleFunction: '$got' != '$expected'"
+
+    got = inlineFunctionProxy()
+    if (got != "$expected") return "Fail inlineFunctionProxy: '$got' != '$expected'"
+
+    return "OK"
+}
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/main/module.info b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/main/module.info
new file mode 100644
index 0000000..87a25fa
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/main/module.info
@@ -0,0 +1,5 @@
+STEP 0:
+    dependencies: lib1, lib2
+    added file: m.kt
+STEP 1..7:
+    dependencies: lib1, lib2
diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/project.fir.info b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/project.fir.info
new file mode 100644
index 0000000..76dba3b
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstStringFromOtherModuleWithIRInliner/project.fir.info
@@ -0,0 +1,32 @@
+MODULES: lib1, lib2, main
+
+STEP 0:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, main
+    dirty js modules: lib1, lib2, main
+    dirty js files: lib1/l1, lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction, main, main/m, main/m.export
+STEP 1..3:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, main
+    dirty js modules: lib1, lib2
+    dirty js files: lib1/l1, lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
+STEP 4:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, main
+    dirty js modules: lib2
+    dirty js files: lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
+STEP 5:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, main
+    dirty js modules: lib1
+    dirty js files: lib1/l1
+STEP 6:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, main
+    dirty js modules: lib2
+    dirty js files: lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
+STEP 7:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, main
+    dirty js modules: lib1, lib2
+    dirty js files: lib1/l1, lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
diff --git a/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunction/project.info b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunction/project.info
index c2561e2..913d942 100644
--- a/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunction/project.info
+++ b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunction/project.info
@@ -1,10 +1,12 @@
 MODULES: lib1, main
 
 STEP 0:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, main
     dirty js modules: lib1, main
     dirty js files:   lib1/l1a, lib1/l1b, lib1/test, main/m, main/m.export, main
 STEP 1:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, main
     dirty js modules: lib1
     dirty js files:   lib1/l1a, lib1/l1b, lib1/test
diff --git a/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/l1a.0.kt b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/l1a.0.kt
new file mode 100644
index 0000000..6034641
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/l1a.0.kt
@@ -0,0 +1 @@
+inline fun inlineFun() = 0
diff --git a/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/l1a.1.kt b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/l1a.1.kt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/l1a.1.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/l1b.0.kt b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/l1b.0.kt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/l1b.0.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/l1b.1.kt b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/l1b.1.kt
new file mode 100644
index 0000000..6d3b263
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/l1b.1.kt
@@ -0,0 +1 @@
+inline fun inlineFun() = 1
diff --git a/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/module.info b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/module.info
new file mode 100644
index 0000000..30e8220
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/module.info
@@ -0,0 +1,10 @@
+STEP 0:
+    modifications:
+        U : l1a.0.kt -> l1a.kt
+        U : l1b.0.kt -> l1b.kt
+    added file: l1a.kt, l1b.kt, test.kt
+STEP 1:
+    modifications:
+        U : l1a.1.kt -> l1a.kt
+        U : l1b.1.kt -> l1b.kt
+    modified ir: l1a.kt, l1b.kt test.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/test.kt b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/test.kt
new file mode 100644
index 0000000..1eac76c
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/lib1/test.kt
@@ -0,0 +1 @@
+fun test() = inlineFun()
diff --git a/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/main/m.kt b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/main/m.kt
new file mode 100644
index 0000000..1de2a70
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/main/m.kt
@@ -0,0 +1,7 @@
+fun box(stepId: Int, isWasm: Boolean): String {
+    val x = test()
+    if (x != stepId) {
+        return "Fail: $x != $stepId"
+    }
+    return "OK"
+}
diff --git a/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/main/module.info b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/main/module.info
new file mode 100644
index 0000000..5d087aa
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/main/module.info
@@ -0,0 +1,5 @@
+STEP 0:
+    dependencies: lib1
+    added file: m.kt
+STEP 1:
+    dependencies: lib1
diff --git a/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/project.info b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/project.info
new file mode 100644
index 0000000..a4c4416
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIRInliner/project.info
@@ -0,0 +1,12 @@
+MODULES: lib1, main
+
+STEP 0:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization
+    libs: lib1, main
+    dirty js modules: lib1, main
+    dirty js files:   lib1/l1a, lib1/l1b, lib1/test, main/m, main/m.export, main
+STEP 1:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization
+    libs: lib1, main
+    dirty js modules: lib1
+    dirty js files:   lib1/l1a, lib1/l1b, lib1/test
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModules/project.info b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModules/project.info
index d8bbf0c..f20cd48 100644
--- a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModules/project.info
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModules/project.info
@@ -1,14 +1,17 @@
 MODULES: lib1, lib2, lib3, main
 
 STEP 0:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, lib2, lib3, main
     dirty js modules: lib1, lib2, lib3, main
     dirty js files:   lib1/l11, lib1/l12, lib2/l21, lib3/l3, main/m, main/m.export, main
 STEP 1:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, lib2, lib3, main
     dirty js modules: lib1, lib2, lib3, main
     dirty js files:   lib2/l21, lib2/l22, lib3/l3, main/m
 STEP 2:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, lib2, lib3, main
     dirty js modules: lib1, lib2, lib3, main
     dirty js files:   lib1/l12_n, lib2/l21, lib3/l3, main/m
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib1/l11.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib1/l11.kt
new file mode 100644
index 0000000..6efca34
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib1/l11.kt
@@ -0,0 +1 @@
+inline fun foo(a: Int) = a * 2
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib1/l12.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib1/l12.kt
new file mode 100644
index 0000000..7a486e1
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib1/l12.kt
@@ -0,0 +1 @@
+inline fun bar(b: Int) = b - 3
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib1/l12_n.2.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib1/l12_n.2.kt
new file mode 100644
index 0000000..a4b0c99
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib1/l12_n.2.kt
@@ -0,0 +1 @@
+inline fun bar(b: Int) = b - 5
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib1/module.info b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib1/module.info
new file mode 100644
index 0000000..37e34cd
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib1/module.info
@@ -0,0 +1,11 @@
+STEP 0:
+    added file: l11.kt, l12.kt
+STEP 1:
+    modifications:
+        D : l12.kt
+    removed file: l12.kt
+STEP 2:
+    modifications:
+        U : l12_n.2.kt -> l12_n.kt
+    added file: l12_n.kt
+
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib2/l21.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib2/l21.kt
new file mode 100644
index 0000000..6f4ceeb
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib2/l21.kt
@@ -0,0 +1 @@
+inline fun qux(x: Int, y: Int) = foo(x) + bar(y)
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib2/l22.1.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib2/l22.1.kt
new file mode 100644
index 0000000..a8c4776
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib2/l22.1.kt
@@ -0,0 +1 @@
+inline fun bar(b: Int) = b - 4
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib2/module.info b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib2/module.info
new file mode 100644
index 0000000..55f7b06
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib2/module.info
@@ -0,0 +1,15 @@
+STEP 0:
+    dependencies: lib1
+    added file: l21.kt
+STEP 1:
+    dependencies: lib1
+    modifications:
+        U : l22.1.kt -> l22.kt
+    added file: l22.kt
+    modified ir: l21.kt
+STEP 2:
+    dependencies: lib1
+    modifications:
+        D : l22.kt
+    modified ir: l21.kt
+    removed file: l22.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib3/l3.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib3/l3.kt
new file mode 100644
index 0000000..110a30a
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib3/l3.kt
@@ -0,0 +1 @@
+inline fun dex(x: Int, y: Int) = qux(x * y, y - x)
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib3/module.info b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib3/module.info
new file mode 100644
index 0000000..867f179
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/lib3/module.info
@@ -0,0 +1,6 @@
+STEP 0:
+    dependencies: lib1, lib2
+    added file: l3.kt
+STEP 1..2:
+    dependencies: lib1, lib2
+    modified ir: l3.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/main/m.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/main/m.kt
new file mode 100644
index 0000000..792c2a2
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/main/m.kt
@@ -0,0 +1,9 @@
+fun box(stepId: Int, isWasm: Boolean): String {
+    when (stepId) {
+        0 -> if (dex(4, 2) != 11) return "Fail"
+        1 -> if (dex(4, 2) != 10) return "Fail"
+        2 -> if (dex(4, 2) != 9) return "Fail"
+        else -> return "Unknown"
+    }
+    return "OK"
+}
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/main/module.info b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/main/module.info
new file mode 100644
index 0000000..9ac8273
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/main/module.info
@@ -0,0 +1,6 @@
+STEP 0:
+    dependencies: lib1, lib2, lib3
+    added file: m.kt
+STEP 1..2:
+    dependencies: lib1, lib2, lib3
+    modified ir: m.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/project.info b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/project.info
new file mode 100644
index 0000000..dfa6ef8
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/project.info
@@ -0,0 +1,17 @@
+MODULES: lib1, lib2, lib3, main
+
+STEP 0:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization, +IrCrossModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, lib3, main
+    dirty js modules: lib1, lib2, lib3, main
+    dirty js files:   lib1/l11, lib1/l12, lib2/l21, lib3/l3, main/m, main/m.export, main
+STEP 1:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization, +IrCrossModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, lib3, main
+    dirty js modules: lib1, lib2, lib3, main
+    dirty js files:   lib2/l21, lib2/l22, lib3/l3, main/m
+STEP 2:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization, +IrCrossModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, lib3, main
+    dirty js modules: lib1, lib2, lib3, main
+    dirty js files:   lib1/l12_n, lib2/l21, lib3/l3, main/m
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib1/l11.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib1/l11.kt
new file mode 100644
index 0000000..6efca34
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib1/l11.kt
@@ -0,0 +1 @@
+inline fun foo(a: Int) = a * 2
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib1/l12.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib1/l12.kt
new file mode 100644
index 0000000..7a486e1
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib1/l12.kt
@@ -0,0 +1 @@
+inline fun bar(b: Int) = b - 3
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib1/l12_n.2.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib1/l12_n.2.kt
new file mode 100644
index 0000000..a4b0c99
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib1/l12_n.2.kt
@@ -0,0 +1 @@
+inline fun bar(b: Int) = b - 5
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib1/module.info b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib1/module.info
new file mode 100644
index 0000000..37e34cd
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib1/module.info
@@ -0,0 +1,11 @@
+STEP 0:
+    added file: l11.kt, l12.kt
+STEP 1:
+    modifications:
+        D : l12.kt
+    removed file: l12.kt
+STEP 2:
+    modifications:
+        U : l12_n.2.kt -> l12_n.kt
+    added file: l12_n.kt
+
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib2/l21.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib2/l21.kt
new file mode 100644
index 0000000..6f4ceeb
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib2/l21.kt
@@ -0,0 +1 @@
+inline fun qux(x: Int, y: Int) = foo(x) + bar(y)
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib2/l22.1.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib2/l22.1.kt
new file mode 100644
index 0000000..a8c4776
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib2/l22.1.kt
@@ -0,0 +1 @@
+inline fun bar(b: Int) = b - 4
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib2/module.info b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib2/module.info
new file mode 100644
index 0000000..55f7b06
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib2/module.info
@@ -0,0 +1,15 @@
+STEP 0:
+    dependencies: lib1
+    added file: l21.kt
+STEP 1:
+    dependencies: lib1
+    modifications:
+        U : l22.1.kt -> l22.kt
+    added file: l22.kt
+    modified ir: l21.kt
+STEP 2:
+    dependencies: lib1
+    modifications:
+        D : l22.kt
+    modified ir: l21.kt
+    removed file: l22.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib3/l3.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib3/l3.kt
new file mode 100644
index 0000000..110a30a
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib3/l3.kt
@@ -0,0 +1 @@
+inline fun dex(x: Int, y: Int) = qux(x * y, y - x)
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib3/module.info b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib3/module.info
new file mode 100644
index 0000000..93ef92c
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/lib3/module.info
@@ -0,0 +1,6 @@
+STEP 0:
+    dependencies: lib1, lib2
+    added file: l3.kt
+STEP 1..2:
+    dependencies: lib1, lib2
+    updated imports: l3.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/main/m.kt b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/main/m.kt
new file mode 100644
index 0000000..792c2a2
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/main/m.kt
@@ -0,0 +1,9 @@
+fun box(stepId: Int, isWasm: Boolean): String {
+    when (stepId) {
+        0 -> if (dex(4, 2) != 11) return "Fail"
+        1 -> if (dex(4, 2) != 10) return "Fail"
+        2 -> if (dex(4, 2) != 9) return "Fail"
+        else -> return "Unknown"
+    }
+    return "OK"
+}
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/main/module.info b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/main/module.info
new file mode 100644
index 0000000..4d0b6da
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/main/module.info
@@ -0,0 +1,6 @@
+STEP 0:
+    dependencies: lib1, lib2, lib3
+    added file: m.kt
+STEP 1..2:
+    dependencies: lib1, lib2, lib3
+    updated imports: m.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/project.info b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/project.info
new file mode 100644
index 0000000..8857374
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/project.info
@@ -0,0 +1,17 @@
+MODULES: lib1, lib2, lib3, main
+
+STEP 0:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, lib3, main
+    dirty js modules: lib1, lib2, lib3, main
+    dirty js files:   lib1/l11, lib1/l12, lib2/l21, lib3/l3, main/m, main/m.export, main
+STEP 1:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, lib3, main
+    dirty js modules: lib1, lib2, lib3, main
+    dirty js files:   lib2/l21, lib2/l22, lib3/l3, main/m
+STEP 2:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, lib3, main
+    dirty js modules: lib1, lib2, lib3, main
+    dirty js files:   lib1/l12_n, lib2/l21, lib3/l3, main/m
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModules/project.info b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModules/project.info
index 0626cd8..75f8b30 100644
--- a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModules/project.info
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModules/project.info
@@ -1,10 +1,12 @@
 MODULES: lib1, lib2, lib3, main
 
 STEP 0:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, lib2, lib3, main
     dirty js modules: lib1, lib2, lib3, main
     dirty js files:   lib1/l1, lib2/l2, lib3/l3, main/m, main/m.export, main
 STEP 1:
+    language: -IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
     libs: lib1, lib2, lib3, main
     dirty js modules: lib1, lib2, lib3, main
     dirty js files:   lib1/l1, lib2/l2, lib2/l22, lib3/l3, main/m
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib1/l1.1.kt b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib1/l1.1.kt
new file mode 100644
index 0000000..b08d4e0
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib1/l1.1.kt
@@ -0,0 +1 @@
+inline fun foo(a: Int) = a * 3
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib1/l1.kt b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib1/l1.kt
new file mode 100644
index 0000000..e26e69a
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib1/l1.kt
@@ -0,0 +1,3 @@
+inline fun foo(a: Int) = a * 2
+
+inline fun bar(b: Int) = b - 3
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib1/module.info b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib1/module.info
new file mode 100644
index 0000000..b00df4e
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib1/module.info
@@ -0,0 +1,6 @@
+STEP 0:
+    added file: l1.kt
+STEP 1:
+    modifications:
+        U : l1.1.kt -> l1.kt
+    modified ir: l1.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib2/l2.kt b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib2/l2.kt
new file mode 100644
index 0000000..6f4ceeb
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib2/l2.kt
@@ -0,0 +1 @@
+inline fun qux(x: Int, y: Int) = foo(x) + bar(y)
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib2/l22.1.kt b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib2/l22.1.kt
new file mode 100644
index 0000000..a8c4776
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib2/l22.1.kt
@@ -0,0 +1 @@
+inline fun bar(b: Int) = b - 4
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib2/module.info b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib2/module.info
new file mode 100644
index 0000000..7042ed8
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib2/module.info
@@ -0,0 +1,9 @@
+STEP 0:
+    dependencies: lib1
+    added file: l2.kt
+STEP 1:
+    dependencies: lib1
+    modifications:
+        U : l22.1.kt -> l22.kt
+    added file: l22.kt
+    modified ir: l2.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib3/l3.kt b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib3/l3.kt
new file mode 100644
index 0000000..110a30a
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib3/l3.kt
@@ -0,0 +1 @@
+inline fun dex(x: Int, y: Int) = qux(x * y, y - x)
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib3/module.info b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib3/module.info
new file mode 100644
index 0000000..85f4ed2
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/lib3/module.info
@@ -0,0 +1,6 @@
+STEP 0:
+    dependencies: lib1, lib2
+    added file: l3.kt
+STEP 1:
+    dependencies: lib1, lib2
+    modified ir: l3.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/main/m.kt b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/main/m.kt
new file mode 100644
index 0000000..c5a96dd
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/main/m.kt
@@ -0,0 +1,8 @@
+fun box(stepId: Int, isWasm: Boolean): String {
+    when (stepId) {
+        0 -> if (dex(4, 2) != 11) return "Fail"
+        1 -> if (dex(4, 2) != 18) return "Fail"
+        else -> return "Unknown"
+    }
+    return "OK"
+}
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/main/module.info b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/main/module.info
new file mode 100644
index 0000000..62a82fb
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/main/module.info
@@ -0,0 +1,6 @@
+STEP 0:
+    dependencies: lib1, lib2, lib3
+    added file: m.kt
+STEP 1:
+    dependencies: lib1, lib2, lib3
+    modified ir: m.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/project.info b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/project.info
new file mode 100644
index 0000000..ee9c1046
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/project.info
@@ -0,0 +1,12 @@
+MODULES: lib1, lib2, lib3, main
+
+STEP 0:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization, +IrCrossModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, lib3, main
+    dirty js modules: lib1, lib2, lib3, main
+    dirty js files:   lib1/l1, lib2/l2, lib3/l3, main/m, main/m.export, main
+STEP 1:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization, +IrCrossModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, lib3, main
+    dirty js modules: lib1, lib2, lib3, main
+    dirty js files:   lib1/l1, lib2/l2, lib2/l22, lib3/l3, main/m
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib1/l1.1.kt b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib1/l1.1.kt
new file mode 100644
index 0000000..b08d4e0
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib1/l1.1.kt
@@ -0,0 +1 @@
+inline fun foo(a: Int) = a * 3
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib1/l1.kt b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib1/l1.kt
new file mode 100644
index 0000000..e26e69a
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib1/l1.kt
@@ -0,0 +1,3 @@
+inline fun foo(a: Int) = a * 2
+
+inline fun bar(b: Int) = b - 3
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib1/module.info b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib1/module.info
new file mode 100644
index 0000000..b00df4e
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib1/module.info
@@ -0,0 +1,6 @@
+STEP 0:
+    added file: l1.kt
+STEP 1:
+    modifications:
+        U : l1.1.kt -> l1.kt
+    modified ir: l1.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib2/l2.kt b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib2/l2.kt
new file mode 100644
index 0000000..6f4ceeb
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib2/l2.kt
@@ -0,0 +1 @@
+inline fun qux(x: Int, y: Int) = foo(x) + bar(y)
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib2/l22.1.kt b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib2/l22.1.kt
new file mode 100644
index 0000000..a8c4776
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib2/l22.1.kt
@@ -0,0 +1 @@
+inline fun bar(b: Int) = b - 4
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib2/module.info b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib2/module.info
new file mode 100644
index 0000000..7042ed8
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib2/module.info
@@ -0,0 +1,9 @@
+STEP 0:
+    dependencies: lib1
+    added file: l2.kt
+STEP 1:
+    dependencies: lib1
+    modifications:
+        U : l22.1.kt -> l22.kt
+    added file: l22.kt
+    modified ir: l2.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib3/l3.kt b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib3/l3.kt
new file mode 100644
index 0000000..110a30a
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib3/l3.kt
@@ -0,0 +1 @@
+inline fun dex(x: Int, y: Int) = qux(x * y, y - x)
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib3/module.info b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib3/module.info
new file mode 100644
index 0000000..08a3290
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/lib3/module.info
@@ -0,0 +1,6 @@
+STEP 0:
+    dependencies: lib1, lib2
+    added file: l3.kt
+STEP 1:
+    dependencies: lib1, lib2
+    updated imports: l3.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/main/m.kt b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/main/m.kt
new file mode 100644
index 0000000..c5a96dd
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/main/m.kt
@@ -0,0 +1,8 @@
+fun box(stepId: Int, isWasm: Boolean): String {
+    when (stepId) {
+        0 -> if (dex(4, 2) != 11) return "Fail"
+        1 -> if (dex(4, 2) != 18) return "Fail"
+        else -> return "Unknown"
+    }
+    return "OK"
+}
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/main/module.info b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/main/module.info
new file mode 100644
index 0000000..18fc898
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/main/module.info
@@ -0,0 +1,6 @@
+STEP 0:
+    dependencies: lib1, lib2, lib3
+    added file: m.kt
+STEP 1:
+    dependencies: lib1, lib2, lib3
+    updated imports: m.kt
diff --git a/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/project.info b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/project.info
new file mode 100644
index 0000000..c6370ef
--- /dev/null
+++ b/js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/project.info
@@ -0,0 +1,12 @@
+MODULES: lib1, lib2, lib3, main
+
+STEP 0:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, lib3, main
+    dirty js modules: lib1, lib2, lib3, main
+    dirty js files:   lib1/l1, lib2/l2, lib3/l3, main/m, main/m.export, main
+STEP 1:
+    language: +IrIntraModuleInlinerBeforeKlibSerialization, -IrCrossModuleInlinerBeforeKlibSerialization
+    libs: lib1, lib2, lib3, main
+    dirty js modules: lib1, lib2, lib3, main
+    dirty js files:   lib1/l1, lib2/l2, lib2/l22, lib3/l3, main/m
diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/incremental/FirWasmInvalidationTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/incremental/FirWasmInvalidationTestGenerated.java
index f312a05..9c7cf2b 100644
--- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/incremental/FirWasmInvalidationTestGenerated.java
+++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/incremental/FirWasmInvalidationTestGenerated.java
@@ -367,6 +367,18 @@
   }
 
   @Test
+  @TestMetadata("moveAndModifyInlineFunctionWithCrossModuleInliner")
+  public void testMoveAndModifyInlineFunctionWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveAndModifyInlineFunctionWithIntraModuleInliner")
+  public void testMoveAndModifyInlineFunctionWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveAndModifyInlineFunctionWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("moveExternalDeclarationsBetweenJsModules")
   public void testMoveExternalDeclarationsBetweenJsModules() {
     runTest("js/js.translator/testData/incremental/invalidation/moveExternalDeclarationsBetweenJsModules/");
@@ -379,12 +391,36 @@
   }
 
   @Test
+  @TestMetadata("moveFilesBetweenModulesWithCrossModuleInliner")
+  public void testMoveFilesBetweenModulesWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveFilesBetweenModulesWithIntraModuleInliner")
+  public void testMoveFilesBetweenModulesWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveFilesBetweenModulesWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("moveInlineFunctionBetweenModules")
   public void testMoveInlineFunctionBetweenModules() {
     runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModules/");
   }
 
   @Test
+  @TestMetadata("moveInlineFunctionBetweenModulesWithCrossModuleInliner")
+  public void testMoveInlineFunctionBetweenModulesWithCrossModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithCrossModuleInliner/");
+  }
+
+  @Test
+  @TestMetadata("moveInlineFunctionBetweenModulesWithIntraModuleInliner")
+  public void testMoveInlineFunctionBetweenModulesWithIntraModuleInliner() {
+    runTest("js/js.translator/testData/incremental/invalidation/moveInlineFunctionBetweenModulesWithIntraModuleInliner/");
+  }
+
+  @Test
   @TestMetadata("multiModuleEagerInitialization")
   public void testMultiModuleEagerInitialization() {
     runTest("js/js.translator/testData/incremental/invalidation/multiModuleEagerInitialization/");