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 * @author Pavel Talanov
*/ */
public final class InlineTest extends SingleFileTranslationTest {
//TODO:
//Inlining turned off
@SuppressWarnings("UnusedDeclaration")
public abstract class InlineTest extends SingleFileTranslationTest {
public InlineTest() { public InlineTest() {
super("inline/"); super("inline/");
} }
@@ -61,6 +61,10 @@ public final class MiscTest extends AbstractExpressionTest {
checkFooBoxIsTrue("KT-1052-2.kt", EcmaVersion.all()); checkFooBoxIsTrue("KT-1052-2.kt", EcmaVersion.all());
} }
public void testKt2314() throws Exception {
checkFooBoxIsTrue("KT-2314.kt", EcmaVersion.all());
}
public void testKt1052() throws Exception { public void testKt1052() throws Exception {
checkOutput("KT-1052.kt", "true\n"); 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.descriptors.ValueParameterDescriptor;
import org.jetbrains.jet.lang.psi.JetCallExpression; import org.jetbrains.jet.lang.psi.JetCallExpression;
import org.jetbrains.jet.lang.psi.JetFunction; 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.jet.lang.resolve.calls.ResolvedValueArgument;
import org.jetbrains.k2js.translate.context.TemporaryVariable; import org.jetbrains.k2js.translate.context.TemporaryVariable;
import org.jetbrains.k2js.translate.context.TranslationContext; 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.reference.CallParametersResolver.resolveCallParameters;
import static org.jetbrains.k2js.translate.utils.BindingUtils.getFunctionForDescriptor; 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.getExpectedReceiverDescriptor;
import static org.jetbrains.k2js.translate.utils.JsDescriptorUtils.getExpectedThisDescriptor; import static org.jetbrains.k2js.translate.utils.JsDescriptorUtils.getExpectedThisDescriptor;
import static org.jetbrains.k2js.translate.utils.FunctionBodyTranslator.translateFunctionBody;
/** /**
* @author Pavel Talanov * @author Pavel Talanov
*/ */
public final class InlinedCallExpressionTranslator extends AbstractCallExpressionTranslator { public final class InlinedCallExpressionTranslator extends AbstractCallExpressionTranslator {
@SuppressWarnings("UnusedParameters")
public static boolean shouldBeInlined(@NotNull JetCallExpression expression, @NotNull TranslationContext context) { public static boolean shouldBeInlined(@NotNull JetCallExpression expression, @NotNull TranslationContext context) {
ResolvedCall<?> resolvedCall = getResolvedCallForCallExpression(context.bindingContext(), expression); //TODO: inlining turned off
CallableDescriptor descriptor = resolvedCall.getCandidateDescriptor(); //ResolvedCall<?> resolvedCall = getResolvedCallForCallExpression(context.bindingContext(), expression);
if (descriptor instanceof SimpleFunctionDescriptor) { //CallableDescriptor descriptor = resolvedCall.getCandidateDescriptor();
return ((SimpleFunctionDescriptor)descriptor).isInline(); //if (descriptor instanceof SimpleFunctionDescriptor) {
} // return ((SimpleFunctionDescriptor)descriptor).isInline();
//}
return false; 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)
}