[JS IR] Support function type interfaces in incremental cache infrastructure

The patch removes logic of generating extra IrFiles (fake file) into
 IrModuleFragment for the function type interfaces during klib deserialization,
 because IC infrastructure can not process files which do not exist in klib.

 Instead of adding extra IrFiles during deserialization, the empty files
 with required packages are added into Kotlin/JS stdlib physically.
 These files are used as containers for function type interface declarations.

 Since Kotlin/WASM uses the same klib loading infrastructure as Kotlin/JS,
 the the empty files are added into Kotlin/WASM stdlib as well.

 The patch also adds a check that IrModuleFagment has files only from klib.

^KT-55720 Fixed
This commit is contained in:
Alexander Korepanov
2023-02-03 12:23:48 +00:00
committed by Space Team
parent 1c3c5417ad
commit 9324cf3360
46 changed files with 574 additions and 81 deletions
@@ -0,0 +1,10 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package kotlin.coroutines
// Do not remove this file.
// During klib deserialization the compiler uses this file as a place for declaring function type interfaces.
// See FunctionTypeInterfacePackages.kt
@@ -0,0 +1,10 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package kotlin
// Do not remove this file.
// During klib deserialization the compiler uses this file as a place for declaring function type interfaces.
// See FunctionTypeInterfacePackages.kt
@@ -0,0 +1,10 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package kotlin.reflect
// Do not remove this file.
// During klib deserialization the compiler uses this file as a place for declaring function type interfaces.
// See FunctionTypeInterfacePackages.kt
@@ -0,0 +1,10 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package kotlin.coroutines
// Do not remove this file.
// During klib deserialization the compiler uses this file as a place for declaring function type interfaces.
// See FunctionTypeInterfacePackages.kt
@@ -0,0 +1,10 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package kotlin
// Do not remove this file.
// During klib deserialization the compiler uses this file as a place for declaring function type interfaces.
// See FunctionTypeInterfacePackages.kt
@@ -0,0 +1,10 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package kotlin.reflect
// Do not remove this file.
// During klib deserialization the compiler uses this file as a place for declaring function type interfaces.
// See FunctionTypeInterfacePackages.kt