Convert ScriptTest to Kotlin - phase 2 - convert

This commit is contained in:
Ilya Chernikov
2016-05-30 14:01:36 +02:00
parent 0699293fb7
commit bd70481bea
@@ -14,96 +14,88 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.kotlin.scripts; package org.jetbrains.kotlin.scripts
import com.intellij.openapi.Disposable; import com.intellij.openapi.util.Disposer
import com.intellij.openapi.util.Disposer; import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.cli.common.messages.*
import org.jetbrains.kotlin.builtins.DefaultBuiltIns; import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys; import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.cli.common.messages.*; import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles; import org.jetbrains.kotlin.codegen.CompilationException
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler; import org.jetbrains.kotlin.config.addKotlinSourceRoot
import org.jetbrains.kotlin.codegen.CompilationException; import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.script.KotlinScriptDefinition
import org.jetbrains.kotlin.config.ContentRootsKt; import org.jetbrains.kotlin.script.ScriptParameter
import org.jetbrains.kotlin.config.JVMConfigurationKeys; import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.script.KotlinScriptDefinition; import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.script.ScriptParameter; import org.jetbrains.kotlin.utils.PathUtil
import org.jetbrains.kotlin.test.ConfigurationKind; import org.junit.Assert
import org.jetbrains.kotlin.test.KotlinTestUtils; import org.junit.Test
import org.jetbrains.kotlin.test.TestJdkKind;
import org.jetbrains.kotlin.utils.KotlinPaths;
import org.jetbrains.kotlin.utils.PathUtil;
import org.junit.Assert;
import org.junit.Test;
import java.util.Collections; class ScriptTest {
import java.util.List;
public class ScriptTest {
@Test @Test
public void testScript() throws Exception { @Throws(Exception::class)
Class<?> aClass = compileScript("fib.kts", new TestScriptDefinition(".kts", numIntParam())); fun testScript() {
Assert.assertNotNull(aClass); val aClass = compileScript("fib.kts", TestScriptDefinition(".kts", numIntParam()))
aClass.getConstructor(int.class).newInstance(4); Assert.assertNotNull(aClass)
aClass!!.getConstructor(Integer.TYPE).newInstance(4)
} }
@Test @Test
public void testScriptWithPackage() throws Exception { @Throws(Exception::class)
Class<?> aClass = compileScript("fib.pkg.kts", new TestScriptDefinition(".kts", numIntParam())); fun testScriptWithPackage() {
Assert.assertNotNull(aClass); val aClass = compileScript("fib.pkg.kts", TestScriptDefinition(".kts", numIntParam()))
aClass.getConstructor(int.class).newInstance(4); Assert.assertNotNull(aClass)
aClass!!.getConstructor(Integer.TYPE).newInstance(4)
} }
@Test @Test
public void testScriptWithScriptDefinition() throws Exception { @Throws(Exception::class)
Class<?> aClass = compileScript("fib.fib.kt", new TestScriptDefinition(".fib.kt", numIntParam())); fun testScriptWithScriptDefinition() {
Assert.assertNotNull(aClass); val aClass = compileScript("fib.fib.kt", TestScriptDefinition(".fib.kt", numIntParam()))
aClass.getConstructor(int.class).newInstance(4); Assert.assertNotNull(aClass)
aClass!!.getConstructor(Integer.TYPE).newInstance(4)
} }
@Nullable private fun compileScript(
private static Class<?> compileScript( scriptPath: String,
@NotNull String scriptPath, scriptDefinition: KotlinScriptDefinition): Class<*>? {
@NotNull KotlinScriptDefinition scriptDefinition val paths = PathUtil.getKotlinPathsForDistDirectory()
) { val messageCollector = PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false)
KotlinPaths paths = PathUtil.getKotlinPathsForDistDirectory();
MessageCollector messageCollector = new PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false);
Disposable rootDisposable = Disposer.newDisposable(); val rootDisposable = Disposer.newDisposable()
try { try {
CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.JDK_ONLY, TestJdkKind.FULL_JDK); val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.JDK_ONLY, TestJdkKind.FULL_JDK)
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector); configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
ContentRootsKt.addKotlinSourceRoot(configuration, "compiler/testData/script/" + scriptPath); configuration.addKotlinSourceRoot("compiler/testData/script/" + scriptPath)
configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition); configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition)
KotlinCoreEnvironment environment = val environment = KotlinCoreEnvironment.createForProduction(rootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
KotlinCoreEnvironment.createForProduction(rootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES);
try { try {
return KotlinToJVMBytecodeCompiler.INSTANCE.compileScript(environment, paths); return KotlinToJVMBytecodeCompiler.compileScript(environment, paths)
} }
catch (CompilationException e) { catch (e: CompilationException) {
messageCollector.report(CompilerMessageSeverity.EXCEPTION, OutputMessageUtil.renderException(e), messageCollector.report(CompilerMessageSeverity.EXCEPTION, OutputMessageUtil.renderException(e),
MessageUtil.psiElementToMessageLocation(e.getElement())); MessageUtil.psiElementToMessageLocation(e.element))
return null; return null
} }
catch (Throwable t) { catch (t: Throwable) {
MessageCollectorUtil.reportException(messageCollector, t); MessageCollectorUtil.reportException(messageCollector, t)
return null; return null
} }
} }
finally { finally {
Disposer.dispose(rootDisposable); Disposer.dispose(rootDisposable)
} }
} }
@NotNull private fun numIntParam(): List<ScriptParameter> {
private static List<ScriptParameter> numIntParam() { return listOf(ScriptParameter(Name.identifier("num"), DefaultBuiltIns.Instance.intType))
return Collections.singletonList(new ScriptParameter(Name.identifier("num"), DefaultBuiltIns.getInstance().getIntType()));
} }
} }