Fix constant expression inlining logic

Constant expressions are inlined if they do not depend on non-inlineable
vals.
Java constants are always inlined.
Kotlin constants are inlined in LV 1.1+.
This commit is contained in:
Dmitry Petrov
2017-10-13 15:14:58 +03:00
parent 5acc992956
commit 16b7bece46
7 changed files with 68 additions and 12 deletions
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.codegen;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.util.Ref;
import com.intellij.psi.PsiElement;
import com.intellij.psi.tree.IElementType;
import com.intellij.util.ArrayUtil;
@@ -74,7 +73,6 @@ import org.jetbrains.kotlin.resolve.calls.util.CallMaker;
import org.jetbrains.kotlin.resolve.calls.util.FakeCallableDescriptorForObject;
import org.jetbrains.kotlin.resolve.calls.util.UnderscoreUtilKt;
import org.jetbrains.kotlin.resolve.constants.*;
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator;
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluatorKt;
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
import org.jetbrains.kotlin.resolve.inline.InlineUtil;
@@ -295,7 +295,7 @@ public class JvmCodegenUtil {
}
public static boolean isInlinedJavaConstProperty(VariableDescriptor descriptor) {
return JvmConstantsKt.isInlinedJavaConstProperty(descriptor);
return descriptor instanceof JavaPropertyDescriptor && descriptor.isConst();
}
@Nullable