From cf898ae357b566d6da4b320a7d8bd81154f1fcf9 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Thu, 11 Aug 2016 20:21:21 +0300 Subject: [PATCH] Exclude exceptions from java.lang package for which type aliases exist in kotlin package. Add relevant note to the type aliases. --- .../kotlin/resolve/jvm/platform/JvmPlatform.kt | 17 +++++++++++++++++ core/runtime.jvm/src/kotlin/TypeAliases.kt | 4 +++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt index 09b2f2abd6c..a97251e1211 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.resolve.jvm.platform import org.jetbrains.kotlin.builtins.DefaultBuiltIns import org.jetbrains.kotlin.descriptors.ModuleParameters +import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.platform.JavaToKotlinClassMap import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap import org.jetbrains.kotlin.resolve.DescriptorUtils @@ -34,6 +35,8 @@ object JvmPlatform : TargetPlatform("JVM") { get() = JavaToKotlinClassMap.INSTANCE override val defaultImports: List get() = DEFAULT_IMPORTS_FOR_JVM + override val excludedImports: List + get() = EXCLUDED_IMPORTS_FOR_JVM } override val platformConfigurator: PlatformConfigurator = JvmPlatformConfigurator @@ -62,3 +65,17 @@ private val DEFAULT_IMPORTS_FOR_JVM: List = ArrayList(). addAllClassifiersFromScope(builtinPackageFragment.getMemberScope()) } } + +private val EXCLUDED_IMPORTS_FOR_JVM: List = listOf( + "Error", + "Exception", + "RuntimeException", + "IllegalArgumentException", + "IllegalStateException", + "IndexOutOfBoundsException", + "UnsupportedOperationException", + "NumberFormatException", + "NullPointerException", + "ClassCastException", + "AssertionError" +).map { FqName("java.lang.$it") } \ No newline at end of file diff --git a/core/runtime.jvm/src/kotlin/TypeAliases.kt b/core/runtime.jvm/src/kotlin/TypeAliases.kt index 428d70d274c..9a3fb4a9ef6 100644 --- a/core/runtime.jvm/src/kotlin/TypeAliases.kt +++ b/core/runtime.jvm/src/kotlin/TypeAliases.kt @@ -30,5 +30,7 @@ public typealias NullPointerException = java.lang.NullPointerException public typealias ClassCastException = java.lang.ClassCastException public typealias AssertionError = java.lang.AssertionError -// kotlin or kotlin.collections? public typealias NoSuchElementException = java.util.NoSuchElementException + +// NOTE: If you're adding type aliases to types from java.lang, do not forget to exclude aliased types from +// imported by default java.lang package. See JvmPlatform.defaultModuleParameters.excludedImports property.