JVM IR: fix flags of $default methods in multi-file facades
Do not change origin of multifile class bridges to something else because, as it turns out, there are numerous origin-specific checks in the codegen that start to behave differently for multifile bridges. Instead of the method-targeted origin MULTIFILE_BRIDGE, use new class origin JVM_MULTIFILE_CLASS to detect whether a declaration is a multifile bridge. #KT-40198 Fixed #KT-43145 Fixed
This commit is contained in:
@@ -38,6 +38,8 @@ interface IrDeclarationOrigin {
|
||||
|
||||
object FILE_CLASS : IrDeclarationOriginImpl("FILE_CLASS")
|
||||
object SYNTHETIC_FILE_CLASS : IrDeclarationOriginImpl("SYNTHETIC_FILE_CLASS", isSynthetic = true)
|
||||
object JVM_MULTIFILE_CLASS : IrDeclarationOriginImpl("JVM_MULTIFILE_CLASS")
|
||||
|
||||
object SCRIPT_CLASS : IrDeclarationOriginImpl("SCRIPT_CLASS")
|
||||
object SCRIPT_STATEMENT : IrDeclarationOriginImpl("SCRIPT_STATEMENT")
|
||||
object SCRIPT_CALL_PARAMETER : IrDeclarationOriginImpl("SCRIPT_CALL_PARAMETER")
|
||||
|
||||
@@ -529,7 +529,10 @@ val IrFunctionAccessExpression.typeSubstitutionMap: Map<IrTypeParameterSymbol, I
|
||||
get() = getTypeSubstitutionMap(symbol.owner)
|
||||
|
||||
val IrDeclaration.isFileClass: Boolean
|
||||
get() = origin == IrDeclarationOrigin.FILE_CLASS || origin == IrDeclarationOrigin.SYNTHETIC_FILE_CLASS
|
||||
get() =
|
||||
origin == IrDeclarationOrigin.FILE_CLASS ||
|
||||
origin == IrDeclarationOrigin.SYNTHETIC_FILE_CLASS ||
|
||||
origin == IrDeclarationOrigin.JVM_MULTIFILE_CLASS
|
||||
|
||||
val IrValueDeclaration.isImmutable: Boolean
|
||||
get() = this is IrValueParameter || this is IrVariable && !isVar
|
||||
|
||||
Reference in New Issue
Block a user