[NI] Use original descriptor for functions imported from object during JS mangling

^KT-35904 Fixed
This commit is contained in:
Victor Petukhov
2020-01-28 18:23:31 +03:00
parent fa924065ca
commit 4490efab3e
4 changed files with 35 additions and 4 deletions
@@ -19,11 +19,11 @@ package org.jetbrains.kotlin.resolve
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.types.TypeSubstitutor
fun FunctionDescriptor.asImportedFromObject(original: FunctionImportedFromObject? = null) =
FunctionImportedFromObject(this, original)
fun FunctionDescriptor.asImportedFromObject(descriptor: FunctionImportedFromObject? = null) =
FunctionImportedFromObject(this, descriptor?.original)
fun PropertyDescriptor.asImportedFromObject(original: PropertyImportedFromObject? = null) =
PropertyImportedFromObject(this, original)
fun PropertyDescriptor.asImportedFromObject(descriptor: PropertyImportedFromObject? = null) =
PropertyImportedFromObject(this, descriptor?.original)
abstract class ImportedFromObjectCallableDescriptor<out TCallable : CallableMemberDescriptor>(
val callableFromObject: TCallable,
@@ -2138,6 +2138,11 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
runTest("js/js.translator/testData/box/expression/function/manglingClashWithFunctionsWithoutParameters.kt");
}
@TestMetadata("manglingImportedFromObjectWithNI.kt")
public void testManglingImportedFromObjectWithNI() throws Exception {
runTest("js/js.translator/testData/box/expression/function/manglingImportedFromObjectWithNI.kt");
}
@TestMetadata("manglingStability.kt")
public void testManglingStability() throws Exception {
runTest("js/js.translator/testData/box/expression/function/manglingStability.kt");
@@ -2148,6 +2148,11 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
runTest("js/js.translator/testData/box/expression/function/manglingClashWithFunctionsWithoutParameters.kt");
}
@TestMetadata("manglingImportedFromObjectWithNI.kt")
public void testManglingImportedFromObjectWithNI() throws Exception {
runTest("js/js.translator/testData/box/expression/function/manglingImportedFromObjectWithNI.kt");
}
@TestMetadata("manglingStability.kt")
public void testManglingStability() throws Exception {
runTest("js/js.translator/testData/box/expression/function/manglingStability.kt");
@@ -0,0 +1,21 @@
// !LANGUAGE: +NewInference
// EXPECTED_REACHABLE_NODES: 1329
// Issue: KT-35904
import A.bar
import A.bar2
object A {
inline fun <T> bar(x: T) = 42
inline val <T> T.bar2 get() = 42
}
fun <T> T.foo1(): Int = bar(this)
fun <T> T.foo2(): Int = this.bar2
fun box(): String {
10.foo1()
10.foo2()
return "OK"
}