From 5f69317f1e314b220225f14853c7214367bc0d20 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 24 Jan 2014 15:23:18 +0400 Subject: [PATCH] Generate constructor light methods with origin set to Kotlin class/object declaration --- .../jet/codegen/ImplementationBodyCodegen.java | 2 +- .../jet/asJava/KotlinLightMethodForDeclaration.kt | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index 5bd5e97e93e..7aa245f2c59 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -1114,7 +1114,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { assert constructorDescriptor != null; final JvmMethodSignature constructorSignature = typeMapper.mapSignature(constructorDescriptor); - functionCodegen.generateMethod(null, constructorSignature, constructorDescriptor, constructorContext, + functionCodegen.generateMethod(myClass, constructorSignature, constructorDescriptor, constructorContext, new FunctionGenerationStrategy.CodegenBased(state, constructorDescriptor) { @NotNull @Override diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinLightMethodForDeclaration.kt b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinLightMethodForDeclaration.kt index b58493c24e3..76279688256 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinLightMethodForDeclaration.kt +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinLightMethodForDeclaration.kt @@ -38,6 +38,8 @@ import org.jetbrains.jet.lang.psi.JetPropertyAccessor import org.jetbrains.jet.lang.psi.psiUtil.getParentByType import org.jetbrains.jet.lang.psi.JetProperty import com.intellij.psi.PsiTypeParameter +import org.jetbrains.jet.lang.psi.JetClassOrObject +import com.intellij.psi.impl.light.LightTypeParameterListBuilder public class KotlinLightMethodForDeclaration( manager: PsiManager, override val delegate: PsiMethod, override val origin: JetDeclaration, containingClass: PsiClass @@ -59,9 +61,14 @@ public class KotlinLightMethodForDeclaration( private val typeParamsList: CachedValue by Delegates.blockingLazy { val cacheManager = CachedValuesManager.getManager(delegate.getProject()) cacheManager.createCachedValue({ - val declaration = - if (origin is JetPropertyAccessor) origin.getParentByType(javaClass()) else origin - val list = LightClassUtil.buildLightTypeParameterList(this@KotlinLightMethodForDeclaration, origin) + val declaration = if (origin is JetPropertyAccessor) origin.getParentByType(javaClass()) else origin + + val list = if (origin is JetClassOrObject) { + LightTypeParameterListBuilder(getManager(), getLanguage()) + } + else { + LightClassUtil.buildLightTypeParameterList(this@KotlinLightMethodForDeclaration, origin) + } CachedValueProvider.Result.create(list, PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT) }, false) }