Fix minor bugs for UL methods and parameters representation
Remove INSTANCE field for local object declarations Remove private suspend functions create from UL Add correct extension function parameter name Add support for setparam annotation modifier
This commit is contained in:
@@ -13,7 +13,6 @@ import com.intellij.psi.impl.light.LightMethodBuilder
|
||||
import com.intellij.psi.util.CachedValue
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import com.intellij.psi.util.CachedValuesManager
|
||||
import org.jetbrains.kotlin.asJava.UltraLightClassModifierExtension
|
||||
import org.jetbrains.kotlin.asJava.builder.LightClassData
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
@@ -226,7 +225,7 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
|
||||
}
|
||||
}
|
||||
|
||||
if (isNamedObject()) {
|
||||
if (isNamedObject() && !this.classOrObject.isLocal) {
|
||||
result.add(
|
||||
KtUltraLightFieldForSourceDeclaration(
|
||||
this.classOrObject,
|
||||
|
||||
+21
-6
@@ -18,10 +18,8 @@ import org.jetbrains.kotlin.asJava.elements.convertToLightAnnotationMemberValue
|
||||
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotated
|
||||
import org.jetbrains.kotlin.extensions.DeclarationAttributeAltererExtension
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.lexer.KtTokens.EXTERNAL_KEYWORD
|
||||
import org.jetbrains.kotlin.lexer.KtTokens.REIFIED_KEYWORD
|
||||
import org.jetbrains.kotlin.lexer.KtTokens.*
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -29,7 +27,7 @@ import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier
|
||||
import org.jetbrains.kotlin.psi.psiUtil.hasSuspendModifier
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isObjectLiteral
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isPrivate
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isPublishedApi
|
||||
@@ -120,6 +118,11 @@ internal class UltraLightMembersCreator(
|
||||
ktFunction.hasExpectModifier()
|
||||
) return emptyList()
|
||||
|
||||
|
||||
if (ktFunction.modifierList?.hasSuspendModifier() == true && ktFunction.isPrivate()) {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
val basicMethod = asJavaMethod(ktFunction, forceStatic, forcePrivate)
|
||||
|
||||
val result = mutableListOf(basicMethod)
|
||||
@@ -465,9 +468,21 @@ internal class UltraLightMembersCreator(
|
||||
val setterParameter = ktSetter?.parameter
|
||||
setterPrototype.addParameter(
|
||||
if (setterParameter != null)
|
||||
KtUltraLightParameterForSource(propertyName, setterParameter, support, setterWrapper, declaration)
|
||||
KtUltraLightParameterForSource(
|
||||
name = setterParameter.name ?: propertyName,
|
||||
kotlinOrigin = setterParameter,
|
||||
support = support,
|
||||
method = setterWrapper,
|
||||
containingDeclaration = declaration
|
||||
)
|
||||
else
|
||||
KtUltraLightParameterForSetterParameter(propertyName, declaration, support, setterWrapper, declaration)
|
||||
KtUltraLightParameterForSetterParameter(
|
||||
name = propertyName,
|
||||
property = declaration,
|
||||
support = support,
|
||||
method = setterWrapper,
|
||||
containingDeclaration = declaration
|
||||
)
|
||||
)
|
||||
result.add(setterWrapper)
|
||||
}
|
||||
|
||||
+23
-3
@@ -13,11 +13,17 @@ import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.asJava.elements.*
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.builtins.isSuspendFunctionType
|
||||
import org.jetbrains.kotlin.codegen.AsmUtil
|
||||
import org.jetbrains.kotlin.codegen.coroutines.SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.KtCallableDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtFunction
|
||||
import org.jetbrains.kotlin.psi.KtParameter
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.codegen.AsmUtil.LABELED_THIS_PARAMETER
|
||||
import org.jetbrains.kotlin.codegen.AsmUtil.RECEIVER_PARAMETER_NAME
|
||||
|
||||
internal class KtUltraLightSuspendContinuationParameter(
|
||||
private val ktFunction: KtFunction,
|
||||
@@ -182,6 +188,13 @@ internal class KtUltraLightParameterForSetterParameter(
|
||||
|
||||
override fun tryGetKotlinType(): KotlinType? = property.getKotlinType()
|
||||
|
||||
override val givenAnnotations: List<KtLightAbstractAnnotation>?
|
||||
get() = (property.resolve() as? PropertyDescriptor)
|
||||
?.setter
|
||||
?.valueParameters
|
||||
?.firstOrNull()
|
||||
?.obtainLightAnnotations(support, this)
|
||||
|
||||
override fun isVarArgs(): Boolean = false
|
||||
}
|
||||
|
||||
@@ -189,7 +202,14 @@ internal class KtUltraLightReceiverParameter(
|
||||
containingDeclaration: KtCallableDeclaration,
|
||||
support: KtUltraLightSupport,
|
||||
method: KtUltraLightMethod
|
||||
) : KtAbstractUltraLightParameterForDeclaration("\$self", null, support, method, containingDeclaration) {
|
||||
) : KtAbstractUltraLightParameterForDeclaration(
|
||||
/** @see org.jetbrains.kotlin.codegen.AsmUtil.getNameForReceiverParameter */
|
||||
name = AsmUtil.getLabeledThisName(method.name, LABELED_THIS_PARAMETER, RECEIVER_PARAMETER_NAME),
|
||||
kotlinOrigin = null,
|
||||
support = support,
|
||||
method = method,
|
||||
containingDeclaration = containingDeclaration
|
||||
) {
|
||||
|
||||
override fun isVarArgs(): Boolean = false
|
||||
|
||||
|
||||
Reference in New Issue
Block a user