From ec6f9c9fc58ceb9eb2de30579cd483748c272e45 Mon Sep 17 00:00:00 2001 From: Mikhail Mutcianko Date: Thu, 17 Jul 2014 14:23:41 +0400 Subject: [PATCH] add compiler key for providing android resources path --- .../kotlin/cli/common/arguments/K2JVMCompilerArguments.java | 4 ++++ compiler/cli/cli.iml | 3 ++- .../org/jetbrains/kotlin/cli/jvm/JVMConfigurationKeys.java | 3 +++ .../cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java | 4 ++++ .../kotlin/cli/jvm/compiler/JetCoreEnvironment.java | 5 +++++ .../jet/lang/resolve/android/CliAndroidUIXmlPathProvider.kt | 5 +++-- 6 files changed, 21 insertions(+), 3 deletions(-) diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.java b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.java index 27b1e73d9eb..5f74aa80938 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.java +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.java @@ -66,6 +66,10 @@ public class K2JVMCompilerArguments extends CommonCompilerArguments { @Argument(value = "Xno-optimize", description = "Disable optimizations") public boolean noOptimize; + @Argument(value = "androidRes", description = "Android resources path") + @ValueDescription("") + public String androidRes; + @Override @NotNull public String executableScriptFileName() { diff --git a/compiler/cli/cli.iml b/compiler/cli/cli.iml index 071bbf8f03a..4eda81783e8 100644 --- a/compiler/cli/cli.iml +++ b/compiler/cli/cli.iml @@ -19,5 +19,6 @@ + - \ No newline at end of file + diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/JVMConfigurationKeys.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/JVMConfigurationKeys.java index 30a4c1ca94d..5c9bdc0ccc5 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/JVMConfigurationKeys.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/JVMConfigurationKeys.java @@ -51,4 +51,7 @@ public class JVMConfigurationKeys { public static final CompilerConfigurationKey> MODULE_IDS = CompilerConfigurationKey.create("module id strings"); + + public static final CompilerConfigurationKey ANDROID_RES_PATH = + CompilerConfigurationKey.create("android resources search path"); } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java index 9cb6863f094..a9a299207bf 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java @@ -90,6 +90,10 @@ public class K2JVMCompiler extends CLICompiler { return INTERNAL_ERROR; } + if (arguments.androidRes != null) { + configuration.put(JVMConfigurationKeys.ANDROID_RES_PATH, arguments.androidRes); + } + if (arguments.script) { if (arguments.freeArgs.isEmpty()) { messageCollector.report(CompilerMessageSeverity.ERROR, "Specify script source path to evaluate", diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/JetCoreEnvironment.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/JetCoreEnvironment.java index ab6872fb2bb..4488cf07eb4 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/JetCoreEnvironment.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/JetCoreEnvironment.java @@ -56,6 +56,8 @@ import kotlin.Function1; import kotlin.Unit; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.TestOnly; +import org.jetbrains.jet.lang.resolve.android.AndroidUIXmlPathProvider; +import org.jetbrains.jet.lang.resolve.android.CliAndroidUIXmlPathProvider; import org.jetbrains.kotlin.asJava.JavaElementFinder; import org.jetbrains.kotlin.asJava.KotlinLightClassForPackage; import org.jetbrains.kotlin.asJava.LightClassGenerationSupport; @@ -293,6 +295,9 @@ public class JetCoreEnvironment { configuration.getList(CommonConfigurationKeys.SCRIPT_DEFINITIONS_KEY) ); + String s = configuration.get(JVMConfigurationKeys.ANDROID_RES_PATH); + project.registerService(AndroidUIXmlPathProvider.class, new CliAndroidUIXmlPathProvider(s)); + project.registerService(VirtualFileFinderFactory.class, new CliVirtualFileFinderFactory(classPath)); } diff --git a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/CliAndroidUIXmlPathProvider.kt b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/CliAndroidUIXmlPathProvider.kt index 37001c1c786..9d6ad36e762 100644 --- a/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/CliAndroidUIXmlPathProvider.kt +++ b/compiler/frontend.android/src/org/jetbrains/jet/lang/resolve/android/CliAndroidUIXmlPathProvider.kt @@ -1,11 +1,12 @@ package org.jetbrains.jet.lang.resolve.android import java.io.File +import java.util.ArrayList -class CliAndroidUIXmlPathProvider: AndroidUIXmlPathProvider { +class CliAndroidUIXmlPathProvider(val searchPath: String?): AndroidUIXmlPathProvider { override fun getPaths(): MutableCollection { - throw UnsupportedOperationException() + return if (searchPath != null) arrayListOf(File(searchPath + "/layout/")) else ArrayList() } }