diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ScriptCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ScriptCodegen.java index 8c4fd8c5c6e..4ff153a469d 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ScriptCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ScriptCodegen.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. + * Copyright 2010-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,18 +17,13 @@ package org.jetbrains.kotlin.codegen; import kotlin.Pair; -import kotlin.collections.CollectionsKt; -import kotlin.Unit; import kotlin.jvm.functions.Function0; -import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.codegen.context.CodegenContext; import org.jetbrains.kotlin.codegen.context.MethodContext; import org.jetbrains.kotlin.codegen.context.ScriptContext; -import org.jetbrains.kotlin.codegen.serialization.JvmSerializerExtension; import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.descriptors.*; -import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.resolve.BindingContext; @@ -36,19 +31,14 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt; import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin; import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKt; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature; -import org.jetbrains.kotlin.serialization.DescriptorSerializer; -import org.jetbrains.kotlin.serialization.ProtoBuf; import org.jetbrains.kotlin.types.KotlinType; -import org.jetbrains.org.objectweb.asm.AnnotationVisitor; import org.jetbrains.org.objectweb.asm.MethodVisitor; import org.jetbrains.org.objectweb.asm.Type; import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter; -import java.util.ArrayList; import java.util.Collections; import java.util.List; -import static org.jetbrains.kotlin.codegen.AsmUtil.writeAnnotationData; import static org.jetbrains.kotlin.resolve.jvm.AsmTypes.OBJECT_TYPE; import static org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin.NO_ORIGIN; import static org.jetbrains.org.objectweb.asm.Opcodes.*; @@ -110,7 +100,7 @@ public class ScriptCodegen extends MemberCodegen { @Override protected void generateBody() { genMembers(); - genFieldsForParameters(scriptDescriptor, v); + genFieldsForParameters(v); genConstructor(scriptDescriptor, v, context.intoFunction(scriptDescriptor.getUnsubstitutedPrimaryConstructor())); } @@ -199,14 +189,6 @@ public class ScriptCodegen extends MemberCodegen { frameMap.enter(importedScript, OBJECT_TYPE); } - Type[] argTypes = jvmSignature.getAsmMethod().getArgumentTypes(); - - List parametersForProperties = getScriptParametersToUseAsProperties(scriptDescriptor); - for (int i = 0; i < parametersForProperties.size(); i++) { - ValueParameterDescriptor parameter = parametersForProperties.get(i); - frameMap.enter(parameter, argTypes[i]); - } - int offset = 1; for (ScriptDescriptor earlierScript : context.getEarlierScripts()) { @@ -217,14 +199,6 @@ public class ScriptCodegen extends MemberCodegen { iv.putfield(classType.getInternalName(), context.getScriptFieldName(earlierScript), earlierClassType.getDescriptor()); } - for (ValueParameterDescriptor parameter : parametersForProperties) { - Type parameterType = typeMapper.mapType(parameter.getType()); - iv.load(0, classType); - iv.load(offset, parameterType); - offset += parameterType.getSize(); - iv.putfield(classType.getInternalName(), parameter.getName().getIdentifier(), parameterType.getDescriptor()); - } - final ExpressionCodegen codegen = new ExpressionCodegen(mv, frameMap, Type.VOID_TYPE, methodContext, state, this); generateInitializers(new Function0() { @@ -241,18 +215,12 @@ public class ScriptCodegen extends MemberCodegen { mv.visitEnd(); } - private void genFieldsForParameters(@NotNull ScriptDescriptor script, @NotNull ClassBuilder classBuilder) { + private void genFieldsForParameters(@NotNull ClassBuilder classBuilder) { for (ScriptDescriptor earlierScript : context.getEarlierScripts()) { Type earlierClassName = typeMapper.mapType(earlierScript); int access = ACC_PUBLIC | ACC_FINAL; classBuilder.newField(NO_ORIGIN, access, context.getScriptFieldName(earlierScript), earlierClassName.getDescriptor(), null, null); } - - for (ValueParameterDescriptor parameter : getScriptParametersToUseAsProperties(script)) { - Type parameterType = typeMapper.mapType(parameter); - int access = ACC_PUBLIC | ACC_FINAL; - classBuilder.newField(JvmDeclarationOriginKt.OtherOrigin(parameter), access, parameter.getName().getIdentifier(), parameterType.getDescriptor(), null, null); - } } private void genMembers() { @@ -265,22 +233,4 @@ public class ScriptCodegen extends MemberCodegen { } } } - - @NotNull - private static List getScriptParametersToUseAsProperties(@NotNull ScriptDescriptor scriptDescriptor) { - List parameters = scriptDescriptor.getUnsubstitutedPrimaryConstructor().getValueParameters(); - final List> superclassParamsMap = scriptDescriptor.getScriptParametersToPassToSuperclass(); - - return CollectionsKt.filter(parameters, new Function1() { - @Override - public Boolean invoke(ValueParameterDescriptor descriptor) { - for (Pair superclassParam : superclassParamsMap) { - if (descriptor.getName().equals(superclassParam.getFirst())) { - return false; - } - } - return true; - } - }); - } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptClassMemberScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptClassMemberScope.kt index c3d02460ea2..a9d68b69d1b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptClassMemberScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptClassMemberScope.kt @@ -19,16 +19,11 @@ package org.jetbrains.kotlin.resolve.lazy.descriptors import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.impl.ClassConstructorDescriptorImpl -import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl -import org.jetbrains.kotlin.incremental.components.LookupLocation -import org.jetbrains.kotlin.incremental.components.NoLookupLocation -import org.jetbrains.kotlin.incremental.record import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.lazy.ResolveSession import org.jetbrains.kotlin.resolve.lazy.declarations.ClassMemberDeclarationProvider -import org.jetbrains.kotlin.utils.toReadOnlyList class LazyScriptClassMemberScope( resolveSession: ResolveSession, @@ -65,52 +60,6 @@ class LazyScriptClassMemberScope( } } - override fun computeExtraDescriptors(location: LookupLocation): Collection { - return (super.computeExtraDescriptors(location) - + getPropertiesForScriptParameters()).toReadOnlyList() - } - - private fun getPropertiesForScriptParameters() = getPrimaryConstructor()!!.valueParameters.flatMap { - getContributedVariables(it.name, NoLookupLocation.FOR_SCRIPT) - } - override fun createPropertiesFromPrimaryConstructorParameters(name: Name, result: MutableSet) { - val primaryConstructor = getPrimaryConstructor()!! - val parametersToPassToSuperclass = scriptDescriptor.scriptParametersToPassToSuperclass.map { it.first } - for (valueParameterDescriptor in primaryConstructor.valueParameters) { - if (name == valueParameterDescriptor.name && name !in parametersToPassToSuperclass) { - result.add(createPropertyFromScriptParameter(scriptDescriptor, valueParameterDescriptor)) - } - } - } - - private fun createPropertyFromScriptParameter( - scriptDescriptor: ScriptDescriptor, - parameter: ValueParameterDescriptor - ): PropertyDescriptor { - val propertyDescriptor = PropertyDescriptorImpl.create( - scriptDescriptor, - Annotations.EMPTY, - Modality.FINAL, - Visibilities.PUBLIC, - false, - parameter.name, - CallableMemberDescriptor.Kind.DECLARATION, - SourceElement.NO_SOURCE, - /* lateInit = */ false, - /* isConst = */ false - ) - propertyDescriptor.setType( - parameter.type, - listOf(), - scriptDescriptor.thisAsReceiverParameter, - null as ReceiverParameterDescriptor? - ) - propertyDescriptor.initialize(null, null) - return propertyDescriptor - } - - override fun recordLookup(name: Name, from: LookupLocation) { - c.lookupTracker.record(from, thisDescriptor, name) } } diff --git a/compiler/testData/script/smoke_exception.kts b/compiler/testData/script/smoke_exception.kts new file mode 100644 index 00000000000..85ff1c42c76 --- /dev/null +++ b/compiler/testData/script/smoke_exception.kts @@ -0,0 +1,11 @@ +@file:DependsOn("@{runtime}") + +fun main() { + error("my error") +} + +fun a() { + main() +} + +a() \ No newline at end of file diff --git a/compiler/tests-common/org/jetbrains/kotlin/scripts/TestScriptDefinitions.kt b/compiler/tests-common/org/jetbrains/kotlin/scripts/TestScriptDefinitions.kt index e9421e6f80a..ce0aa4ade97 100644 --- a/compiler/tests-common/org/jetbrains/kotlin/scripts/TestScriptDefinitions.kt +++ b/compiler/tests-common/org/jetbrains/kotlin/scripts/TestScriptDefinitions.kt @@ -21,12 +21,9 @@ import org.jetbrains.kotlin.descriptors.ScriptDescriptor import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtScript import org.jetbrains.kotlin.script.* -import org.jetbrains.kotlin.types.KotlinType import java.io.File import java.net.URL import java.net.URLClassLoader -import java.util.concurrent.Future -import kotlin.reflect.KClass abstract class BaseScriptDefinition (val extension: String, val cp: List? = null) : KotlinScriptDefinition { override val name = "Test Kotlin Script" @@ -38,7 +35,7 @@ abstract class BaseScriptDefinition (val extension: String, val cp: List? } } -open class SimpleParamsWithClasspathTestScriptDefinition(extension: String, val parameters: List, classpath: List? = null, val extraDependencies: KotlinScriptExternalDependencies? = null) +open class SimpleParamsWithClasspathTestScriptDefinition(extension: String, val parameters: List, classpath: List? = null) : BaseScriptDefinition(extension, classpath) { override fun getScriptParameters(scriptDescriptor: ScriptDescriptor) = parameters @@ -46,43 +43,6 @@ open class SimpleParamsWithClasspathTestScriptDefinition(extension: String, val open class SimpleParamsTestScriptDefinition(extension: String, parameters: List) : SimpleParamsWithClasspathTestScriptDefinition(extension, parameters) -class ReflectedParamClassTestScriptDefinition(extension: String, val paramName: String, val parameter: KClass, classpath: List? = null) - : BaseScriptDefinition(extension, classpath) -{ - override fun getScriptParameters(scriptDescriptor: ScriptDescriptor) = - listOf(makeReflectedClassScriptParameter(scriptDescriptor, Name.identifier(paramName), parameter)) -} - -open class ReflectedSuperclassTestScriptDefinition(extension: String, parameters: List, val superclass: KClass, classpath: List? = null) - : SimpleParamsWithClasspathTestScriptDefinition(extension, parameters, classpath) -{ - override fun getScriptSupertypes(scriptDescriptor: ScriptDescriptor): List = - listOf(getKotlinType(scriptDescriptor, superclass)) -} - -class ReflectedSuperclassWithParamsTestScriptDefinition(extension: String, - parameters: List, - superclass: KClass, - val superclassParameters: List, - classpath: List? = null) - : ReflectedSuperclassTestScriptDefinition(extension, parameters, superclass, classpath) -{ - override fun getScriptParametersToPassToSuperclass(scriptDescriptor: ScriptDescriptor): List = - superclassParameters.map { it.name } -} - -class StandardWithClasspathScriptDefinition(extension: String, classpath: List? = null) - : BaseScriptDefinition(extension, classpath) -{ - override fun getScriptParameters(scriptDescriptor: ScriptDescriptor) = - StandardScriptDefinition.getScriptParameters(scriptDescriptor) -} - -class SimpleScriptExtraDependencies( - override val classpath: Iterable, - override val imports: List = emptyList() -) : KotlinScriptExternalDependencies - fun classpathFromProperty(): List = System.getProperty("java.class.path")?.let { it.split(String.format("\\%s", File.pathSeparatorChar).toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() diff --git a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest.kt b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest.kt index f681fe44717..8d4ffac3400 100644 --- a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. + * Copyright 2010-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,8 +17,6 @@ package org.jetbrains.kotlin.scripts import com.intellij.openapi.util.Disposer -import junit.framework.TestCase -import org.jetbrains.kotlin.builtins.DefaultBuiltIns import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.messages.* import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles @@ -27,9 +25,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler import org.jetbrains.kotlin.codegen.CompilationException import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.config.addKotlinSourceRoot -import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.ScriptParameter import org.jetbrains.kotlin.script.StandardScriptDefinition import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils @@ -39,17 +35,9 @@ import org.jetbrains.kotlin.utils.PathUtil import org.junit.Assert import org.junit.Test import java.io.File -import java.lang.reflect.InvocationTargetException import java.net.URLClassLoader class ScriptTest : KtUsefulTestCase() { - @Test - fun testScriptWithParam() { - val aClass = compileScript("fib.kts", SimpleParamsTestScriptDefinition(".kts", numIntParam())) - Assert.assertNotNull(aClass) - aClass!!.getConstructor(Integer.TYPE).newInstance(4) - } - @Test fun testStandardScriptWithParams() { val aClass = compileScript("fib_std.kts", StandardScriptDefinition) @@ -74,108 +62,13 @@ class ScriptTest : KtUsefulTestCase() { Assert.assertNotNull(aClass) val anObj = KotlinToJVMBytecodeCompiler.tryConstructClassPub(aClass!!, emptyList()) Assert.assertNotNull(anObj) - val savedClassLoader = URLClassLoader(arrayOf(tmpdir.toURI().toURL())) + val savedClassLoader = URLClassLoader(arrayOf(tmpdir.toURI().toURL()), aClass.classLoader) val aClassSaved = savedClassLoader.loadClass(aClass.name) Assert.assertNotNull(aClassSaved) val anObjSaved = KotlinToJVMBytecodeCompiler.tryConstructClassPub(aClassSaved!!, emptyList()) Assert.assertNotNull(anObjSaved) } - @Test - fun testScriptWithParamConversion() { - val aClass = compileScript("fib.kts", SimpleParamsTestScriptDefinition(".kts", numIntParam())) - Assert.assertNotNull(aClass) - val anObj = KotlinToJVMBytecodeCompiler.tryConstructClassPub(aClass!!, listOf("4")) - Assert.assertNotNull(anObj) - } - - @Test - fun testScriptWithPackage() { - val aClass = compileScript("fib.pkg.kts", SimpleParamsTestScriptDefinition(".kts", numIntParam())) - Assert.assertNotNull(aClass) - aClass!!.getConstructor(Integer.TYPE).newInstance(4) - } - - @Test - fun testScriptWithScriptDefinition() { - val aClass = compileScript("fib.kts", SimpleParamsTestScriptDefinition(".kts", numIntParam())) - Assert.assertNotNull(aClass) - aClass!!.getConstructor(Integer.TYPE).newInstance(4) - } - - @Test - fun testScriptWithClassParameter() { - val aClass = compileScript("fib_cp.kts", ReflectedParamClassTestScriptDefinition(".kts", "param", TestParamClass::class), runIsolated = false) - Assert.assertNotNull(aClass) - aClass!!.getConstructor(TestParamClass::class.java).newInstance(TestParamClass(4)) - } - - @Test - fun testScriptWithBaseClass() { - val aClass = compileScript("fib_dsl.kts", ReflectedSuperclassTestScriptDefinition(".kts", numIntParam(), TestDSLClass::class), runIsolated = false) - Assert.assertNotNull(aClass) - aClass!!.getConstructor(Integer.TYPE).newInstance(4) - } - - @Test - fun testScriptWithBaseClassWithParam() { - val aClass = compileScript("fib_dsl.kts", ReflectedSuperclassWithParamsTestScriptDefinition(".kts", numIntParam() + numIntParam("passthrough"), TestDSLClassWithParam::class, numIntParam("passthrough")), runIsolated = false) - Assert.assertNotNull(aClass) - aClass!!.getConstructor(Integer.TYPE, Integer.TYPE).newInstance(4, 1) - } - - @Test - fun testScriptWithInterface() { - val aClass = compileScript("fib_dsl.kts", ReflectedSuperclassTestScriptDefinition(".kts", numIntParam(), TestDSLInterface::class), runIsolated = false) - Assert.assertNotNull(aClass) - aClass!!.getConstructor(Integer.TYPE).newInstance(4) - } - - @Test - fun testScriptWithClasspath() { - val aClass1 = compileScript("fib_ext.kts", SimpleParamsWithClasspathTestScriptDefinition(".kts", numIntParam(), classpath = emptyList()), runIsolated = true, suppressOutput = true) - Assert.assertNull(aClass1) - - val cp = classpathFromClassloader(ScriptTest::class.java.classLoader).filter { it.name.contains("kotlin-runtime") || it.name.contains("junit") } - Assert.assertFalse(cp.isEmpty()) - - val aClass2 = compileScript("fib_ext.kts", SimpleParamsWithClasspathTestScriptDefinition(".kts", numIntParam(), classpath = cp), runIsolated = true) - Assert.assertNotNull(aClass2) - } - - @Test - fun testScriptWithExtraImports() { - val aClass1 = compileScript("fib_ext.kts", SimpleParamsWithClasspathTestScriptDefinition(".kts", numIntParam(), classpath = emptyList()), runIsolated = true, suppressOutput = true) - Assert.assertNull(aClass1) - - val cp = classpathFromClassloader(ScriptTest::class.java.classLoader).filter { it.name.contains("kotlin-runtime") || it.name.contains("junit") } - Assert.assertFalse(cp.isEmpty()) - - val aClass2 = compileScript("fib_ext.kts", SimpleParamsWithClasspathTestScriptDefinition(".kts", numIntParam(), classpath = cp, extraDependencies = SimpleScriptExtraDependencies(cp)), runIsolated = true) - Assert.assertNotNull(aClass2) - } - - @Test - fun testSmokeScriptException() { - val aClass = compileSmokeTestScript( - "scriptException/script.kts", - StandardWithClasspathScriptDefinition( - ".kts", - listOf("dependencies/bootstrap-compiler/Kotlin/kotlinc/lib/kotlin-runtime.jar", - "dependencies/bootstrap-compiler/Kotlin/kotlinc/lib/kotlin-reflect.jar") - .map { File(it) })) - Assert.assertNotNull(aClass) - var exceptionThrown = false - try { - KotlinToJVMBytecodeCompiler.tryConstructClassPub(aClass!!, emptyList()) - } - catch (e: InvocationTargetException) { - Assert.assertTrue(e.cause is IllegalStateException) - exceptionThrown = true - } - Assert.assertTrue(exceptionThrown) - } - private fun compileScript( scriptPath: String, scriptDefinition: KotlinScriptDefinition, @@ -184,14 +77,6 @@ class ScriptTest : KtUsefulTestCase() { saveClassesDir: File? = null): Class<*>? = compileScriptImpl("compiler/testData/script/" + scriptPath, scriptDefinition, runIsolated, suppressOutput, saveClassesDir) - private fun compileSmokeTestScript( - scriptPath: String, - scriptDefinition: KotlinScriptDefinition, - runIsolated: Boolean = true, - suppressOutput: Boolean = false, - saveClassesDir: File? = null): Class<*>? = - compileScriptImpl("compiler/testData/integration/smoke/" + scriptPath, scriptDefinition, runIsolated, suppressOutput, saveClassesDir) - private fun compileScriptImpl( scriptPath: String, scriptDefinition: KotlinScriptDefinition, @@ -235,10 +120,6 @@ class ScriptTest : KtUsefulTestCase() { Disposer.dispose(rootDisposable) } } - - private fun numIntParam(name: String = "num"): List { - return listOf(ScriptParameter(Name.identifier(name), DefaultBuiltIns.Instance.intType)) - } } class TestParamClass(val memberNum: Int) \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest2.kt b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest2.kt index a8153106a16..78ad6f21fd8 100644 --- a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest2.kt +++ b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest2.kt @@ -34,6 +34,7 @@ import org.junit.Assert import org.junit.Test import java.io.File import java.lang.Exception +import java.lang.reflect.InvocationTargetException import java.net.URLClassLoader import java.util.concurrent.Future import kotlin.reflect.KClass @@ -134,6 +135,43 @@ class ScriptTest2 { aClass!!.getConstructor(Array::class.java).newInstance(arrayOf("4", "other")) } + @Test + fun testScriptWithPackage() { + val aClass = compileScript("fib.pkg.kts", ScriptWithIntParam::class) + Assert.assertNotNull(aClass) + aClass!!.getConstructor(Integer.TYPE).newInstance(4) + } + + @Test + fun testScriptWithScriptDefinition() { + val aClass = compileScript("fib.kts", ScriptWithIntParam::class) + Assert.assertNotNull(aClass) + aClass!!.getConstructor(Integer.TYPE).newInstance(4) + } + + @Test + fun testScriptWithParamConversion() { + val aClass = compileScript("fib.kts", ScriptWithIntParam::class) + Assert.assertNotNull(aClass) + val anObj = KotlinToJVMBytecodeCompiler.tryConstructClassPub(aClass!!, listOf("4")) + Assert.assertNotNull(anObj) + } + + @Test + fun testSmokeScriptException() { + val aClass = compileScript("smoke_exception.kts", ScriptWithArrayParam::class) + Assert.assertNotNull(aClass) + var exceptionThrown = false + try { + KotlinToJVMBytecodeCompiler.tryConstructClassPub(aClass!!, emptyList()) + } + catch (e: InvocationTargetException) { + Assert.assertTrue(e.cause is IllegalStateException) + exceptionThrown = true + } + Assert.assertTrue(exceptionThrown) + } + private fun compileScript( scriptPath: String, scriptBase: KClass,