@@ -3,6 +3,7 @@ package org.jetbrains.kotlin.backend.konan
3
3
import org.jetbrains.kotlin.backend.common.*
4
4
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
5
5
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
6
+ import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideChecker
6
7
import org.jetbrains.kotlin.backend.common.phaser.*
7
8
import org.jetbrains.kotlin.backend.common.serialization.mangle.ManglerChecker
8
9
import org.jetbrains.kotlin.backend.common.serialization.mangle.descriptor.Ir2DescriptorManglerAdapter
@@ -19,18 +20,17 @@ import org.jetbrains.kotlin.backend.konan.serialization.*
19
20
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
20
21
import org.jetbrains.kotlin.config.CommonConfigurationKeys
21
22
import org.jetbrains.kotlin.config.languageVersionSettings
22
- import org.jetbrains.kotlin.descriptors.*
23
+ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
24
+ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
23
25
import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin
24
26
import org.jetbrains.kotlin.descriptors.konan.KlibModuleOrigin
25
27
import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib
26
- import org.jetbrains.kotlin.incremental.components.NoLookupLocation
27
28
import org.jetbrains.kotlin.ir.declarations.IrFile
28
29
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
29
30
import org.jetbrains.kotlin.ir.symbols.IrSymbol
30
31
import org.jetbrains.kotlin.ir.util.*
31
32
import org.jetbrains.kotlin.ir.visitors.acceptVoid
32
33
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
33
- import org.jetbrains.kotlin.name.FqName
34
34
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
35
35
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
36
36
import org.jetbrains.kotlin.utils.DFS
@@ -168,7 +168,8 @@ internal val psiToIrPhase = konanUnitPhase(
168
168
169
169
val irProviderForCEnumsAndCStructs =
170
170
IrProviderForCEnumAndCStructStubs (generatorContext, interopBuiltIns, symbols)
171
- val deserializer = KonanIrLinker (
171
+ val linker =
172
+ KonanIrLinker (
172
173
moduleDescriptor,
173
174
functionIrClassFactory,
174
175
this as LoggingContext ,
@@ -188,7 +189,7 @@ internal val psiToIrPhase = konanUnitPhase(
188
189
generatorContext.symbolTable,
189
190
generatorContext.typeTranslator,
190
191
generatorContext.irBuiltIns,
191
- linker = deserializer
192
+ linker = linker
192
193
)
193
194
pluginExtensions.forEach { extension ->
194
195
extension.generate(module, pluginContext)
@@ -212,7 +213,7 @@ internal val psiToIrPhase = konanUnitPhase(
212
213
val kotlinLibrary = dependency.getCapability(KlibModuleOrigin .CAPABILITY )?.let {
213
214
(it as ? DeserializedKlibModuleOrigin )?.library
214
215
}
215
- deserializer .deserializeIrModuleHeader(dependency, kotlinLibrary)
216
+ linker .deserializeIrModuleHeader(dependency, kotlinLibrary)
216
217
}
217
218
if (dependencies.size == dependenciesCount) break
218
219
dependenciesCount = dependencies.size
@@ -224,7 +225,7 @@ internal val psiToIrPhase = konanUnitPhase(
224
225
.filter(ModuleDescriptor ::isFromInteropLibrary)
225
226
.forEach(irProviderForCEnumsAndCStructs::referenceAllEnumsAndStructsFrom)
226
227
227
- val irProviders = listOf (deserializer )
228
+ val irProviders = listOf (linker )
228
229
stubGenerator.setIrProviders(irProviders)
229
230
230
231
expectDescriptorToSymbol = mutableMapOf<DeclarationDescriptor , IrSymbol >()
@@ -239,7 +240,7 @@ internal val psiToIrPhase = konanUnitPhase(
239
240
if (expectActualLinker) expectDescriptorToSymbol else null
240
241
)
241
242
242
- deserializer .postProcess()
243
+ linker .postProcess()
243
244
244
245
if (this .stdlibModule in modulesWithoutDCE) {
245
246
functionIrClassFactory.buildAllClasses()
@@ -249,13 +250,15 @@ internal val psiToIrPhase = konanUnitPhase(
249
250
stubGenerator.unboundSymbolGeneration = true
250
251
251
252
module.acceptVoid(ManglerChecker (KonanManglerIr , Ir2DescriptorManglerAdapter (KonanManglerDesc )))
253
+ val fakeOverrideChecker = FakeOverrideChecker (KonanManglerIr , KonanManglerDesc )
254
+ linker.modules.values.forEach{ fakeOverrideChecker.check(it) }
252
255
253
256
irModule = module
254
- irModules = deserializer .modules.filterValues { llvmModuleSpecification.containsModule(it) }
257
+ irModules = linker .modules.filterValues { llvmModuleSpecification.containsModule(it) }
255
258
ir.symbols = symbols
256
259
257
260
functionIrClassFactory.module =
258
- (listOf (irModule!! ) + deserializer .modules.values)
261
+ (listOf (irModule!! ) + linker .modules.values)
259
262
.single { it.descriptor.isNativeStdlib() }
260
263
},
261
264
name = " Psi2Ir" ,
0 commit comments