[ULC] Fixed invalid constructor parameter list for UL script
This commit is contained in:
+7
-1
@@ -62,13 +62,19 @@ class KtUltraLightClassForScript(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun MutableList<KtLightMethod>.addScriptDefaultMethods() {
|
private fun MutableList<KtLightMethod>.addScriptDefaultMethods() {
|
||||||
|
|
||||||
|
val defaultConstructorDelegate = LightMethodBuilder(manager, language, name)
|
||||||
|
.setConstructor(true)
|
||||||
|
.addModifier(PsiModifier.PUBLIC)
|
||||||
|
|
||||||
val defaultConstructor = KtUltraLightMethodForSourceDeclaration(
|
val defaultConstructor = KtUltraLightMethodForSourceDeclaration(
|
||||||
delegate = LightMethodBuilder(manager, language, name).setConstructor(true).addModifier(PsiModifier.PUBLIC),
|
delegate = defaultConstructorDelegate,
|
||||||
declaration = script,
|
declaration = script,
|
||||||
support = support,
|
support = support,
|
||||||
containingClass = this@KtUltraLightClassForScript,
|
containingClass = this@KtUltraLightClassForScript,
|
||||||
methodIndex = METHOD_INDEX_FOR_DEFAULT_CTOR,
|
methodIndex = METHOD_INDEX_FOR_DEFAULT_CTOR,
|
||||||
)
|
)
|
||||||
|
defaultConstructorDelegate.addParameter(KtUltraLightScriptMainParameter(defaultConstructor))
|
||||||
add(defaultConstructor)
|
add(defaultConstructor)
|
||||||
|
|
||||||
val methodBuilder = LightMethodBuilder(manager, language, "main").apply {
|
val methodBuilder = LightMethodBuilder(manager, language, "main").apply {
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
public class FunsPropsAndFields /* FunsPropsAndFields*/ {
|
||||||
|
@kotlin.jvm.JvmField()
|
||||||
|
public final int testField;
|
||||||
|
|
||||||
|
private final int testPropVal;
|
||||||
|
|
||||||
|
private int testPropVar;
|
||||||
|
|
||||||
|
@null()
|
||||||
|
public FunsPropsAndFields(@null() java.lang.String[]);// .ctor(java.lang.String[])
|
||||||
|
|
||||||
|
@org.jetbrains.annotations.NotNull()
|
||||||
|
public final java.lang.String testFun(int);// testFun(int)
|
||||||
|
|
||||||
|
public final int getTestPropVal();// getTestPropVal()
|
||||||
|
|
||||||
|
public final int getTestPropVar();// getTestPropVar()
|
||||||
|
|
||||||
|
public final void setTestPropVar(int);// setTestPropVar(int)
|
||||||
|
|
||||||
|
public static final void main(@null() java.lang.String[]);// main(java.lang.String[])
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
public class HelloWorld /* HelloWorld*/ {
|
||||||
|
@null()
|
||||||
|
public HelloWorld(@null() java.lang.String[]);// .ctor(java.lang.String[])
|
||||||
|
|
||||||
|
public static final void main(@null() java.lang.String[]);// main(java.lang.String[])
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
public class InnerClasses /* InnerClasses*/ {
|
||||||
|
@null()
|
||||||
|
public InnerClasses(@null() java.lang.String[]);// .ctor(java.lang.String[])
|
||||||
|
|
||||||
|
public static final void main(@null() java.lang.String[]);// main(java.lang.String[])
|
||||||
|
|
||||||
|
|
||||||
|
class Bar ...
|
||||||
|
|
||||||
|
}
|
||||||
@@ -7,12 +7,16 @@ package org.jetbrains.kotlin.asJava.classes
|
|||||||
|
|
||||||
import com.intellij.testFramework.LightProjectDescriptor
|
import com.intellij.testFramework.LightProjectDescriptor
|
||||||
import junit.framework.TestCase
|
import junit.framework.TestCase
|
||||||
|
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
||||||
|
import org.jetbrains.kotlin.asJava.PsiClassRenderer.renderClass
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager
|
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager
|
||||||
import org.jetbrains.kotlin.idea.perf.UltraLightChecker
|
import org.jetbrains.kotlin.idea.perf.UltraLightChecker
|
||||||
import org.jetbrains.kotlin.idea.perf.UltraLightChecker.checkDescriptorsLeak
|
import org.jetbrains.kotlin.idea.perf.UltraLightChecker.checkDescriptorsLeak
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
|
import org.junit.Assert
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
abstract class AbstractUltraLightScriptLoadingTest : KotlinLightCodeInsightFixtureTestCase() {
|
abstract class AbstractUltraLightScriptLoadingTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||||
@@ -29,6 +33,17 @@ abstract class AbstractUltraLightScriptLoadingTest : KotlinLightCodeInsightFixtu
|
|||||||
|
|
||||||
ScriptConfigurationManager.updateScriptDependenciesSynchronously(file)
|
ScriptConfigurationManager.updateScriptDependenciesSynchronously(file)
|
||||||
|
|
||||||
|
val expectedTextFile = File(testDataPath.replaceFirst("\\.kts\$".toRegex(), ".java"))
|
||||||
|
if (expectedTextFile.exists()) {
|
||||||
|
val ultraLightScript = LightClassGenerationSupport.getInstance(script.project).createUltraLightClassForScript(script)
|
||||||
|
TestCase.assertTrue(ultraLightScript is KtUltraLightClassForScript)
|
||||||
|
ultraLightScript!!
|
||||||
|
val renderedResult = ultraLightScript.renderClass()
|
||||||
|
KotlinTestUtils.assertEqualsToFile(expectedTextFile, renderedResult)
|
||||||
|
checkDescriptorsLeak(ultraLightScript)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
val ultraLightClass = UltraLightChecker.checkScriptEquivalence(script)
|
val ultraLightClass = UltraLightChecker.checkScriptEquivalence(script)
|
||||||
checkDescriptorsLeak(ultraLightClass)
|
checkDescriptorsLeak(ultraLightClass)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user