diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java
index 64760e040f6..0031cee29b1 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java
+++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java
@@ -161,6 +161,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
KotlinTypeInfo typeInfo = callExpressionResolver.getSimpleNameExpressionTypeInfo(expression, null, null, context);
checkNull(expression, context, typeInfo.getType());
+ components.constantExpressionEvaluator.evaluateExpression(expression, context.trace, context.expectedType);
return components.dataFlowAnalyzer.checkType(typeInfo, expression, context); // TODO : Extensions to this
}
diff --git a/compiler/testData/codegen/bytecodeText/whenEnumOptimization/importedEnumEntry.kt b/compiler/testData/codegen/bytecodeText/whenEnumOptimization/importedEnumEntry.kt
new file mode 100644
index 00000000000..17176b04d73
--- /dev/null
+++ b/compiler/testData/codegen/bytecodeText/whenEnumOptimization/importedEnumEntry.kt
@@ -0,0 +1,13 @@
+import Color.RED
+
+enum class Color { RED, GREEN, BLUE }
+
+fun fifth(arg: Color) = when (arg) {
+ RED -> 1
+ Color.GREEN -> 2
+ Color.BLUE -> 3
+}
+
+
+// 1 TABLESWITCH
+// 0 LOOKUPSWITCH
\ No newline at end of file
diff --git a/compiler/testData/diagnostics/tests/when/When.kt b/compiler/testData/diagnostics/tests/when/When.kt
index f887f0ebb4b..e4b246c6854 100644
--- a/compiler/testData/diagnostics/tests/when/When.kt
+++ b/compiler/testData/diagnostics/tests/when/When.kt
@@ -26,7 +26,7 @@ fun test() {
when (x) {
s -> 1
- "" -> 1
+ "" -> 1
x -> 1
1 -> 1
}
diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java
index f530c5d533c..c30ac648e2d 100644
--- a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java
+++ b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java
@@ -1429,6 +1429,12 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
doTest(fileName);
}
+ @TestMetadata("importedEnumEntry.kt")
+ public void testImportedEnumEntry() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/bytecodeText/whenEnumOptimization/importedEnumEntry.kt");
+ doTest(fileName);
+ }
+
@TestMetadata("manyWhensWithinClass.kt")
public void testManyWhensWithinClass() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/bytecodeText/whenEnumOptimization/manyWhensWithinClass.kt");
diff --git a/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryAdded/build.log b/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryAdded/build.log
index ff1a4bbd2cb..6475e307e9f 100644
--- a/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryAdded/build.log
+++ b/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryAdded/build.log
@@ -16,6 +16,7 @@ Cleaning output files:
out/production/module/GetRandomEnumEntryKt.class
out/production/module/META-INF/module.kotlin_module
out/production/module/UseEnumImplicitlyKt.class
+ out/production/module/UseKt$WhenMappings.class
out/production/module/UseKt.class
End of files
Compiling files:
diff --git a/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryRemoved/build.log b/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryRemoved/build.log
index 41bafdcc2fb..e18e538942d 100644
--- a/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryRemoved/build.log
+++ b/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryRemoved/build.log
@@ -16,6 +16,7 @@ Cleaning output files:
out/production/module/GetRandomEnumEntryKt.class
out/production/module/META-INF/module.kotlin_module
out/production/module/UseEnumImplicitlyKt.class
+ out/production/module/UseKt$WhenMappings.class
out/production/module/UseKt.class
End of files
Compiling files:
diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/enumEntryAdded/build.log b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/enumEntryAdded/build.log
index 43d2c5501a4..f9695c15cb5 100644
--- a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/enumEntryAdded/build.log
+++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/enumEntryAdded/build.log
@@ -13,6 +13,7 @@ End of files
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
+ out/production/module/UseKt$WhenMappings.class
out/production/module/UseKt.class
End of files
Compiling files:
diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/enumEntryRemoved/build.log b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/enumEntryRemoved/build.log
index fbad2c8600c..36bbe755ca3 100644
--- a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/enumEntryRemoved/build.log
+++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/enumEntryRemoved/build.log
@@ -10,6 +10,7 @@ Compiling files:
End of files
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
+ out/production/module/UseKt$WhenMappings.class
out/production/module/UseKt.class
End of files
Compiling files:
diff --git a/plugins/uast-kotlin/testData/lint/alarm.kt b/plugins/uast-kotlin/testData/lint/alarm.kt
index fc067effaad..eaa7dfb1f70 100644
--- a/plugins/uast-kotlin/testData/lint/alarm.kt
+++ b/plugins/uast-kotlin/testData/lint/alarm.kt
@@ -12,10 +12,9 @@ class TestAlarm {
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, 5000, // ERROR
OtherClass.MY_INTERVAL, null); // ERROR
- // Check value flow analysis, currently unsupported
val interval = 10;
val interval2 = 2L * interval;
- alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, 5000, interval2, null); // ERROR
+ alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, 5000, interval2, null); // ERROR
}
private object OtherClass {
diff --git a/plugins/uast-kotlin/testData/lint/log.kt b/plugins/uast-kotlin/testData/lint/log.kt
index 7ce3a11e3c9..e17ec748260 100644
--- a/plugins/uast-kotlin/testData/lint/log.kt
+++ b/plugins/uast-kotlin/testData/lint/log.kt
@@ -26,8 +26,8 @@ class LogTest {
}
fun checkWrongTag(tag: String) {
- if (Log.isLoggable(TAG1, Log.DEBUG)) {
- Log.d(TAG2, "message") // warn: mismatched tags!
+ if (Log.isLoggable(TAG1, Log.DEBUG)) {
+ Log.d(TAG2, "message") // warn: mismatched tags!
}
if (Log.isLoggable("my_tag", Log.DEBUG)) {
Log.d("other_tag", "message") // warn: mismatched tags!
@@ -50,12 +50,12 @@ class LogTest {
Log.d(TAG1, "message") // ok: short
Log.d(TAG22, "message") // ok: short
Log.d(TAG23, "message") // ok: threshold
- Log.d(TAG24, "message") // error: too long
- Log.d(LONG_TAG, "message") // error: way too long
+ Log.d(TAG24, "message") // error: too long
+ Log.d(LONG_TAG, "message") // error: way too long
// Locally defined variable tags
val LOCAL_TAG = "MyReallyReallyReallyReallyReallyLongTag"
- Log.d(LOCAL_TAG, "message") // error: too long
+ Log.d(LOCAL_TAG, "message") // error: too long
// Concatenated tags
Log.d(TAG22 + TAG1, "message") // error: too long