From d5ffc7416dd06b117dda0667d82c6a19092ee289 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Thu, 18 Jun 2020 19:26:20 +0200 Subject: [PATCH] Clean-up and improve sam-with-receiver test with scripts --- .../AbstractSamWithReceiverScriptNewDefTest.kt | 14 +++++++++----- .../testData/script/samConversionSimple.kts | 6 +++++- .../testData/script/samConversionSimple.txt | 9 +++++++++ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptNewDefTest.kt b/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptNewDefTest.kt index 557290cd6ec..c2eea952d44 100644 --- a/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptNewDefTest.kt +++ b/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptNewDefTest.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.samWithReceiver import com.intellij.mock.MockProject +import org.jetbrains.kotlin.TestsCompilerError import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.scripting.compiler.plugin.impl.ScriptJvmCompilerFromEnvironment @@ -26,10 +27,7 @@ import org.jetbrains.kotlin.scripting.resolve.KtFileScriptSource import org.junit.Assert import java.io.File import kotlin.script.experimental.annotations.KotlinScript -import kotlin.script.experimental.api.ResultWithDiagnostics -import kotlin.script.experimental.api.ScriptCompilationConfiguration -import kotlin.script.experimental.api.compilerOptions -import kotlin.script.experimental.api.fileExtension +import kotlin.script.experimental.api.* import kotlin.script.experimental.host.toScriptSource import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration import kotlin.script.experimental.jvmhost.createJvmScriptDefinitionFromTemplate @@ -58,7 +56,13 @@ abstract class AbstractSamWithReceiverScriptNewDefTest : AbstractDiagnosticsTest super.analyzeAndCheck(testDataFile, files) for (file in scripts) { val res = scriptCompiler.compile(KtFileScriptSource(file.ktFile!!), ScriptForSamWithReceiversNewDefCompilationConfiguration) - val x = res + if (res is ResultWithDiagnostics.Failure && !file.name.contains("error", ignoreCase = true)) + throw TestsCompilerError( + RuntimeException( + res.reports.joinToString("\n") { it.exception?.toString() ?: it.message }, + res.reports.find { it.exception != null }?.exception + ) + ) } } } diff --git a/plugins/sam-with-receiver/sam-with-receiver-cli/testData/script/samConversionSimple.kts b/plugins/sam-with-receiver/sam-with-receiver-cli/testData/script/samConversionSimple.kts index b64b43f2c58..3f41451c051 100644 --- a/plugins/sam-with-receiver/sam-with-receiver-cli/testData/script/samConversionSimple.kts +++ b/plugins/sam-with-receiver/sam-with-receiver-cli/testData/script/samConversionSimple.kts @@ -19,10 +19,14 @@ public class Exec { void exec(Sam sam) { sam.run("a", "b") } } -// FILE: test.kts +// FILE: test_with_error.kts val e = Exec() e.exec { a, b -> System.out.println(a) } + +// FILE: test.kts +val e = Exec() + e.exec { b -> val a: String = this System.out.println(a) diff --git a/plugins/sam-with-receiver/sam-with-receiver-cli/testData/script/samConversionSimple.txt b/plugins/sam-with-receiver/sam-with-receiver-cli/testData/script/samConversionSimple.txt index 96f6aec890d..02761cd5ba9 100644 --- a/plugins/sam-with-receiver/sam-with-receiver-cli/testData/script/samConversionSimple.txt +++ b/plugins/sam-with-receiver/sam-with-receiver-cli/testData/script/samConversionSimple.txt @@ -30,3 +30,12 @@ public final class Test : kotlin.script.templates.standard.ScriptTemplateWithArg public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } + +public final class Test_with_error : kotlin.script.templates.standard.ScriptTemplateWithArgs { + public constructor Test_with_error(/*0*/ args: kotlin.Array) + public final override /*1*/ /*fake_override*/ val args: kotlin.Array + public final val e: Exec + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +}