Fix UOE when using Java annotation with infinity/NaN as default value

The root problem is the fact that ConstantExpressionEvaluator returns
null for values such as infinity and NaN loaded from cls psi (see
IDEA-207252). This commit simply reverts a part of 8ab9226805 where we
started to compute default values more often than needed. In
LazyJavaClassMemberScope, we only need to check whether or not there
_is_ a default value, not compute its value.

 #KT-29792 Fixed
This commit is contained in:
Alexander Udalov
2019-02-13 17:49:03 +01:00
parent b2cdf2dc74
commit f2bf81e799
10 changed files with 76 additions and 2 deletions

View File

@@ -0,0 +1,23 @@
// KOTLIN_CONFIGURATION_FLAGS: -JVM.USE_FAST_CLASS_FILES_READING
// FILE: J.java
public @interface J {
double minusInf() default Double.NEGATIVE_INFINITY;
double plusInf() default Double.POSITIVE_INFINITY;
double nan() default Double.NaN;
double divisionByZero() default 1.0 / 0.0;
float minusInfFloat() default Float.NEGATIVE_INFINITY;
float plusInfFloat() default Float.POSITIVE_INFINITY;
float nanFloat() default Float.NaN;
float divisionByZeroFloat() default 1.0f / 0.0f;
}
// FILE: K.kt
fun box(): String {
// Only check that the compiler loads the class for J
J::class
return "OK"
}