diff --git a/annotations/com/intellij/codeInsight/annotations.xml b/annotations/com/intellij/codeInsight/annotations.xml index e727956aafa..24aa5b802c6 100644 --- a/annotations/com/intellij/codeInsight/annotations.xml +++ b/annotations/com/intellij/codeInsight/annotations.xml @@ -6,4 +6,10 @@ name='com.intellij.codeInsight.NullableNotNullManager com.intellij.codeInsight.NullableNotNullManager getInstance(com.intellij.openapi.project.Project)'> + + + + + + \ No newline at end of file diff --git a/j2k/src/org/jetbrains/jet/j2k/AnnotationConverter.kt b/j2k/src/org/jetbrains/jet/j2k/AnnotationConverter.kt index 8878c9f1350..a8b1beadef1 100644 --- a/j2k/src/org/jetbrains/jet/j2k/AnnotationConverter.kt +++ b/j2k/src/org/jetbrains/jet/j2k/AnnotationConverter.kt @@ -18,14 +18,19 @@ package org.jetbrains.jet.j2k import com.intellij.psi.* import org.jetbrains.jet.j2k.ast.* +import com.intellij.codeInsight.NullableNotNullManager class AnnotationConverter(private val converter: Converter) { + public val annotationsToRemove: Set = (NullableNotNullManager.getInstance(converter.project).getNotNulls() + + NullableNotNullManager.getInstance(converter.project).getNullables() + + listOf(CommonClassNames.JAVA_LANG_OVERRIDE)).toSet() + public fun convertAnnotations(owner: PsiModifierListOwner): Annotations = (convertAnnotationsOnly(owner) + convertModifiersToAnnotations(owner)).assignNoPrototype() private fun convertAnnotationsOnly(owner: PsiModifierListOwner): Annotations { val modifierList = owner.getModifierList() - val annotations = modifierList?.getAnnotations()?.filter { it.getQualifiedName() !in ANNOTATIONS_TO_REMOVE } + val annotations = modifierList?.getAnnotations()?.filter { it.getQualifiedName() !in annotationsToRemove } if (annotations == null || annotations.isEmpty()) return Annotations.Empty val newLines = run { diff --git a/j2k/src/org/jetbrains/jet/j2k/Converter.kt b/j2k/src/org/jetbrains/jet/j2k/Converter.kt index 0550e973871..0c9a9f186bc 100644 --- a/j2k/src/org/jetbrains/jet/j2k/Converter.kt +++ b/j2k/src/org/jetbrains/jet/j2k/Converter.kt @@ -52,7 +52,7 @@ public class Converter private(val project: Project, val settings: ConverterSett private val expressionVisitor = state.expressionVisitorFactory(this) private val statementVisitor = state.statementVisitorFactory(this) - private val annotationConverter = AnnotationConverter(this) + val annotationConverter = AnnotationConverter(this) class object { public fun create(project: Project, settings: ConverterSettings, conversionScope: ConversionScope): Converter { @@ -595,10 +595,6 @@ public class Converter private(val project: Project, val settings: ConverterSett } } -val NOT_NULL_ANNOTATIONS: Set = setOf("org.jetbrains.annotations.NotNull", "com.sun.istack.internal.NotNull", "javax.annotation.Nonnull") -val NULLABLE_ANNOTATIONS: Set = setOf("org.jetbrains.annotations.Nullable", "com.sun.istack.internal.Nullable", "javax.annotation.Nullable") -val ANNOTATIONS_TO_REMOVE: Set = HashSet(NOT_NULL_ANNOTATIONS + NULLABLE_ANNOTATIONS + listOf(CommonClassNames.JAVA_LANG_OVERRIDE)) - val PRIMITIVE_TYPE_CONVERSIONS: Map = mapOf( "byte" to BYTE.asString(), "short" to SHORT.asString(), diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Imports.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Imports.kt index 70d363d442f..4bce8bea9a8 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Imports.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Imports.kt @@ -64,8 +64,8 @@ public fun Converter.convertImport(anImport: PsiImportStatementBase, filter: Boo return doConvert()?.assignPrototype(anImport) } -private fun filterImport(name: String, ref: PsiJavaCodeReferenceElement): String? { - if (name in ANNOTATIONS_TO_REMOVE) return null +private fun Converter.filterImport(name: String, ref: PsiJavaCodeReferenceElement): String? { + if (name in annotationConverter.annotationsToRemove) return null // If imported class has a kotlin analog, drop the import if (!JavaToKotlinClassMap.getInstance().mapPlatformClass(FqName(name)).isEmpty()) return null