Support bridges in interfaces. Fix for KT-12416: Missed bridges in js backend
#KT-12416 Fixed
This commit is contained in:
+7
-2
@@ -77,6 +77,8 @@ class ClassTranslator private constructor(
|
||||
|
||||
private fun isTrait(): Boolean = descriptor.kind == ClassKind.INTERFACE
|
||||
|
||||
private fun isAnnotation(): Boolean = descriptor.kind == ClassKind.ANNOTATION_CLASS
|
||||
|
||||
private fun generateClassCreateInvocationArguments() {
|
||||
val properties = SmartList<JsPropertyInitializer>()
|
||||
val staticProperties = SmartList<JsPropertyInitializer>()
|
||||
@@ -369,7 +371,7 @@ class ClassTranslator private constructor(
|
||||
}
|
||||
|
||||
private fun generatedBridgeMethods(properties: MutableList<JsPropertyInitializer>) {
|
||||
if (isTrait()) return
|
||||
if (isAnnotation()) return
|
||||
|
||||
generateBridgesToTraitImpl(properties)
|
||||
|
||||
@@ -387,7 +389,10 @@ class ClassTranslator private constructor(
|
||||
private fun generateOtherBridges(properties: MutableList<JsPropertyInitializer>) {
|
||||
for (memberDescriptor in descriptor.defaultType.memberScope.getContributedDescriptors()) {
|
||||
if (memberDescriptor is FunctionDescriptor) {
|
||||
val bridgesToGenerate = generateBridgesForFunctionDescriptor(memberDescriptor, identity())
|
||||
val bridgesToGenerate = generateBridgesForFunctionDescriptor(memberDescriptor, identity()) {
|
||||
//There is no DefaultImpls in js backend so if method non-abstract it should be recognized as non-abstract on bridges calculation
|
||||
false
|
||||
}
|
||||
|
||||
for (bridge in bridgesToGenerate) {
|
||||
generateBridge(bridge, properties)
|
||||
|
||||
Reference in New Issue
Block a user