Support annotations on type parameters in stub builder
This commit is contained in:
+9
-1
@@ -240,7 +240,15 @@ class TypeClsStubBuilder(private val c: ClsStubBuilderContext) {
|
||||
if (typeParameterProto.reified) {
|
||||
modifiers.add(KtTokens.REIFIED_KEYWORD)
|
||||
}
|
||||
createModifierListStub(typeParameterStub, modifiers)
|
||||
|
||||
val modifierList = createModifierListStub(typeParameterStub, modifiers)
|
||||
|
||||
val annotations = c.components.annotationLoader.loadTypeParameterAnnotations(typeParameterProto, c.nameResolver)
|
||||
if (annotations.isNotEmpty()) {
|
||||
createAnnotationStubs(
|
||||
annotations,
|
||||
modifierList ?: createEmptyModifierListStub(typeParameterStub))
|
||||
}
|
||||
}
|
||||
|
||||
private fun Type.isDefaultUpperBound(): Boolean {
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
protected @a fun f() {
|
||||
}
|
||||
|
||||
inline fun <reified @a T, @a F> inlineFun() { }
|
||||
|
||||
private fun annotationWithVararg(@a vararg i: Int) {}
|
||||
|
||||
@b(E.E1) private val c: Int = 1
|
||||
@@ -29,7 +31,7 @@
|
||||
|
||||
@Target(AnnotationTarget.PROPERTY, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FUNCTION,
|
||||
AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER,
|
||||
AnnotationTarget.TYPE, AnnotationTarget.CLASS)
|
||||
AnnotationTarget.TYPE, AnnotationTarget.CLASS, AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class a
|
||||
|
||||
@Target(AnnotationTarget.PROPERTY, AnnotationTarget.FUNCTION, AnnotationTarget.CLASS,
|
||||
|
||||
@@ -151,6 +151,29 @@ PsiJetFileStubImpl[package=]
|
||||
USER_TYPE:[isAbsoluteInRootPackage=false]
|
||||
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION:[referencedName=Unit]
|
||||
FUN:[fqName=Annotations.inlineFun, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=true, isExtension=false, isTopLevel=false, name=inlineFun]
|
||||
MODIFIER_LIST:[public final inline]
|
||||
TYPE_PARAMETER_LIST:
|
||||
TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=T]
|
||||
MODIFIER_LIST:[reified]
|
||||
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=a]
|
||||
CONSTRUCTOR_CALLEE:
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:[isAbsoluteInRootPackage=false]
|
||||
REFERENCE_EXPRESSION:[referencedName=a]
|
||||
TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=F]
|
||||
MODIFIER_LIST:[]
|
||||
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=a]
|
||||
CONSTRUCTOR_CALLEE:
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:[isAbsoluteInRootPackage=false]
|
||||
REFERENCE_EXPRESSION:[referencedName=a]
|
||||
VALUE_PARAMETER_LIST:
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:[isAbsoluteInRootPackage=false]
|
||||
USER_TYPE:[isAbsoluteInRootPackage=false]
|
||||
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION:[referencedName=Unit]
|
||||
FUN:[fqName=Annotations.types, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, name=types]
|
||||
MODIFIER_LIST:[public final]
|
||||
VALUE_PARAMETER_LIST:
|
||||
|
||||
Reference in New Issue
Block a user