From 19e6b79caecfaff6963ddfa9ab8c17ea6b86ff29 Mon Sep 17 00:00:00 2001 From: Mikhail Mutcianko Date: Fri, 22 Aug 2014 18:11:53 +0400 Subject: [PATCH] minor refactorings --- .../kotlin/codegen/ExpressionCodegen.java | 8 +++----- .../jet/lang/resolve/android/AndroidConst.java | 1 - .../lang/resolve/android/AndroidResourceManager.kt | 2 +- .../lang/resolve/android/AndroidUIXmlProcessor.kt | 14 ++++---------- .../jet/lang/resolve/android/AndroidUtil.kt | 6 +----- .../jet/lang/resolve/android/AndroidXmlHandler.kt | 2 +- .../resolve/android/CliAndroidResourceManager.kt | 2 +- .../resolve/android/CliAndroidUIXmlProcessor.kt | 6 +----- .../jetbrains/jet/lang/resolve/android/Context.kt | 4 ++-- .../jet/lang/resolve/android/KotlinWriter.kt | 6 +++--- .../jet/lang/resolve/android/AndroidXmlTest.java | 2 +- .../jet/plugin/android/IDEAndroidUIXmlProcessor.kt | 7 ------- .../jetbrains/jet/plugin/android/TestConst.java | 2 +- 13 files changed, 19 insertions(+), 43 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index 670f7bb2b96..cd0701a118d 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -1889,11 +1889,9 @@ public class ExpressionCodegen extends JetVisitor 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;")); diff --git a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidConst.java b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidConst.java index b5a8ba1498c..6655adf453f 100644 --- a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidConst.java +++ b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidConst.java @@ -19,7 +19,6 @@ package org.jetbrains.jet.lang.resolve.android; import com.intellij.openapi.util.Key; public class AndroidConst { - public static final Key ANDROID_SYNTHETIC = Key.create("ANDROID_SYNTHETIC"); public static final Key ANDROID_USER_PACKAGE = Key.create("ANDROID_USER_PACKAGE"); public static final String SYNTHETIC_FILENAME = "ANDROIDXML.kt"; } diff --git a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidResourceManager.kt b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidResourceManager.kt index ace59d77544..7b00e6e0411 100644 --- a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidResourceManager.kt +++ b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidResourceManager.kt @@ -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" diff --git a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidUIXmlProcessor.kt b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidUIXmlProcessor.kt index 52a2d9723e4..e42e316e94b 100644 --- a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidUIXmlProcessor.kt +++ b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidUIXmlProcessor.kt @@ -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() var lastCachedPsi: JetFile? = null + private set protected val fileModificationTime: HashMap = HashMap() protected val filesToProcess: Queue = 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): StringBuffer { for (id in ids) { diff --git a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidUtil.kt b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidUtil.kt index 06d62b12ef1..da38d002334 100644 --- a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidUtil.kt +++ b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidUtil.kt @@ -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 { diff --git a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidXmlHandler.kt b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidXmlHandler.kt index 70e1df3b3be..5a16f22a894 100644 --- a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidXmlHandler.kt +++ b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/AndroidXmlHandler.kt @@ -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.startDocument() diff --git a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/CliAndroidResourceManager.kt b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/CliAndroidResourceManager.kt index c6da0393573..9f6fed802e0 100644 --- a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/CliAndroidResourceManager.kt +++ b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/CliAndroidResourceManager.kt @@ -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() diff --git a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/CliAndroidUIXmlProcessor.kt b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/CliAndroidUIXmlProcessor.kt index c4b1a89da7d..2901256b0ab 100644 --- a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/CliAndroidUIXmlProcessor.kt +++ b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/CliAndroidUIXmlProcessor.kt @@ -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 = ArrayList() val handler = AndroidXmlHandler(resourceManager, { id, wClass -> ids.add(AndroidWidget(id, wClass)) }) diff --git a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/Context.kt b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/Context.kt index 502c17b7c07..242c49a8926 100644 --- a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/Context.kt +++ b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/Context.kt @@ -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() + private val children = ArrayList() public fun incIndent() { indentDepth++ diff --git a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/KotlinWriter.kt b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/KotlinWriter.kt index 096ddaad1f6..1e46e8d247a 100644 --- a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/KotlinWriter.kt +++ b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/KotlinWriter.kt @@ -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?, diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/android/AndroidXmlTest.java b/compiler/tests/org/jetbrains/jet/lang/resolve/android/AndroidXmlTest.java index bca280f22d2..4793b83c82f 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/android/AndroidXmlTest.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/android/AndroidXmlTest.java @@ -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 { diff --git a/idea/src/org/jetbrains/jet/plugin/android/IDEAndroidUIXmlProcessor.kt b/idea/src/org/jetbrains/jet/plugin/android/IDEAndroidUIXmlProcessor.kt index 86d8996888a..63dc8535cf9 100644 --- a/idea/src/org/jetbrains/jet/plugin/android/IDEAndroidUIXmlProcessor.kt +++ b/idea/src/org/jetbrains/jet/plugin/android/IDEAndroidUIXmlProcessor.kt @@ -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 = ArrayList() if (!ApplicationManager.getApplication()!!.isUnitTestMode()) (resourceManager as IDEAndroidResourceManager).resetAttributeCache() diff --git a/idea/src/org/jetbrains/jet/plugin/android/TestConst.java b/idea/src/org/jetbrains/jet/plugin/android/TestConst.java index 9612fa42c13..49c083e7327 100644 --- a/idea/src/org/jetbrains/jet/plugin/android/TestConst.java +++ b/idea/src/org/jetbrains/jet/plugin/android/TestConst.java @@ -19,5 +19,5 @@ package org.jetbrains.jet.plugin.android; import com.intellij.openapi.util.Key; public class TestConst { - public static final Key TESTDATA_PATH = Key.create("TEPITE"); + public static final Key TESTDATA_PATH = Key.create(""); }