minor refactorings
This commit is contained in:
committed by
Yan Zhulanow
parent
23fbc60e50
commit
19e6b79cae
@@ -1889,11 +1889,9 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
||||
PropertyDescriptor propertyDescriptor = (PropertyDescriptor) descriptor;
|
||||
|
||||
JetFile file = DescriptorToSourceUtils.getContainingFile(propertyDescriptor);
|
||||
if (file != null && file.getName() == AndroidConst.SYNTHETIC_FILENAME) {
|
||||
|
||||
String userData = file.getUserData(AndroidConst.ANDROID_SYNTHETIC);
|
||||
if (userData != null && userData.equals("OK")) {
|
||||
String androidPackage = file.getUserData(AndroidConst.ANDROID_USER_PACKAGE);
|
||||
if (file != null) {
|
||||
String androidPackage = file.getUserData(ANDROID_USER_PACKAGE);
|
||||
if (androidPackage != null) {
|
||||
|
||||
Type retType = typeMapper.mapType(propertyDescriptor.getReturnType());
|
||||
v.load(0, Type.getType("Landroid/app/Activity;"));
|
||||
|
||||
@@ -19,7 +19,6 @@ package org.jetbrains.jet.lang.resolve.android;
|
||||
import com.intellij.openapi.util.Key;
|
||||
|
||||
public class AndroidConst {
|
||||
public static final Key<String> ANDROID_SYNTHETIC = Key.create("ANDROID_SYNTHETIC");
|
||||
public static final Key<String> ANDROID_USER_PACKAGE = Key.create("ANDROID_USER_PACKAGE");
|
||||
public static final String SYNTHETIC_FILENAME = "ANDROIDXML.kt";
|
||||
}
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.openapi.project.Project
|
||||
|
||||
abstract class AndroidResourceManager(val project: Project, val searchPath: String?) {
|
||||
abstract class AndroidResourceManager(protected val project: Project, protected val searchPath: String?) {
|
||||
private val idDeclarationPrefix = "@+id/"
|
||||
private val idUsagePrefix = "@id/"
|
||||
public val androidNamespace: String = "android"
|
||||
|
||||
+4
-10
@@ -49,15 +49,13 @@ import com.intellij.openapi.diagnostic.Logger
|
||||
import org.jetbrains.jet.lang.resolve.android.AndroidConst.*
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
|
||||
abstract class AndroidUIXmlProcessor(val project: Project) {
|
||||
abstract class AndroidUIXmlProcessor(protected val project: Project) {
|
||||
|
||||
class NoAndroidManifestFound : Exception("No android manifest file found in project root")
|
||||
class ManifestParsingFailed
|
||||
|
||||
enum class CacheAction { HIT; MISS
|
||||
}
|
||||
private enum class CacheAction { HIT; MISS }
|
||||
|
||||
val androidImports = arrayListOf("android.app.Activity",
|
||||
private val androidImports = arrayListOf("android.app.Activity",
|
||||
"android.view.View",
|
||||
"android.widget.*")
|
||||
|
||||
@@ -66,10 +64,10 @@ abstract class AndroidUIXmlProcessor(val project: Project) {
|
||||
|
||||
private val fileCache = HashMap<PsiFile, String>()
|
||||
var lastCachedPsi: JetFile? = null
|
||||
private set
|
||||
protected val fileModificationTime: HashMap<PsiFile, Long> = HashMap()
|
||||
|
||||
protected val filesToProcess: Queue<PsiFile> = ConcurrentLinkedQueue()
|
||||
protected var listenerSetUp: Boolean = false
|
||||
|
||||
protected val LOG: Logger = Logger.getInstance(this.javaClass)
|
||||
|
||||
@@ -88,7 +86,6 @@ abstract class AndroidUIXmlProcessor(val project: Project) {
|
||||
try {
|
||||
val vf = LightVirtualFile(SYNTHETIC_FILENAME, renderString())
|
||||
val psiFile = PsiManager.getInstance(project).findFile(vf) as JetFile
|
||||
psiFile.putUserData(ANDROID_SYNTHETIC, "OK")
|
||||
psiFile.putUserData(ANDROID_USER_PACKAGE, androidAppPackage)
|
||||
lastCachedPsi = psiFile
|
||||
psiFile
|
||||
@@ -103,7 +100,6 @@ abstract class AndroidUIXmlProcessor(val project: Project) {
|
||||
|
||||
private fun writeImports(kw: KotlinStringWriter): KotlinWriter {
|
||||
kw.writePackage(androidAppPackage)
|
||||
// if (ApplicationManager.getApplication()?.isUnitTestMode() ?: false) return kw
|
||||
for (elem in androidImports)
|
||||
kw.writeImport(elem)
|
||||
kw.writeEmptyLine()
|
||||
@@ -129,7 +125,6 @@ abstract class AndroidUIXmlProcessor(val project: Project) {
|
||||
|
||||
private fun doParse(): CacheAction? {
|
||||
if (searchPath == null || searchPath == "") return null
|
||||
lazySetup()
|
||||
populateQueue()
|
||||
var overallCacheMiss = false
|
||||
var file = filesToProcess.poll()
|
||||
@@ -158,7 +153,6 @@ abstract class AndroidUIXmlProcessor(val project: Project) {
|
||||
filesToProcess.addAll(resourceManager.getLayoutXmlFiles())
|
||||
}
|
||||
|
||||
protected abstract fun lazySetup()
|
||||
|
||||
protected fun produceKotlinProperties(kw: KotlinStringWriter, ids: Collection<AndroidWidget>): StringBuffer {
|
||||
for (id in ids) {
|
||||
|
||||
@@ -39,11 +39,7 @@ class AndroidWidget(val id: String, val className: String) : AndroidResource
|
||||
class AndroidManifest(val _package: String) : AndroidResource
|
||||
|
||||
fun isAndroidSyntheticFile(f: PsiFile?): Boolean {
|
||||
if (f?.getName() == AndroidConst.SYNTHETIC_FILENAME) {
|
||||
val userData = f?.getUserData(AndroidConst.ANDROID_SYNTHETIC);
|
||||
return (userData != null && userData.equals("OK"))
|
||||
}
|
||||
return false
|
||||
return f?.getUserData(AndroidConst.ANDROID_USER_PACKAGE) != null
|
||||
}
|
||||
|
||||
fun isAndroidSyntheticElement(element: PsiElement?): Boolean {
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ import org.xml.sax.helpers.DefaultHandler
|
||||
import org.xml.sax.Attributes
|
||||
import java.util.HashMap
|
||||
|
||||
class AndroidXmlHandler(val resourceManager: AndroidResourceManager, val elementCallback: (String, String) -> Unit) : DefaultHandler() {
|
||||
class AndroidXmlHandler(private val resourceManager: AndroidResourceManager, private val elementCallback: (String, String) -> Unit) : DefaultHandler() {
|
||||
|
||||
override fun startDocument() {
|
||||
super<DefaultHandler>.startDocument()
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ import org.jetbrains.jet.lang.resolve.android.AndroidUIXmlProcessor.NoAndroidMan
|
||||
import javax.xml.parsers.SAXParser
|
||||
import javax.xml.parsers.SAXParserFactory
|
||||
|
||||
public class CliAndroidResourceManager(project: Project, searchPath: String?, val manifestPath: String?) : AndroidResourceManagerBase(project, searchPath) {
|
||||
public class CliAndroidResourceManager(project: Project, searchPath: String?, private val manifestPath: String?) : AndroidResourceManagerBase(project, searchPath) {
|
||||
|
||||
val saxParser: SAXParser = initSAX()
|
||||
|
||||
|
||||
+1
-5
@@ -23,14 +23,10 @@ import com.intellij.psi.PsiFile
|
||||
class CliAndroidUIXmlProcessor(project: Project, override val searchPath: String?, val manifestPath: String?) : AndroidUIXmlProcessor(project) {
|
||||
|
||||
override var androidAppPackage: String = ""
|
||||
get() = resourceManager.readManifest()._package
|
||||
|
||||
override val resourceManager = CliAndroidResourceManager(project, searchPath, manifestPath)
|
||||
|
||||
override fun lazySetup() {
|
||||
populateQueue()
|
||||
androidAppPackage = resourceManager.readManifest()._package
|
||||
}
|
||||
|
||||
override fun parseSingleFileImpl(file: PsiFile): String {
|
||||
val ids: MutableCollection<AndroidWidget> = ArrayList()
|
||||
val handler = AndroidXmlHandler(resourceManager, { id, wClass -> ids.add(AndroidWidget(id, wClass)) })
|
||||
|
||||
@@ -19,12 +19,12 @@ package org.jetbrains.jet.lang.resolve.android
|
||||
import java.util.ArrayList
|
||||
|
||||
|
||||
open class Context(val buffer: StringBuffer = StringBuffer(), var indentDepth: Int = 0) {
|
||||
open class Context(val buffer: StringBuffer = StringBuffer(), private var indentDepth: Int = 0) {
|
||||
open class InvalidIndent(num: Int) : RuntimeException("Indentation level < 0: $num")
|
||||
|
||||
val indentUnit = " "
|
||||
protected var currentIndent: String = indentUnit.repeat(indentDepth)
|
||||
val children = ArrayList<Context>()
|
||||
private val children = ArrayList<Context>()
|
||||
|
||||
public fun incIndent() {
|
||||
indentDepth++
|
||||
|
||||
+3
-3
@@ -22,9 +22,9 @@ trait KotlinWriter {
|
||||
|
||||
class KotlinStringWriter : KotlinWriter {
|
||||
|
||||
val ctx = Context()
|
||||
val imports = ctx.fork()
|
||||
val body = ctx.fork()
|
||||
private val ctx = Context()
|
||||
private val imports = ctx.fork()
|
||||
private val body = ctx.fork()
|
||||
|
||||
fun writeFunction(name: String,
|
||||
args: Collection<String>?,
|
||||
|
||||
@@ -43,7 +43,7 @@ public class AndroidXmlTest extends TestCaseWithTmpdir {
|
||||
private final File fakeViewSrc = new File(getTestDataPath() + "/fakeHelpers/View.kt");
|
||||
private final File fakeWidgetsSrc = new File(getTestDataPath() + "/fakeHelpers/Widgets.kt");
|
||||
private final File fakeMyActivitySrc = new File(singleFilePrefix + "MyActivity.kt");
|
||||
private final String singleFileResPath = singleFilePrefix + "res/layout/";
|
||||
private static final String singleFileResPath = singleFilePrefix + "res/layout/";
|
||||
|
||||
@Override
|
||||
public void setUp() throws Exception {
|
||||
|
||||
@@ -37,13 +37,6 @@ class IDEAndroidUIXmlProcessor(project: Project) : AndroidUIXmlProcessor(project
|
||||
CliAndroidResourceManager(project, searchPath, searchPath + "AndroidManifest.xml")
|
||||
else IDEAndroidResourceManager(project, searchPath)
|
||||
|
||||
override protected fun lazySetup() {
|
||||
if (listenerSetUp) return
|
||||
// androidAppPackage = resourceManager.readManifest()._package
|
||||
// populateQueue()
|
||||
listenerSetUp = true
|
||||
}
|
||||
|
||||
override fun parseSingleFileImpl(file: PsiFile): String {
|
||||
val ids: MutableCollection<AndroidWidget> = ArrayList()
|
||||
if (!ApplicationManager.getApplication()!!.isUnitTestMode()) (resourceManager as IDEAndroidResourceManager).resetAttributeCache()
|
||||
|
||||
@@ -19,5 +19,5 @@ package org.jetbrains.jet.plugin.android;
|
||||
import com.intellij.openapi.util.Key;
|
||||
|
||||
public class TestConst {
|
||||
public static final Key<String> TESTDATA_PATH = Key.create("TEPITE");
|
||||
public static final Key<String> TESTDATA_PATH = Key.create("");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user