[JS IC] Fix signature finding in some cases
Found in KFSAD
This commit is contained in:
committed by
teamcityserver
parent
15648da2b4
commit
9bfe502afd
+3
-2
@@ -119,9 +119,10 @@ class IrModuleDeserializerWithBuiltIns(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override operator fun contains(idSig: IdSignature): Boolean {
|
override operator fun contains(idSig: IdSignature): Boolean {
|
||||||
if (idSig in irBuiltInsMap) return true
|
val topLevel = idSig.topLevelSignature()
|
||||||
|
if (topLevel in irBuiltInsMap) return true
|
||||||
|
|
||||||
return checkIsFunctionInterface(idSig) || idSig in delegate
|
return checkIsFunctionInterface(topLevel) || idSig in delegate
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun referenceSimpleFunctionByLocalSignature(file: IrFile, idSignature: IdSignature) : IrSimpleFunctionSymbol =
|
override fun referenceSimpleFunctionByLocalSignature(file: IrFile, idSignature: IdSignature) : IrSimpleFunctionSymbol =
|
||||||
|
|||||||
+2
-2
@@ -74,6 +74,7 @@ class IcFileDeserializer(
|
|||||||
originalSymbolDeserializer,
|
originalSymbolDeserializer,
|
||||||
linker.fakeOverrideBuilder.platformSpecificClassFilter,
|
linker.fakeOverrideBuilder.platformSpecificClassFilter,
|
||||||
linker.fakeOverrideBuilder,
|
linker.fakeOverrideBuilder,
|
||||||
|
allowRedeclaration = true,
|
||||||
compatibilityMode = CompatibilityMode.CURRENT
|
compatibilityMode = CompatibilityMode.CURRENT
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -81,9 +82,8 @@ class IcFileDeserializer(
|
|||||||
// TODO: reference lowered declarations cross-module
|
// TODO: reference lowered declarations cross-module
|
||||||
if (kind == BinarySymbolData.SymbolKind.FILE_SYMBOL) return file.symbol
|
if (kind == BinarySymbolData.SymbolKind.FILE_SYMBOL) return file.symbol
|
||||||
|
|
||||||
val topLevelSig = idSig.topLevelSignature()
|
|
||||||
val actualModuleDeserializer =
|
val actualModuleDeserializer =
|
||||||
moduleDeserializer.findModuleDeserializerForTopLevelId(topLevelSig)
|
moduleDeserializer.findModuleDeserializerForTopLevelId(idSig)
|
||||||
?: handleNoModuleDeserializerFound(idSig, moduleDeserializer.moduleDescriptor, moduleDeserializer.moduleDependencies)
|
?: handleNoModuleDeserializerFound(idSig, moduleDeserializer.moduleDescriptor, moduleDeserializer.moduleDependencies)
|
||||||
|
|
||||||
return actualModuleDeserializer.deserializeIrSymbol(idSig, kind)
|
return actualModuleDeserializer.deserializeIrSymbol(idSig, kind)
|
||||||
|
|||||||
+1
-1
@@ -90,7 +90,7 @@ class IcModuleDeserializer(
|
|||||||
?: error("No deserializer for file $file in module ${moduleDescriptor.name}")
|
?: error("No deserializer for file $file in module ${moduleDescriptor.name}")
|
||||||
|
|
||||||
// TODO: fix to topLevel checker
|
// TODO: fix to topLevel checker
|
||||||
override fun contains(idSig: IdSignature): Boolean = idSig in moduleReversedFileIndex || idSig in icModuleReversedFileIndex
|
override fun contains(idSig: IdSignature): Boolean = idSig.topLevelSignature() in moduleReversedFileIndex || idSig in icModuleReversedFileIndex
|
||||||
|
|
||||||
override fun deserializeIrSymbol(idSig: IdSignature, symbolKind: BinarySymbolData.SymbolKind): IrSymbol {
|
override fun deserializeIrSymbol(idSig: IdSignature, symbolKind: BinarySymbolData.SymbolKind): IrSymbol {
|
||||||
assert(idSig.isPubliclyVisible)
|
assert(idSig.isPubliclyVisible)
|
||||||
|
|||||||
Reference in New Issue
Block a user