Codebase update
This commit is contained in:
@@ -17,40 +17,38 @@
|
||||
package org.jetbrains.kotlin.android
|
||||
|
||||
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
||||
import org.jetbrains.jet.config.CompilerConfiguration
|
||||
import com.intellij.mock.MockProject
|
||||
import org.jetbrains.jet.config.CompilerConfigurationKey
|
||||
import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor
|
||||
import org.jetbrains.kotlin.compiler.plugin.CliOption
|
||||
import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException
|
||||
import org.jetbrains.jet.extensions.ExternalDeclarationsProvider
|
||||
import org.jetbrains.jet.lang.psi.JetFile
|
||||
import org.jetbrains.jet.lang.resolve.android.*
|
||||
import com.intellij.openapi.components.ServiceManager
|
||||
import org.jetbrains.jet.utils.emptyOrSingletonList
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.jet.codegen.extensions.ExpressionCodegenExtension
|
||||
import org.jetbrains.jet.lang.descriptors.CallableDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall
|
||||
import org.jetbrains.jet.codegen.StackValue
|
||||
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.org.objectweb.asm.Type
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils
|
||||
import org.jetbrains.jet.codegen.ClassBuilder
|
||||
import org.jetbrains.org.objectweb.asm.Opcodes.*
|
||||
import org.jetbrains.jet.lang.resolve.java.diagnostics.JvmDeclarationOrigin
|
||||
import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter
|
||||
import org.jetbrains.jet.lang.psi.JetClassOrObject
|
||||
import org.jetbrains.jet.codegen.FunctionCodegen
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.org.objectweb.asm.Label
|
||||
import org.jetbrains.jet.lang.psi.JetClass
|
||||
import org.jetbrains.jet.lang.psi.JetClassBody
|
||||
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyClassDescriptor
|
||||
import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyJavaClassDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils
|
||||
import org.jetbrains.jet.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.codegen.StackValue
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaClassDescriptor
|
||||
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassDescriptor
|
||||
import org.jetbrains.kotlin.codegen.ClassBuilder
|
||||
import org.jetbrains.kotlin.psi.JetClassOrObject
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.psi.JetClass
|
||||
import org.jetbrains.kotlin.psi.JetClassBody
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin
|
||||
import org.jetbrains.kotlin.codegen.FunctionCodegen
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.CompilerConfigurationKey
|
||||
|
||||
public object AndroidConfigurationKeys {
|
||||
|
||||
@@ -83,7 +81,7 @@ public class AndroidCommandLineProcessor : CommandLineProcessor {
|
||||
public class CliAndroidDeclarationsProvider(private val project: Project) : ExternalDeclarationsProvider {
|
||||
override fun getExternalDeclarations(moduleInfo: ModuleInfo?): Collection<JetFile> {
|
||||
val parser = ServiceManager.getService<AndroidUIXmlProcessor>(project, javaClass<AndroidUIXmlProcessor>())
|
||||
return emptyOrSingletonList(parser.parseToPsi())
|
||||
return parser.parseToPsi() ?: listOf()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,7 +216,7 @@ public class AndroidComponentRegistrar : ComponentRegistrar {
|
||||
public override fun registerProjectComponents(project: MockProject, configuration: CompilerConfiguration) {
|
||||
val androidResPath = configuration.get(AndroidConfigurationKeys.ANDROID_RES_PATH)
|
||||
val androidManifest = configuration.get(AndroidConfigurationKeys.ANDROID_MANIFEST)
|
||||
project.registerService(javaClass<AndroidUIXmlProcessor>(), CliAndroidUIXmlProcessor(project, androidResPath, androidManifest))
|
||||
project.registerService(javaClass<AndroidUIXmlProcessor>(), CliAndroidUIXmlProcessor(project, androidManifest, androidResPath))
|
||||
|
||||
ExternalDeclarationsProvider.registerExtension(project, CliAndroidDeclarationsProvider(project))
|
||||
ExpressionCodegenExtension.registerExtension(project, AndroidExpressionCodegen())
|
||||
|
||||
+2
-1
@@ -20,7 +20,8 @@ import com.intellij.openapi.util.Key
|
||||
|
||||
public object AndroidConst {
|
||||
val ANDROID_USER_PACKAGE: Key<String> = Key.create<String>("ANDROID_USER_PACKAGE")
|
||||
val SYNTHETIC_FILENAME: String = "ANDROIDXML.kt"
|
||||
val SYNTHETIC_FILENAME: String = "ANDROIDXML"
|
||||
val SYNTHETIC_PACKAGE: String = "kotlinx.android.synthetic."
|
||||
|
||||
val ANDROID_NAMESPACE: String = "android"
|
||||
val ID_ATTRIBUTE_NO_NAMESPACE: String = "id"
|
||||
|
||||
+2
-4
@@ -19,21 +19,19 @@ package org.jetbrains.jet.lang.resolve.android
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.jet.lang.psi.JetFile
|
||||
import com.intellij.openapi.components.ServiceManager
|
||||
import com.intellij.psi.PsiField
|
||||
import com.intellij.psi.PsiClass
|
||||
import org.jetbrains.jet.utils.emptyOrSingletonList
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.util.Computable
|
||||
import com.intellij.openapi.module.ModuleServiceManager
|
||||
|
||||
fun isAndroidSyntheticFile(f: PsiFile?): Boolean {
|
||||
return f?.getUserData(org.jetbrains.jet.lang.resolve.android.AndroidConst.ANDROID_USER_PACKAGE) != null
|
||||
return f?.getUserData(AndroidConst.ANDROID_USER_PACKAGE) != null
|
||||
}
|
||||
|
||||
public fun isAndroidSyntheticElement(element: PsiElement?): Boolean {
|
||||
return isAndroidSyntheticFile(ApplicationManager.getApplication()!!.runReadAction(Computable {
|
||||
return isAndroidSyntheticFile(ApplicationManager.getApplication().runReadAction(Computable {
|
||||
element?.getContainingFile()
|
||||
}))
|
||||
}
|
||||
|
||||
+6
-5
@@ -32,17 +32,18 @@ public class CliAndroidUIXmlProcessor(
|
||||
CliAndroidResourceManager(project, manifestPath, mainResDirectory)
|
||||
}
|
||||
|
||||
override fun parseSingleFile(file: PsiFile): String {
|
||||
val ids: MutableCollection<AndroidWidget> = ArrayList()
|
||||
val handler = AndroidXmlHandler(resourceManager, { id, clazz -> ids.add(AndroidWidget(id, clazz)) })
|
||||
override fun parseSingleFile(file: PsiFile): Collection<AndroidWidget> {
|
||||
val widgets: MutableCollection<AndroidWidget> = ArrayList()
|
||||
val handler = AndroidXmlHandler(resourceManager, { id, clazz -> widgets.add(AndroidWidget(id, clazz)) })
|
||||
|
||||
try {
|
||||
val inputStream = ByteArrayInputStream(file.getVirtualFile().contentsToByteArray())
|
||||
resourceManager.saxParser.parse(inputStream, handler)
|
||||
return produceKotlinProperties(KotlinStringWriter(), ids).toString()
|
||||
return widgets
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
LOG.error(e)
|
||||
return ""
|
||||
return listOf()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+7
-3
@@ -17,12 +17,12 @@
|
||||
package org.jetbrains.jet.lang.resolve.android
|
||||
|
||||
trait KotlinWriter {
|
||||
fun output(): StringBuffer
|
||||
fun toStringBuffer(): StringBuffer
|
||||
}
|
||||
|
||||
class KotlinStringWriter : KotlinWriter {
|
||||
|
||||
private val ctx = org.jetbrains.jet.lang.resolve.android.Context()
|
||||
private val ctx = Context()
|
||||
private val imports = ctx.fork()
|
||||
private val body = ctx.fork()
|
||||
|
||||
@@ -91,9 +91,13 @@ class KotlinStringWriter : KotlinWriter {
|
||||
body.newLine()
|
||||
}
|
||||
|
||||
override fun output(): StringBuffer {
|
||||
override fun toStringBuffer(): StringBuffer {
|
||||
ctx.absorbChildren()
|
||||
return ctx.buffer
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return ctx.buffer.toString()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+7
-8
@@ -16,20 +16,19 @@
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.android.test
|
||||
|
||||
import org.jetbrains.jet.codegen.generated.AbstractBlackBoxCodegenTest
|
||||
import org.jetbrains.jet.config.CompilerConfiguration
|
||||
import java.io.File
|
||||
import com.intellij.util.Processor
|
||||
import org.jetbrains.jet.ConfigurationKind
|
||||
import org.jetbrains.jet.TestJdkKind
|
||||
import org.jetbrains.jet.JetTestUtils
|
||||
import java.util.regex.Pattern
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import java.util.ArrayList
|
||||
import java.util.Collections
|
||||
import com.intellij.util.ArrayUtil
|
||||
import org.jetbrains.jet.JetTestCaseBuilder
|
||||
import org.jetbrains.jet.codegen.CodegenTestFiles
|
||||
import org.jetbrains.kotlin.codegen.generated.AbstractBlackBoxCodegenTest
|
||||
import org.jetbrains.kotlin.test.JetTestUtils
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.codegen.CodegenTestFiles
|
||||
|
||||
public abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() {
|
||||
|
||||
@@ -96,7 +95,7 @@ public abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() {
|
||||
myFiles = CodegenTestFiles.create(
|
||||
myEnvironment!!.getProject(),
|
||||
ArrayUtil.toStringArray(files),
|
||||
JetTestCaseBuilder.getHomeDirectory() + "/plugins/android-compiler-plugin/testData"
|
||||
JetTestUtils.getHomeDirectory() + "/plugins/android-compiler-plugin/testData"
|
||||
)
|
||||
blackBox();
|
||||
}
|
||||
|
||||
+5
-8
@@ -16,18 +16,15 @@
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.android.test
|
||||
|
||||
import org.jetbrains.jet.codegen.AbstractBytecodeTextTest
|
||||
import org.jetbrains.jet.JetTestUtils
|
||||
import org.jetbrains.jet.ConfigurationKind
|
||||
import org.jetbrains.jet.TestJdkKind
|
||||
import org.jetbrains.jet.config.CompilerConfiguration
|
||||
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys
|
||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment
|
||||
import org.jetbrains.kotlin.android.AndroidConfigurationKeys
|
||||
import org.jetbrains.jet.extensions.ExternalDeclarationsProvider
|
||||
import org.jetbrains.jet.codegen.extensions.ExpressionCodegenExtension
|
||||
import org.jetbrains.kotlin.android.AndroidExpressionCodegen
|
||||
import org.jetbrains.jet.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.codegen.AbstractBytecodeTextTest
|
||||
import org.jetbrains.kotlin.test.JetTestUtils
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
|
||||
public abstract class AbstractAndroidBytecodeShapeTest : AbstractBytecodeTextTest() {
|
||||
|
||||
|
||||
+15
-8
@@ -21,17 +21,16 @@ import java.io.File
|
||||
import java.io.IOException
|
||||
import java.util.Scanner
|
||||
import java.io.FileWriter
|
||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment
|
||||
import org.jetbrains.jet.config.CompilerConfiguration
|
||||
import org.jetbrains.jet.JetTestUtils
|
||||
import org.jetbrains.jet.ConfigurationKind
|
||||
import org.jetbrains.jet.TestJdkKind
|
||||
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys
|
||||
import org.junit.Assert
|
||||
import kotlin.test.fail
|
||||
import org.jetbrains.jet.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.jet.lang.resolve.android.CliAndroidUIXmlProcessor
|
||||
import org.jetbrains.jet.lang.resolve.android.AndroidUIXmlProcessor
|
||||
import kotlin.test.assertEquals
|
||||
import org.jetbrains.kotlin.test.JetTestUtils
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
|
||||
public abstract class AbstractAndroidXml2KConversionTest : UsefulTestCase() {
|
||||
|
||||
@@ -41,7 +40,15 @@ public abstract class AbstractAndroidXml2KConversionTest : UsefulTestCase() {
|
||||
|
||||
val actual = parser.parse()
|
||||
|
||||
JetTestUtils.assertEqualsToFile(File(path + "/layout.kt"), actual)
|
||||
val layoutFiles = File(path).listFiles {
|
||||
it.isFile() && it.name.startsWith("layout") && it.name.endsWith(".kt")
|
||||
}?.sortBy { it.name } ?: listOf()
|
||||
|
||||
assertEquals(layoutFiles.size(), actual.size())
|
||||
|
||||
for ((index, file) in layoutFiles.withIndex()) {
|
||||
JetTestUtils.assertEqualsToFile(file, actual[index])
|
||||
}
|
||||
}
|
||||
|
||||
public fun doNoManifestTest(path: String) {
|
||||
|
||||
+4
-4
@@ -17,10 +17,10 @@
|
||||
package org.jetbrains.jet.lang.resolve.android.test;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.jet.JUnit3RunnerWithInners;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.test.InnerTestClasses;
|
||||
import org.jetbrains.jet.test.TestMetadata;
|
||||
import org.jetbrains.kotlin.test.InnerTestClasses;
|
||||
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
|
||||
import org.jetbrains.kotlin.test.JetTestUtils;
|
||||
import org.jetbrains.kotlin.test.TestMetadata;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
+3
-4
@@ -17,10 +17,9 @@
|
||||
package org.jetbrains.jet.lang.resolve.android.test;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.jet.JUnit3RunnerWithInners;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.test.InnerTestClasses;
|
||||
import org.jetbrains.jet.test.TestMetadata;
|
||||
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
|
||||
import org.jetbrains.kotlin.test.JetTestUtils;
|
||||
import org.jetbrains.kotlin.test.TestMetadata;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
+4
-4
@@ -17,10 +17,10 @@
|
||||
package org.jetbrains.jet.lang.resolve.android.test;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.jet.JUnit3RunnerWithInners;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.test.InnerTestClasses;
|
||||
import org.jetbrains.jet.test.TestMetadata;
|
||||
import org.jetbrains.kotlin.test.InnerTestClasses;
|
||||
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
|
||||
import org.jetbrains.kotlin.test.JetTestUtils;
|
||||
import org.jetbrains.kotlin.test.TestMetadata;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
+6
-7
@@ -18,17 +18,16 @@ package org.jetbrains.jet.lang.resolve.android.test
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.jet.extensions.ExternalDeclarationsProvider
|
||||
import org.jetbrains.jet.lang.psi.JetFile
|
||||
import org.jetbrains.jet.utils.emptyOrSingletonList
|
||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment
|
||||
import org.jetbrains.kotlin.android.AndroidConfigurationKeys
|
||||
import org.jetbrains.jet.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.jet.codegen.extensions.ExpressionCodegenExtension
|
||||
import org.jetbrains.kotlin.android.AndroidExpressionCodegen
|
||||
import org.jetbrains.jet.config.CompilerConfiguration
|
||||
import com.intellij.testFramework.UsefulTestCase
|
||||
import org.jetbrains.jet.lang.resolve.android.CliAndroidUIXmlProcessor
|
||||
import org.jetbrains.jet.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
|
||||
private class AndroidTestExternalDeclarationsProvider(
|
||||
val project: Project,
|
||||
@@ -37,7 +36,7 @@ private class AndroidTestExternalDeclarationsProvider(
|
||||
) : ExternalDeclarationsProvider {
|
||||
override fun getExternalDeclarations(moduleInfo: ModuleInfo?): Collection<JetFile> {
|
||||
val parser = CliAndroidUIXmlProcessor(project, manifestPath, resPath)
|
||||
return emptyOrSingletonList(parser.parseToPsi())
|
||||
return parser.parseToPsi() ?: listOf()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user