diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java
index 316daa11035..a5c6bb0c4d0 100644
--- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java
+++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java
@@ -389,7 +389,15 @@ public abstract class AnnotationCodegen {
}
private Void visitUnsupportedValue(ConstantValue> value) {
- throw new IllegalStateException("Don't know how to compile annotation value " + value);
+ ClassBuilderMode mode = typeMapper.getClassBuilderMode();
+ switch (mode) {
+ case FULL:
+ throw new IllegalStateException("Don't know how to compile annotation value " + value);
+ case LIGHT_CLASSES:
+ return null;
+ default:
+ throw new IllegalStateException("Unknown builder mode: " + mode);
+ }
}
};
diff --git a/idea/testData/checker/NullAsAnnotationArgument.kt b/idea/testData/checker/NullAsAnnotationArgument.kt
new file mode 100644
index 00000000000..590c1b5c072
--- /dev/null
+++ b/idea/testData/checker/NullAsAnnotationArgument.kt
@@ -0,0 +1,10 @@
+// test for KT-5337
+package test
+
+annotation class A(val value: String)
+
+@A(null)
+fun foo() {}
+
+@A(null)
+class B
\ No newline at end of file
diff --git a/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java b/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java
index 4ab9fca7ce7..95b62e41b1e 100644
--- a/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java
@@ -187,6 +187,12 @@ public class PsiCheckerTestGenerated extends AbstractPsiCheckerTest {
doTest(fileName);
}
+ @TestMetadata("NullAsAnnotationArgument.kt")
+ public void testNullAsAnnotationArgument() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/NullAsAnnotationArgument.kt");
+ doTest(fileName);
+ }
+
@TestMetadata("Nullability.kt")
public void testNullability() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/Nullability.kt");