JS: ExpressionDecomposer should always visit JsInvocation qualifier
This commit is contained in:
@@ -260,10 +260,10 @@ class ExpressionDecomposer private (
|
||||
}
|
||||
|
||||
private fun Callable.process() {
|
||||
qualifier = accept(qualifier)
|
||||
var matchedIndices = arguments.indicesOfExtractable
|
||||
if (!matchedIndices.hasNext()) return
|
||||
|
||||
qualifier = accept(qualifier)
|
||||
if (qualifier in containsNodeWithSideEffect) {
|
||||
val callee = qualifier as? JsNameRef
|
||||
val receiver = callee?.qualifier
|
||||
|
||||
+6
@@ -119,6 +119,12 @@ public class InlineEvaluationOrderTestGenerated extends AbstractInlineEvaluation
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("callQualifierComplex.kt")
|
||||
public void testCallQualifierComplex() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("js/js.translator/testData/inlineEvaluationOrder/cases/callQualifierComplex.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("conditional.kt")
|
||||
public void testConditional() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("js/js.translator/testData/inlineEvaluationOrder/cases/conditional.kt");
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package foo
|
||||
|
||||
// CHECK_NOT_CALLED: multiplyFunInline
|
||||
|
||||
fun multiplyFun(): (Int, Int)->Int {
|
||||
log("multiplyFun()")
|
||||
return { x, y -> x * y }
|
||||
}
|
||||
|
||||
inline
|
||||
fun multiplyFunInline(): (Int, Int)->Int {
|
||||
log("multiplyFunInline()")
|
||||
return { x, y -> x * y }
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
assertEquals(6, array(multiplyFun(), multiplyFunInline())[0](fizz(2), fizz(3)))
|
||||
assertEquals("multiplyFun();multiplyFunInline();fizz(2);fizz(3);", pullLog())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user