Minor: fix deprecations in Kotlin Android Extensions code

This commit is contained in:
Yan Zhulanow
2015-06-23 18:38:40 +03:00
parent 700d495d7f
commit cf08390e04
13 changed files with 27 additions and 29 deletions
@@ -68,7 +68,7 @@ public class AndroidCommandLineProcessor : CommandLineProcessor {
public class CliAndroidDeclarationsProvider(private val project: Project) : ExternalDeclarationsProvider { public class CliAndroidDeclarationsProvider(private val project: Project) : ExternalDeclarationsProvider {
override fun getExternalDeclarations(moduleInfo: ModuleInfo?): Collection<JetFile> { override fun getExternalDeclarations(moduleInfo: ModuleInfo?): Collection<JetFile> {
val parser = ServiceManager.getService<AndroidUIXmlProcessor>(project, javaClass<AndroidUIXmlProcessor>()) val parser = ServiceManager.getService(project, javaClass<AndroidUIXmlProcessor>())
return parser.parseToPsi() ?: listOf() return parser.parseToPsi() ?: listOf()
} }
} }
@@ -199,7 +199,7 @@ public class AndroidExpressionCodegenExtension : ExpressionCodegenExtension {
} }
private fun CallableDescriptor.getAndroidPackage(): String? { private fun CallableDescriptor.getAndroidPackage(): String? {
return DescriptorToSourceUtils.getContainingFile(this)?.getUserData<String>(AndroidConst.ANDROID_USER_PACKAGE) return DescriptorToSourceUtils.getContainingFile(this)?.getUserData(AndroidConst.ANDROID_USER_PACKAGE)
} }
private fun ResolvedCall<*>.getReceiverDeclarationDescriptor(): ClassifierDescriptor? { private fun ResolvedCall<*>.getReceiverDeclarationDescriptor(): ClassifierDescriptor? {
@@ -337,6 +337,7 @@ public class AndroidExpressionCodegenExtension : ExpressionCodegenExtension {
loadId() loadId()
iv.invokevirtual("android/view/View", "findViewById", "(I)Landroid/view/View;", false) iv.invokevirtual("android/view/View", "findViewById", "(I)Landroid/view/View;", false)
} }
else -> throw IllegalStateException("Can't generate code for $androidClassType")
} }
iv.store(2, viewType) iv.store(2, viewType)
@@ -35,8 +35,7 @@ public abstract class AndroidResourceManager(val project: Project) {
public open fun propertyToXmlAttributes(property: JetProperty): List<PsiElement> = listOf() public open fun propertyToXmlAttributes(property: JetProperty): List<PsiElement> = listOf()
public fun getLayoutXmlFiles(): Map<String, List<PsiFile>> { public fun getLayoutXmlFiles(): Map<String, List<PsiFile>> {
val info = androidModuleInfo val info = androidModuleInfo ?: return mapOf()
if (info == null) return mapOf()
val psiManager = PsiManager.getInstance(project) val psiManager = PsiManager.getInstance(project)
val fileManager = VirtualFileManager.getInstance() val fileManager = VirtualFileManager.getInstance()
@@ -68,8 +67,8 @@ public abstract class AndroidResourceManager(val project: Project) {
companion object { companion object {
public fun getInstance(module: Module): AndroidResourceManager { public fun getInstance(module: Module): AndroidResourceManager {
val service = ModuleServiceManager.getService<AndroidResourceManager>(module, javaClass<AndroidResourceManager>()) val service = ModuleServiceManager.getService(module, javaClass<AndroidResourceManager>())
return service ?: module.getComponent<AndroidResourceManager>(javaClass<AndroidResourceManager>()) return service ?: module.getComponent(javaClass<AndroidResourceManager>())
} }
} }
@@ -16,7 +16,7 @@
package org.jetbrains.kotlin.lang.resolve.android package org.jetbrains.kotlin.lang.resolve.android
trait KotlinWriter { interface KotlinWriter {
fun toStringBuffer(): StringBuffer fun toStringBuffer(): StringBuffer
} }
@@ -53,10 +53,14 @@ fun UsefulTestCase.createAndroidTestEnvironment(
): KotlinCoreEnvironment { ): KotlinCoreEnvironment {
configuration.put(AndroidConfigurationKeys.ANDROID_RES_PATH, resPaths) configuration.put(AndroidConfigurationKeys.ANDROID_RES_PATH, resPaths)
configuration.put(AndroidConfigurationKeys.ANDROID_MANIFEST, manifestPath) configuration.put(AndroidConfigurationKeys.ANDROID_MANIFEST, manifestPath)
val myEnvironment = KotlinCoreEnvironment.createForTests(getTestRootDisposable()!!, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) val myEnvironment = KotlinCoreEnvironment.createForTests(getTestRootDisposable()!!, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
val project = myEnvironment.project 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()) ExpressionCodegenExtension.registerExtension(project, AndroidExpressionCodegenExtension())
return myEnvironment return myEnvironment
} }
@@ -61,8 +61,8 @@ public class AndroidPsiTreeChangePreprocessor : PsiTreeChangePreprocessor, Simpl
} }
private fun AndroidResourceManager.getModuleResDirectories(): List<VirtualFile> { private fun AndroidResourceManager.getModuleResDirectories(): List<VirtualFile> {
val info = androidModuleInfo val info = androidModuleInfo ?: return listOf()
if (info == null) return listOf()
val fileManager = VirtualFileManager.getInstance() val fileManager = VirtualFileManager.getInstance()
return info.resDirectories.map { fileManager.findFileByUrl("file://" + it) } return info.resDirectories.map { fileManager.findFileByUrl("file://" + it) }
} }
@@ -91,8 +91,7 @@ public class AndroidRenameProcessor : RenamePsiElementProcessor() {
newName: String, newName: String,
allRenames: MutableMap<PsiElement, String> allRenames: MutableMap<PsiElement, String>
) { ) {
val module = jetProperty.getModule() val module = jetProperty.getModule() ?: return
if (module == null) return
val processor = ModuleServiceManager.getService(module, javaClass<AndroidUIXmlProcessor>()) val processor = ModuleServiceManager.getService(module, javaClass<AndroidUIXmlProcessor>())
val resourceManager = processor.resourceManager val resourceManager = processor.resourceManager
@@ -119,8 +118,7 @@ public class AndroidRenameProcessor : RenamePsiElementProcessor() {
) { ) {
val element = LazyValueResourceElementWrapper.computeLazyElement(attribute) val element = LazyValueResourceElementWrapper.computeLazyElement(attribute)
val module = attribute.getModule() ?: ModuleUtilCore.findModuleForFile( val module = attribute.getModule() ?: ModuleUtilCore.findModuleForFile(
attribute.getContainingFile().getVirtualFile(), attribute.getProject()) attribute.getContainingFile().getVirtualFile(), attribute.getProject()) ?: return
if (module == null) return
val processor = ModuleServiceManager.getService(module, javaClass<AndroidUIXmlProcessor>()) val processor = ModuleServiceManager.getService(module, javaClass<AndroidUIXmlProcessor>())
if (element == null) return if (element == null) return
@@ -26,10 +26,8 @@ import org.jetbrains.kotlin.lang.resolve.android.isAndroidSyntheticElement
public class AndroidSimpleNameReferenceExtension : SimpleNameReferenceExtension { public class AndroidSimpleNameReferenceExtension : SimpleNameReferenceExtension {
override fun isReferenceTo(reference: JetSimpleNameReference, element: PsiElement): Boolean? { override fun isReferenceTo(reference: JetSimpleNameReference, element: PsiElement): Boolean? {
val resolvedElement = reference.resolve() val resolvedElement = reference.resolve() ?: return null
if (resolvedElement == null) {
return null
}
if (isAndroidSyntheticElement(resolvedElement)) { if (isAndroidSyntheticElement(resolvedElement)) {
if (element is ValueResourceElementWrapper) { if (element is ValueResourceElementWrapper) {
val resource = element.getValue() val resource = element.getValue()
@@ -30,7 +30,7 @@ public class IDEAndroidExternalDeclarationsProvider(private val project: Project
if (moduleInfo !is ModuleSourceInfo) return listOf() if (moduleInfo !is ModuleSourceInfo) return listOf()
val module = moduleInfo.module val module = moduleInfo.module
val parser = ModuleServiceManager.getService<AndroidUIXmlProcessor>(module, javaClass<AndroidUIXmlProcessor>()) val parser = ModuleServiceManager.getService(module, javaClass<AndroidUIXmlProcessor>())
val syntheticFiles = parser.parseToPsi() val syntheticFiles = parser.parseToPsi()
syntheticFiles?.forEach { it.moduleInfo = moduleInfo } syntheticFiles?.forEach { it.moduleInfo = moduleInfo }
@@ -34,6 +34,7 @@ public abstract class AbstractAndroidCompletionTest : KotlinAndroidTestCase() {
codeCompletionOldValue = settings.AUTOCOMPLETE_ON_CODE_COMPLETION codeCompletionOldValue = settings.AUTOCOMPLETE_ON_CODE_COMPLETION
smartTypeCompletionOldValue = settings.AUTOCOMPLETE_ON_SMART_TYPE_COMPLETION smartTypeCompletionOldValue = settings.AUTOCOMPLETE_ON_SMART_TYPE_COMPLETION
@suppress("NON_EXHAUSTIVE_WHEN")
when (completionType()) { when (completionType()) {
CompletionType.SMART -> settings.AUTOCOMPLETE_ON_SMART_TYPE_COMPLETION = false CompletionType.SMART -> settings.AUTOCOMPLETE_ON_SMART_TYPE_COMPLETION = false
CompletionType.BASIC -> settings.AUTOCOMPLETE_ON_CODE_COMPLETION = false CompletionType.BASIC -> settings.AUTOCOMPLETE_ON_CODE_COMPLETION = false
@@ -37,8 +37,8 @@ public abstract class AbstractAndroidRenameTest : KotlinAndroidTestCase() {
val editor = f.getEditor() val editor = f.getEditor()
val file = f.getFile() val file = f.getFile()
val completionEditor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, file) val completionEditor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, file)
val element = TargetElementUtilBase.findTargetElement(completionEditor, val element = TargetElementUtilBase.findTargetElement(
TargetElementUtilBase.REFERENCED_ELEMENT_ACCEPTED or TargetElementUtilBase.ELEMENT_NAME_ACCEPTED) completionEditor, TargetElementUtilBase.REFERENCED_ELEMENT_ACCEPTED or TargetElementUtilBase.ELEMENT_NAME_ACCEPTED)
assert(element != null) assert(element != null)
assertTrue(element is JetProperty) assertTrue(element is JetProperty)
@@ -72,15 +72,13 @@ public class KotlinAndroidJpsPlugin : KotlinJpsCompilerArgumentsProvider {
} }
private fun getAndroidResPath(module: JpsModule): String? { private fun getAndroidResPath(module: JpsModule): String? {
val extension = AndroidJpsUtil.getExtension(module) val extension = AndroidJpsUtil.getExtension(module) ?: return null
if (extension == null) return null
val path = AndroidJpsUtil.getResourceDirForCompilationPath(extension) val path = AndroidJpsUtil.getResourceDirForCompilationPath(extension)
return File(path!!.getAbsolutePath() + "/layout").getAbsolutePath() return File(path!!.getAbsolutePath() + "/layout").getAbsolutePath()
} }
private fun getAndroidManifest(module: JpsModule): String? { private fun getAndroidManifest(module: JpsModule): String? {
val extension = AndroidJpsUtil.getExtension(module) val extension = AndroidJpsUtil.getExtension(module) ?: return null
if (extension == null) return null
return AndroidJpsUtil.getManifestFileForCompilationPath(extension)!!.getAbsolutePath() return AndroidJpsUtil.getManifestFileForCompilationPath(extension)!!.getAbsolutePath()
} }
@@ -44,7 +44,7 @@ public abstract class AbstractAndroidJpsTestCase : JpsBuildTestCase() {
public fun deleteDirectory(path: File): Boolean { public fun deleteDirectory(path: File): Boolean {
if (path.exists() && path.isDirectory()) { if (path.exists() && path.isDirectory()) {
val files = path.listFiles()!! val files = path.listFiles()
for (i in files.indices) { for (i in files.indices) {
if (files[i].isDirectory()) { if (files[i].isDirectory()) {
deleteDirectory(files[i]) deleteDirectory(files[i])
@@ -62,9 +62,8 @@ public abstract class AbstractAndroidJpsTestCase : JpsBuildTestCase() {
addJdk(jdkName) addJdk(jdkName)
val properties = JpsAndroidSdkProperties("android-21", jdkName) val properties = JpsAndroidSdkProperties("android-21", jdkName)
val sdkPath = getHomePath() + "/../dependencies/androidSDK" val sdkPath = getHomePath() + "/../dependencies/androidSDK"
val library = myModel!!.getGlobal().addSdk<JpsSimpleElement<JpsAndroidSdkProperties>>(SDK_NAME, sdkPath, "", val library = myModel.getGlobal().addSdk(SDK_NAME, sdkPath, "", JpsAndroidSdkType.INSTANCE, JpsSimpleElementImpl(properties))
JpsAndroidSdkType.INSTANCE, JpsSimpleElementImpl(properties)) library.addRoot(File(sdkPath + "/platforms/android-21/android.jar"), JpsOrderRootType.COMPILED)
library!!.addRoot(File(sdkPath + "/platforms/android-21/android.jar"), JpsOrderRootType.COMPILED)
return library.getProperties() return library.getProperties()
} }
} }