diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightField.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightField.kt index ad23fbf9011..c75426fa96e 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightField.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightField.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.asJava import com.intellij.openapi.util.TextRange import com.intellij.psi.* +import com.intellij.psi.impl.PsiVariableEx import com.intellij.psi.impl.light.LightElement import com.intellij.util.IncorrectOperationException import org.jetbrains.annotations.NonNls @@ -27,7 +28,7 @@ import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtEnumEntry import org.jetbrains.kotlin.psi.KtNamedDeclaration -interface KtLightField : PsiField, KtLightDeclaration +interface KtLightField : PsiField, KtLightDeclaration, PsiVariableEx // Copied from com.intellij.psi.impl.light.LightField sealed class KtLightFieldImpl( @@ -94,6 +95,10 @@ sealed class KtLightFieldImpl( override fun getNavigationElement() = kotlinOrigin ?: super.getNavigationElement() + override fun computeConstantValue(visitedVars: MutableSet?): Any? { + return (clsDelegate as PsiVariableEx).computeConstantValue(visitedVars) + } + override fun isEquivalentTo(another: PsiElement?): Boolean { if (another is KtLightField && kotlinOrigin == another.kotlinOrigin && clsDelegate == another.clsDelegate) { return true diff --git a/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/UseKotlinConstInSwitch.java b/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/UseKotlinConstInSwitch.java new file mode 100644 index 00000000000..5745e7c7776 --- /dev/null +++ b/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/UseKotlinConstInSwitch.java @@ -0,0 +1,12 @@ +public class UseKotlinConstInSwitch { + public static void main(int i) { + switch (i) { + case a.UseKotlinConstInSwitchKt.i: + System.out.println("1"); + break; + default: + System.out.println("2"); + break; + } + } +} diff --git a/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/UseKotlinConstInSwitch.kt b/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/UseKotlinConstInSwitch.kt new file mode 100644 index 00000000000..c7be33e1cf1 --- /dev/null +++ b/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/UseKotlinConstInSwitch.kt @@ -0,0 +1,3 @@ +package a + +const val i = 45 diff --git a/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinBinariesCheckerTestGenerated.java b/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinBinariesCheckerTestGenerated.java index 9c00368835a..725d59e481c 100644 --- a/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinBinariesCheckerTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinBinariesCheckerTestGenerated.java @@ -107,6 +107,12 @@ public class JavaAgainstKotlinBinariesCheckerTestGenerated extends AbstractJavaA doTest(fileName); } + @TestMetadata("UseKotlinConstInSwitch.kt") + public void testUseKotlinConstInSwitch() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/UseKotlinConstInSwitch.kt"); + doTest(fileName); + } + @TestMetadata("UseKotlinSubclassesOfMappedTypes.kt") public void testUseKotlinSubclassesOfMappedTypes() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/UseKotlinSubclassesOfMappedTypes.kt"); diff --git a/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerTestGenerated.java b/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerTestGenerated.java index 7138e8fe676..fcdd99da909 100644 --- a/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerTestGenerated.java @@ -109,6 +109,12 @@ public class JavaAgainstKotlinSourceCheckerTestGenerated extends AbstractJavaAga doTest(fileName); } + @TestMetadata("UseKotlinConstInSwitch.kt") + public void testUseKotlinConstInSwitch() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/UseKotlinConstInSwitch.kt"); + doTest(fileName); + } + @TestMetadata("UseKotlinSubclassesOfMappedTypes.kt") public void testUseKotlinSubclassesOfMappedTypes() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/UseKotlinSubclassesOfMappedTypes.kt");