diff --git a/plugins/android-compiler-plugin/src/AndroidComponentRegistrar.kt b/plugins/android-compiler-plugin/src/AndroidComponentRegistrar.kt index dd80d5eebe9..7ed48ec76b8 100644 --- a/plugins/android-compiler-plugin/src/AndroidComponentRegistrar.kt +++ b/plugins/android-compiler-plugin/src/AndroidComponentRegistrar.kt @@ -68,7 +68,7 @@ public class AndroidCommandLineProcessor : CommandLineProcessor { public class CliAndroidDeclarationsProvider(private val project: Project) : ExternalDeclarationsProvider { override fun getExternalDeclarations(moduleInfo: ModuleInfo?): Collection { - val parser = ServiceManager.getService(project, javaClass()) + val parser = ServiceManager.getService(project, javaClass()) return parser.parseToPsi() ?: listOf() } } diff --git a/plugins/android-compiler-plugin/src/AndroidExpressionCodegenExtension.kt b/plugins/android-compiler-plugin/src/AndroidExpressionCodegenExtension.kt index b73a963c725..8230cbc22ba 100644 --- a/plugins/android-compiler-plugin/src/AndroidExpressionCodegenExtension.kt +++ b/plugins/android-compiler-plugin/src/AndroidExpressionCodegenExtension.kt @@ -199,7 +199,7 @@ public class AndroidExpressionCodegenExtension : ExpressionCodegenExtension { } private fun CallableDescriptor.getAndroidPackage(): String? { - return DescriptorToSourceUtils.getContainingFile(this)?.getUserData(AndroidConst.ANDROID_USER_PACKAGE) + return DescriptorToSourceUtils.getContainingFile(this)?.getUserData(AndroidConst.ANDROID_USER_PACKAGE) } private fun ResolvedCall<*>.getReceiverDeclarationDescriptor(): ClassifierDescriptor? { @@ -337,6 +337,7 @@ public class AndroidExpressionCodegenExtension : ExpressionCodegenExtension { loadId() iv.invokevirtual("android/view/View", "findViewById", "(I)Landroid/view/View;", false) } + else -> throw IllegalStateException("Can't generate code for $androidClassType") } iv.store(2, viewType) diff --git a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidResourceManager.kt b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidResourceManager.kt index 665ccd8c44d..d0259e509f3 100644 --- a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidResourceManager.kt +++ b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidResourceManager.kt @@ -35,8 +35,7 @@ public abstract class AndroidResourceManager(val project: Project) { public open fun propertyToXmlAttributes(property: JetProperty): List = listOf() public fun getLayoutXmlFiles(): Map> { - val info = androidModuleInfo - if (info == null) return mapOf() + val info = androidModuleInfo ?: return mapOf() val psiManager = PsiManager.getInstance(project) val fileManager = VirtualFileManager.getInstance() @@ -68,8 +67,8 @@ public abstract class AndroidResourceManager(val project: Project) { companion object { public fun getInstance(module: Module): AndroidResourceManager { - val service = ModuleServiceManager.getService(module, javaClass()) - return service ?: module.getComponent(javaClass()) + val service = ModuleServiceManager.getService(module, javaClass()) + return service ?: module.getComponent(javaClass()) } } diff --git a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/KotlinWriter.kt b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/KotlinWriter.kt index 3d6f6705a65..0156959f0ab 100644 --- a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/KotlinWriter.kt +++ b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/KotlinWriter.kt @@ -16,7 +16,7 @@ package org.jetbrains.kotlin.lang.resolve.android -trait KotlinWriter { +interface KotlinWriter { fun toStringBuffer(): StringBuffer } diff --git a/plugins/android-compiler-plugin/tests/org/jetbrains/kotlin/lang/resolve/android/test/CompilerTestUtils.kt b/plugins/android-compiler-plugin/tests/org/jetbrains/kotlin/lang/resolve/android/test/CompilerTestUtils.kt index 9af61fbf437..af853702ed9 100644 --- a/plugins/android-compiler-plugin/tests/org/jetbrains/kotlin/lang/resolve/android/test/CompilerTestUtils.kt +++ b/plugins/android-compiler-plugin/tests/org/jetbrains/kotlin/lang/resolve/android/test/CompilerTestUtils.kt @@ -53,10 +53,14 @@ fun UsefulTestCase.createAndroidTestEnvironment( ): KotlinCoreEnvironment { configuration.put(AndroidConfigurationKeys.ANDROID_RES_PATH, resPaths) configuration.put(AndroidConfigurationKeys.ANDROID_MANIFEST, manifestPath) + val myEnvironment = KotlinCoreEnvironment.createForTests(getTestRootDisposable()!!, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) val project = myEnvironment.project - ExternalDeclarationsProvider.registerExtension(project, AndroidTestExternalDeclarationsProvider(project, resPaths, manifestPath, supportV4)) + + val declarationsProvider = AndroidTestExternalDeclarationsProvider(project, resPaths, manifestPath, supportV4) + ExternalDeclarationsProvider.registerExtension(project, declarationsProvider) ExpressionCodegenExtension.registerExtension(project, AndroidExpressionCodegenExtension()) + return myEnvironment } diff --git a/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidPsiTreeChangePreprocessor.kt b/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidPsiTreeChangePreprocessor.kt index 8704a38363e..a9ba2ba774b 100644 --- a/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidPsiTreeChangePreprocessor.kt +++ b/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidPsiTreeChangePreprocessor.kt @@ -61,8 +61,8 @@ public class AndroidPsiTreeChangePreprocessor : PsiTreeChangePreprocessor, Simpl } private fun AndroidResourceManager.getModuleResDirectories(): List { - val info = androidModuleInfo - if (info == null) return listOf() + val info = androidModuleInfo ?: return listOf() + val fileManager = VirtualFileManager.getInstance() return info.resDirectories.map { fileManager.findFileByUrl("file://" + it) } } diff --git a/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidRenameProcessor.kt b/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidRenameProcessor.kt index e47aaa450e0..a60c00b3b36 100644 --- a/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidRenameProcessor.kt +++ b/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidRenameProcessor.kt @@ -91,8 +91,7 @@ public class AndroidRenameProcessor : RenamePsiElementProcessor() { newName: String, allRenames: MutableMap ) { - val module = jetProperty.getModule() - if (module == null) return + val module = jetProperty.getModule() ?: return val processor = ModuleServiceManager.getService(module, javaClass()) val resourceManager = processor.resourceManager @@ -119,8 +118,7 @@ public class AndroidRenameProcessor : RenamePsiElementProcessor() { ) { val element = LazyValueResourceElementWrapper.computeLazyElement(attribute) val module = attribute.getModule() ?: ModuleUtilCore.findModuleForFile( - attribute.getContainingFile().getVirtualFile(), attribute.getProject()) - if (module == null) return + attribute.getContainingFile().getVirtualFile(), attribute.getProject()) ?: return val processor = ModuleServiceManager.getService(module, javaClass()) if (element == null) return diff --git a/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidSimpleNameReferenceExtension.kt b/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidSimpleNameReferenceExtension.kt index 440be54c065..2e51648ce12 100644 --- a/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidSimpleNameReferenceExtension.kt +++ b/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidSimpleNameReferenceExtension.kt @@ -26,10 +26,8 @@ import org.jetbrains.kotlin.lang.resolve.android.isAndroidSyntheticElement public class AndroidSimpleNameReferenceExtension : SimpleNameReferenceExtension { override fun isReferenceTo(reference: JetSimpleNameReference, element: PsiElement): Boolean? { - val resolvedElement = reference.resolve() - if (resolvedElement == null) { - return null - } + val resolvedElement = reference.resolve() ?: return null + if (isAndroidSyntheticElement(resolvedElement)) { if (element is ValueResourceElementWrapper) { val resource = element.getValue() diff --git a/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/IDEAndroidExternalDeclarationsProvider.kt b/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/IDEAndroidExternalDeclarationsProvider.kt index e776c7ba05f..bdf62868896 100644 --- a/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/IDEAndroidExternalDeclarationsProvider.kt +++ b/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/IDEAndroidExternalDeclarationsProvider.kt @@ -30,7 +30,7 @@ public class IDEAndroidExternalDeclarationsProvider(private val project: Project if (moduleInfo !is ModuleSourceInfo) return listOf() val module = moduleInfo.module - val parser = ModuleServiceManager.getService(module, javaClass()) + val parser = ModuleServiceManager.getService(module, javaClass()) val syntheticFiles = parser.parseToPsi() syntheticFiles?.forEach { it.moduleInfo = moduleInfo } diff --git a/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/AbstractAndroidCompletionTest.kt b/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/AbstractAndroidCompletionTest.kt index 5ac0dba4912..dd81e0194f2 100644 --- a/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/AbstractAndroidCompletionTest.kt +++ b/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/AbstractAndroidCompletionTest.kt @@ -34,6 +34,7 @@ public abstract class AbstractAndroidCompletionTest : KotlinAndroidTestCase() { codeCompletionOldValue = settings.AUTOCOMPLETE_ON_CODE_COMPLETION smartTypeCompletionOldValue = settings.AUTOCOMPLETE_ON_SMART_TYPE_COMPLETION + @suppress("NON_EXHAUSTIVE_WHEN") when (completionType()) { CompletionType.SMART -> settings.AUTOCOMPLETE_ON_SMART_TYPE_COMPLETION = false CompletionType.BASIC -> settings.AUTOCOMPLETE_ON_CODE_COMPLETION = false diff --git a/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/AbstractAndroidRenameTest.kt b/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/AbstractAndroidRenameTest.kt index d4e8c93a44c..b39d268762e 100644 --- a/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/AbstractAndroidRenameTest.kt +++ b/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/AbstractAndroidRenameTest.kt @@ -37,8 +37,8 @@ public abstract class AbstractAndroidRenameTest : KotlinAndroidTestCase() { val editor = f.getEditor() val file = f.getFile() val completionEditor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, file) - val element = TargetElementUtilBase.findTargetElement(completionEditor, - TargetElementUtilBase.REFERENCED_ELEMENT_ACCEPTED or TargetElementUtilBase.ELEMENT_NAME_ACCEPTED) + val element = TargetElementUtilBase.findTargetElement( + completionEditor, TargetElementUtilBase.REFERENCED_ELEMENT_ACCEPTED or TargetElementUtilBase.ELEMENT_NAME_ACCEPTED) assert(element != null) assertTrue(element is JetProperty) diff --git a/plugins/android-jps-plugin/src/KotlinAndroidJpsPlugin.kt b/plugins/android-jps-plugin/src/KotlinAndroidJpsPlugin.kt index 66945231713..a4ec2391754 100644 --- a/plugins/android-jps-plugin/src/KotlinAndroidJpsPlugin.kt +++ b/plugins/android-jps-plugin/src/KotlinAndroidJpsPlugin.kt @@ -72,15 +72,13 @@ public class KotlinAndroidJpsPlugin : KotlinJpsCompilerArgumentsProvider { } private fun getAndroidResPath(module: JpsModule): String? { - val extension = AndroidJpsUtil.getExtension(module) - if (extension == null) return null + val extension = AndroidJpsUtil.getExtension(module) ?: return null val path = AndroidJpsUtil.getResourceDirForCompilationPath(extension) return File(path!!.getAbsolutePath() + "/layout").getAbsolutePath() } private fun getAndroidManifest(module: JpsModule): String? { - val extension = AndroidJpsUtil.getExtension(module) - if (extension == null) return null + val extension = AndroidJpsUtil.getExtension(module) ?: return null return AndroidJpsUtil.getManifestFileForCompilationPath(extension)!!.getAbsolutePath() } diff --git a/plugins/android-jps-plugin/tests/org/jetbrains/kotlin/jps/build/android/AbstractAndroidJpsTestCase.kt b/plugins/android-jps-plugin/tests/org/jetbrains/kotlin/jps/build/android/AbstractAndroidJpsTestCase.kt index 1319e7a45a6..6a13411fffc 100644 --- a/plugins/android-jps-plugin/tests/org/jetbrains/kotlin/jps/build/android/AbstractAndroidJpsTestCase.kt +++ b/plugins/android-jps-plugin/tests/org/jetbrains/kotlin/jps/build/android/AbstractAndroidJpsTestCase.kt @@ -44,7 +44,7 @@ public abstract class AbstractAndroidJpsTestCase : JpsBuildTestCase() { public fun deleteDirectory(path: File): Boolean { if (path.exists() && path.isDirectory()) { - val files = path.listFiles()!! + val files = path.listFiles() for (i in files.indices) { if (files[i].isDirectory()) { deleteDirectory(files[i]) @@ -62,9 +62,8 @@ public abstract class AbstractAndroidJpsTestCase : JpsBuildTestCase() { addJdk(jdkName) val properties = JpsAndroidSdkProperties("android-21", jdkName) val sdkPath = getHomePath() + "/../dependencies/androidSDK" - val library = myModel!!.getGlobal().addSdk>(SDK_NAME, sdkPath, "", - JpsAndroidSdkType.INSTANCE, JpsSimpleElementImpl(properties)) - library!!.addRoot(File(sdkPath + "/platforms/android-21/android.jar"), JpsOrderRootType.COMPILED) + val library = myModel.getGlobal().addSdk(SDK_NAME, sdkPath, "", JpsAndroidSdkType.INSTANCE, JpsSimpleElementImpl(properties)) + library.addRoot(File(sdkPath + "/platforms/android-21/android.jar"), JpsOrderRootType.COMPILED) return library.getProperties() } }