Turn off inlining. May be it'll help with KT-2314.

This commit is contained in:
Pavel V. Talanov
2012-07-02 17:28:27 +04:00
parent da24b36071
commit 4b15023aec
4 changed files with 42 additions and 9 deletions
@@ -26,7 +26,11 @@ import java.io.File;
/**
* @author Pavel Talanov
*/
public final class InlineTest extends SingleFileTranslationTest {
//TODO:
//Inlining turned off
@SuppressWarnings("UnusedDeclaration")
public abstract class InlineTest extends SingleFileTranslationTest {
public InlineTest() {
super("inline/");
}
@@ -61,6 +61,10 @@ public final class MiscTest extends AbstractExpressionTest {
checkFooBoxIsTrue("KT-1052-2.kt", EcmaVersion.all());
}
public void testKt2314() throws Exception {
checkFooBoxIsTrue("KT-2314.kt", EcmaVersion.all());
}
public void testKt1052() throws Exception {
checkOutput("KT-1052.kt", "true\n");
}
@@ -29,7 +29,6 @@ import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
import org.jetbrains.jet.lang.psi.JetCallExpression;
import org.jetbrains.jet.lang.psi.JetFunction;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
import org.jetbrains.jet.lang.resolve.calls.ResolvedValueArgument;
import org.jetbrains.k2js.translate.context.TemporaryVariable;
import org.jetbrains.k2js.translate.context.TranslationContext;
@@ -42,22 +41,23 @@ import java.util.Map;
import static org.jetbrains.k2js.translate.reference.CallParametersResolver.resolveCallParameters;
import static org.jetbrains.k2js.translate.utils.BindingUtils.getFunctionForDescriptor;
import static org.jetbrains.k2js.translate.utils.BindingUtils.getResolvedCallForCallExpression;
import static org.jetbrains.k2js.translate.utils.FunctionBodyTranslator.translateFunctionBody;
import static org.jetbrains.k2js.translate.utils.JsDescriptorUtils.getExpectedReceiverDescriptor;
import static org.jetbrains.k2js.translate.utils.JsDescriptorUtils.getExpectedThisDescriptor;
import static org.jetbrains.k2js.translate.utils.FunctionBodyTranslator.translateFunctionBody;
/**
* @author Pavel Talanov
*/
public final class InlinedCallExpressionTranslator extends AbstractCallExpressionTranslator {
@SuppressWarnings("UnusedParameters")
public static boolean shouldBeInlined(@NotNull JetCallExpression expression, @NotNull TranslationContext context) {
ResolvedCall<?> resolvedCall = getResolvedCallForCallExpression(context.bindingContext(), expression);
CallableDescriptor descriptor = resolvedCall.getCandidateDescriptor();
if (descriptor instanceof SimpleFunctionDescriptor) {
return ((SimpleFunctionDescriptor)descriptor).isInline();
}
//TODO: inlining turned off
//ResolvedCall<?> resolvedCall = getResolvedCallForCallExpression(context.bindingContext(), expression);
//CallableDescriptor descriptor = resolvedCall.getCandidateDescriptor();
//if (descriptor instanceof SimpleFunctionDescriptor) {
// return ((SimpleFunctionDescriptor)descriptor).isInline();
//}
return false;
}
@@ -0,0 +1,25 @@
package foo
import java.util.*
fun box(): Boolean {
val data = arrayList("foo", "bar")
if (data.head != "foo") {
return false
}
return true
}
public inline fun arrayList<T>(vararg values: T) : ArrayList<T> {
val c = ArrayList<T>()
for (v in values) {
c.add(v)
}
return c
}
public inline val <T> ArrayList<T>.head : T
get() {
return get(0)
}