diff --git a/annotations/com/intellij/codeInsight/annotations.xml b/annotations/com/intellij/codeInsight/annotations.xml
index 0ef0480992d..e727956aafa 100644
--- a/annotations/com/intellij/codeInsight/annotations.xml
+++ b/annotations/com/intellij/codeInsight/annotations.xml
@@ -2,4 +2,8 @@
-
+ -
+
+
\ No newline at end of file
diff --git a/j2k/src/org/jetbrains/jet/j2k/TypeConverter.kt b/j2k/src/org/jetbrains/jet/j2k/TypeConverter.kt
index 1bbae9ac64b..3c0a6b1f4fe 100644
--- a/j2k/src/org/jetbrains/jet/j2k/TypeConverter.kt
+++ b/j2k/src/org/jetbrains/jet/j2k/TypeConverter.kt
@@ -28,6 +28,7 @@ import org.jetbrains.jet.j2k.ast.assignPrototype
import com.intellij.psi.CommonClassNames.JAVA_LANG_OBJECT
import org.jetbrains.jet.j2k.ast.assignNoPrototype
import org.jetbrains.jet.j2k.ast.ErrorType
+import com.intellij.codeInsight.NullableNotNullManager
class TypeConverter(val settings: ConverterSettings, val conversionScope: ConversionScope) {
private val nullabilityCache = HashMap()
@@ -274,4 +275,14 @@ class TypeConverter(val settings: ConverterSettings, val conversionScope: Conver
else -> false
}
}
+
+ private fun PsiModifierListOwner.nullabilityFromAnnotations(): Nullability {
+ val manager = NullableNotNullManager.getInstance(getProject())
+ return if (manager.isNotNull(this, false/* we do not check bases because they are checked by callers of this method*/))
+ Nullability.NotNull
+ else if (manager.isNullable(this, false))
+ Nullability.Nullable
+ else
+ Nullability.Default
+ }
}
diff --git a/j2k/src/org/jetbrains/jet/j2k/Utils.kt b/j2k/src/org/jetbrains/jet/j2k/Utils.kt
index b866f27c523..322e6998ca5 100644
--- a/j2k/src/org/jetbrains/jet/j2k/Utils.kt
+++ b/j2k/src/org/jetbrains/jet/j2k/Utils.kt
@@ -22,6 +22,8 @@ import com.intellij.psi.util.PsiUtil
import com.intellij.psi.search.LocalSearchScope
import com.intellij.psi.search.searches.ReferencesSearch
import org.jetbrains.jet.j2k.ast.*
+import com.intellij.codeInsight.AnnotationUtil
+import com.intellij.codeInsight.NullableNotNullManager
fun quoteKeywords(packageName: String): String = packageName.split("\\.").map { Identifier.toKotlin(it) }.makeString(".")
@@ -47,16 +49,6 @@ fun PsiVariable.countWriteAccesses(scope: PsiElement?): Int
fun PsiVariable.hasWriteAccesses(scope: PsiElement?): Boolean
= if (scope != null) findVariableUsages(this, scope).any { PsiUtil.isAccessedForWriting(it) } else false
-fun PsiModifierListOwner.nullabilityFromAnnotations(): Nullability {
- val annotations = getModifierList()?.getAnnotations() ?: return Nullability.Default
- return if (annotations.any { NOT_NULL_ANNOTATIONS.contains(it.getQualifiedName()) })
- Nullability.NotNull
- else if (annotations.any { NULLABLE_ANNOTATIONS.contains(it.getQualifiedName()) })
- Nullability.Nullable
- else
- Nullability.Default
-}
-
fun getDefaultInitializer(field: Field): Expression {
val t = field.`type`
val result = if (t.isNullable) {
diff --git a/j2k/tests/testData/ast/toKotlinClasses/iterableAndIterator.kt b/j2k/tests/testData/ast/toKotlinClasses/iterableAndIterator.kt
index 97687578f5e..f79f1671b27 100644
--- a/j2k/tests/testData/ast/toKotlinClasses/iterableAndIterator.kt
+++ b/j2k/tests/testData/ast/toKotlinClasses/iterableAndIterator.kt
@@ -1,7 +1,7 @@
package demo
class Test() : Iterable {
- override fun iterator(): Iterator? {
+ override fun iterator(): Iterator {
return null
}
@@ -12,7 +12,7 @@ class Test() : Iterable {
}
class FullTest() : Iterable {
- override fun iterator(): Iterator? {
+ override fun iterator(): Iterator {
return null
}
diff --git a/j2k/tests/testData/ast/toKotlinClasses/iterableAndIterator2.kt b/j2k/tests/testData/ast/toKotlinClasses/iterableAndIterator2.kt
index 868627c5061..8b67cc579ff 100644
--- a/j2k/tests/testData/ast/toKotlinClasses/iterableAndIterator2.kt
+++ b/j2k/tests/testData/ast/toKotlinClasses/iterableAndIterator2.kt
@@ -4,7 +4,7 @@ import java.util.*
import kotlin.Iterator
class Test() : Iterable {
- override fun iterator(): Iterator? {
+ override fun iterator(): Iterator {
return null
}
@@ -15,7 +15,7 @@ class Test() : Iterable {
}
class FullTest() : Iterable {
- override fun iterator(): Iterator? {
+ override fun iterator(): Iterator {
return null
}
diff --git a/j2k/tests/testData/ast/toKotlinClasses/iterableAndIterator3.kt b/j2k/tests/testData/ast/toKotlinClasses/iterableAndIterator3.kt
index c741d5c583c..aa403e69e79 100644
--- a/j2k/tests/testData/ast/toKotlinClasses/iterableAndIterator3.kt
+++ b/j2k/tests/testData/ast/toKotlinClasses/iterableAndIterator3.kt
@@ -1,7 +1,7 @@
package demo
class Test() : Iterable {
- override fun iterator(): Iterator? {
+ override fun iterator(): Iterator {
return null
}