[cls] write flexible type information to cls
^KTIJ-25172 this information would be used to create resolved FirElements from stubs, so no ProtoBuf would be kept in memory
This commit is contained in:
+9
@@ -0,0 +1,9 @@
|
||||
package test
|
||||
|
||||
public class AnnotatedFlexibleTypes(val javaClass: d.JavaClass) {
|
||||
fun foo() = javaClass.foo()
|
||||
|
||||
val bar = javaClass.bar()
|
||||
|
||||
val baz = javaClass.baz()
|
||||
}
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
PsiJetFileStubImpl[package=test]
|
||||
KotlinStub$PACKAGE_DIRECTIVE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$IMPORT_LIST
|
||||
KotlinStub$CLASS[classId=test/AnnotatedFlexibleTypes, fqName=test.AnnotatedFlexibleTypes, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=AnnotatedFlexibleTypes, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=AnnotatedFlexibleTypes]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=javaClass]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=d]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=JavaClass]
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$PROPERTY[fqName=test.AnnotatedFlexibleTypes.bar, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=bar]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: kotlin.collections.Collection<kotlin.Int .. kotlin.Int?>?
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=collections]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=MutableCollection]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: kotlin.Int?
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Int]
|
||||
KotlinStub$PROPERTY[fqName=test.AnnotatedFlexibleTypes.baz, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=baz]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: kotlin.collections.Collection<kotlin.collections.MutableCollection<kotlin.Int .. kotlin.Int?> .. kotlin.collections.Collection<kotlin.Int .. kotlin.Int?>?>?
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=collections]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=MutableCollection]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: kotlin.collections.Collection<kotlin.Int .. kotlin.Int?>?
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=collections]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=MutableCollection]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: kotlin.Int?
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Int]
|
||||
KotlinStub$PROPERTY[fqName=test.AnnotatedFlexibleTypes.javaClass, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=javaClass]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=d]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=JavaClass]
|
||||
KotlinStub$FUN[fqName=test.AnnotatedFlexibleTypes.foo, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=foo]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: kotlin.Int?
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Int]
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package d;
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
import kotlin.annotations.jvm.*;
|
||||
|
||||
public abstract class JavaClass {
|
||||
@Nullable
|
||||
public abstract Integer foo();
|
||||
|
||||
@Mutable
|
||||
public abstract java.util.Collection<Integer> bar();
|
||||
|
||||
@Mutable
|
||||
public abstract java.util.Collection<java.util.Collection<Integer>> baz();
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package test
|
||||
|
||||
public class OuterClassesWithFlexibleArgs<K, L>(k: K, l: L) {
|
||||
val baz = d.JavaClass.baz(k, l)
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
PsiJetFileStubImpl[package=test]
|
||||
KotlinStub$PACKAGE_DIRECTIVE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$IMPORT_LIST
|
||||
KotlinStub$CLASS[classId=test/OuterClassesWithFlexibleArgs, fqName=test.OuterClassesWithFlexibleArgs, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=OuterClassesWithFlexibleArgs, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_PARAMETER_LIST
|
||||
KotlinStub$TYPE_PARAMETER[fqName=null, isInVariance=false, isOutVariance=false, name=K]
|
||||
KotlinStub$TYPE_PARAMETER[fqName=null, isInVariance=false, isOutVariance=false, name=L]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=OuterClassesWithFlexibleArgs]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=k]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=K]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=l]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=L]
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$PROPERTY[fqName=test.OuterClassesWithFlexibleArgs.baz, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=baz]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: d.JavaClass.InnerClass<L .. L?>?
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=d]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=JavaClass]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: K?
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=K]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=InnerClass]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: L?
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=L]
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package d;
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
import kotlin.annotations.jvm.*;
|
||||
|
||||
public abstract class JavaClass<T> {
|
||||
public class InnerClass<M> {}
|
||||
|
||||
@Mutable
|
||||
public static <K, L> JavaClass<K>.InnerClass<L> baz(K k, L l) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package test
|
||||
|
||||
public class TypeParametersInFlexibleTypes<A, D>(val javaClass: d.JavaClass<A>, val t: D & Any) {
|
||||
fun foo() = javaClass.foo()
|
||||
|
||||
val bar = javaClass.bar()
|
||||
|
||||
val baz = d.JavaClass.baz(t)
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
PsiJetFileStubImpl[package=test]
|
||||
KotlinStub$PACKAGE_DIRECTIVE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$IMPORT_LIST
|
||||
KotlinStub$CLASS[classId=test/TypeParametersInFlexibleTypes, fqName=test.TypeParametersInFlexibleTypes, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=TypeParametersInFlexibleTypes, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_PARAMETER_LIST
|
||||
KotlinStub$TYPE_PARAMETER[fqName=null, isInVariance=false, isOutVariance=false, name=A]
|
||||
KotlinStub$TYPE_PARAMETER[fqName=null, isInVariance=false, isOutVariance=false, name=D]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=TypeParametersInFlexibleTypes]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=javaClass]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=d]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=JavaClass]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=A]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=t]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$INTERSECTION_TYPE
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=D]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Any]
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$PROPERTY[fqName=test.TypeParametersInFlexibleTypes.bar, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=bar]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: kotlin.collections.Collection<A .. A?>?
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=collections]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=MutableCollection]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: A?
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=A]
|
||||
KotlinStub$PROPERTY[fqName=test.TypeParametersInFlexibleTypes.baz, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=baz]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: kotlin.collections.Collection<D & Any .. D?>?
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=collections]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=MutableCollection]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$INTERSECTION_TYPE
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: D?
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=D]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Any]
|
||||
KotlinStub$PROPERTY[fqName=test.TypeParametersInFlexibleTypes.javaClass, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=javaClass]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=d]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=JavaClass]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=A]
|
||||
KotlinStub$PROPERTY[fqName=test.TypeParametersInFlexibleTypes.t, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=t]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$INTERSECTION_TYPE
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=D]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Any]
|
||||
KotlinStub$FUN[fqName=test.TypeParametersInFlexibleTypes.foo, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=foo]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE ft: A?
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=A]
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package d;
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
import kotlin.annotations.jvm.*;
|
||||
|
||||
public abstract class JavaClass<T> {
|
||||
@Nullable
|
||||
public abstract T foo();
|
||||
|
||||
@Mutable
|
||||
public abstract java.util.Collection<T> bar();
|
||||
|
||||
@Mutable
|
||||
public static <K> java.util.Collection<K> baz(K t) {
|
||||
return new java.util.ArrayList<>();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user