Support annotations on type aliases declarations
This commit is contained in:
+2
-6
@@ -18,15 +18,12 @@ package org.jetbrains.kotlin.idea.decompiler.stubBuilder
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.stubs.StubElement
|
||||
import org.jetbrains.kotlin.descriptors.SourceElement
|
||||
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.flags.VISIBILITY
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinTypeAliasStubImpl
|
||||
import org.jetbrains.kotlin.serialization.Flags
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ProtoContainer
|
||||
import org.jetbrains.kotlin.serialization.deserialization.TypeTable
|
||||
|
||||
fun createTypeAliasStub(
|
||||
parent: StubElement<out PsiElement>,
|
||||
@@ -46,7 +43,7 @@ fun createTypeAliasStub(
|
||||
parent, classId.shortClassName.ref(), classId.asSingleFqName().ref(),
|
||||
isTopLevel = !classId.isNestedClass)
|
||||
|
||||
createModifierListStubForDeclaration(typeAlias, typeAliasProto.flags, arrayListOf(VISIBILITY), listOf())
|
||||
val modifierList = createModifierListStubForDeclaration(typeAlias, typeAliasProto.flags, arrayListOf(VISIBILITY), listOf())
|
||||
|
||||
val typeStubBuilder = TypeClsStubBuilder(context)
|
||||
val restConstraints = typeStubBuilder.createTypeParameterListStub(typeAlias, typeAliasProto.typeParameterList)
|
||||
@@ -55,8 +52,7 @@ fun createTypeAliasStub(
|
||||
}
|
||||
|
||||
if (Flags.HAS_ANNOTATIONS.get(typeAliasProto.flags)) {
|
||||
// TODO: support annotations
|
||||
// createAnnotationStubs(context.components.annotationLoader.loadClassAnnotations(thisAsProtoContainer), modifierList)
|
||||
createAnnotationStubs(typeAliasProto.annotationList.map { context.nameResolver.getClassId(it.id) }, modifierList)
|
||||
}
|
||||
|
||||
typeStubBuilder.createTypeReferenceStub(typeAlias, typeAliasProto.underlyingType)
|
||||
|
||||
@@ -8,5 +8,5 @@ public final class TypeAliases public constructor() {
|
||||
|
||||
public typealias B = (dependency.A) -> kotlin.Unit
|
||||
|
||||
private typealias Parametrized<E, F> = kotlin.collections.Map<E, F>
|
||||
@test.Ann private typealias Parametrized<E, F> = kotlin.collections.Map<E, F>
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ class Outer<E, F> {
|
||||
}
|
||||
}
|
||||
|
||||
annotation class Ann
|
||||
annotation class Ann(val value: String)
|
||||
class TypeAliases {
|
||||
|
||||
typealias B = (A) -> Unit
|
||||
@@ -17,7 +17,6 @@ class TypeAliases {
|
||||
b.invoke(a)
|
||||
}
|
||||
|
||||
// TODO: annotations are unsupported yet
|
||||
@Ann
|
||||
@Ann("OK")
|
||||
private typealias Parametrized<E, F> = Map<E, F>
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ class TypeAliases {
|
||||
b.invoke(a)
|
||||
}
|
||||
|
||||
// TODO: annotations are unsupported yet
|
||||
@Ann
|
||||
private typealias Parametrized<E, F> = Map<E, F>
|
||||
}
|
||||
|
||||
@@ -85,6 +85,13 @@ PsiJetFileStubImpl[package=test]
|
||||
REFERENCE_EXPRESSION:[referencedName=Unit]
|
||||
TYPEALIAS:[fqName=test.TypeAliases.Parametrized, isTopLevel=false, name=Parametrized]
|
||||
MODIFIER_LIST:[private]
|
||||
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=Ann]
|
||||
CONSTRUCTOR_CALLEE:
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=test]
|
||||
REFERENCE_EXPRESSION:[referencedName=Ann]
|
||||
TYPE_PARAMETER_LIST:
|
||||
TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=E]
|
||||
TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=F]
|
||||
|
||||
@@ -3052,6 +3052,12 @@ public class ResolveByStubTestGenerated extends AbstractResolveByStubTest {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/loadJava/compiledKotlin/typealias"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("Annotations.kt")
|
||||
public void testAnnotations() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/typealias/Annotations.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("Basic.kt")
|
||||
public void testBasic() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/typealias/Basic.kt");
|
||||
|
||||
Reference in New Issue
Block a user