Add serialization/deserialization of definitely-not-null types
^KT-26245 In Progress
This commit is contained in:
committed by
TeamCityServer
parent
6ca6bb2d45
commit
30eb9ad32f
+4
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.descriptors.runtime.components.ReflectKotlinClass
|
||||
import org.jetbrains.kotlin.descriptors.runtime.components.RuntimeModuleData
|
||||
import org.jetbrains.kotlin.descriptors.runtime.structure.classId
|
||||
import org.jetbrains.kotlin.incremental.components.LookupLocation
|
||||
import org.jetbrains.kotlin.jvm.compiler.AbstractLoadJavaTest
|
||||
import org.jetbrains.kotlin.jvm.compiler.ExpectedLoadErrorsUtil
|
||||
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
|
||||
@@ -131,6 +132,9 @@ abstract class AbstractJvmRuntimeDescriptorLoaderTest : TestCaseWithTmpdir() {
|
||||
val environment = KotlinTestUtils.createEnvironmentWithJdkAndNullabilityAnnotationsFromIdea(
|
||||
testRootDisposable, ConfigurationKind.ALL, jdkKind
|
||||
)
|
||||
|
||||
AbstractLoadJavaTest.updateConfigurationWithDirectives(file.readText(), environment.configuration)
|
||||
|
||||
for (root in environment.configuration.getList(CLIConfigurationKeys.CONTENT_ROOTS)) {
|
||||
LOG.info("root: $root")
|
||||
}
|
||||
|
||||
+5
@@ -440,6 +440,11 @@ public class JvmRuntimeDescriptorLoaderTestGenerated extends AbstractJvmRuntimeD
|
||||
runTest("compiler/testData/loadJava/compiledKotlin/annotations/types/ClassLiteralArgument.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("DefinitelyNotNull.kt")
|
||||
public void testDefinitelyNotNull() throws Exception {
|
||||
runTest("compiler/testData/loadJava/compiledKotlin/annotations/types/DefinitelyNotNull.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("ReceiverParameter.kt")
|
||||
public void testReceiverParameter() throws Exception {
|
||||
runTest("compiler/testData/loadJava/compiledKotlin/annotations/types/ReceiverParameter.kt");
|
||||
|
||||
+6
-1
@@ -101,7 +101,12 @@ class TypeDeserializer(
|
||||
Flags.SUSPEND_TYPE.get(proto.flags) ->
|
||||
createSuspendFunctionType(annotations, constructor, arguments, proto.nullable)
|
||||
else ->
|
||||
KotlinTypeFactory.simpleType(annotations, constructor, arguments, proto.nullable)
|
||||
KotlinTypeFactory.simpleType(annotations, constructor, arguments, proto.nullable).let {
|
||||
if (Flags.DEFINITELY_NOT_NULL_TYPE.get(proto.flags))
|
||||
DefinitelyNotNullType.makeDefinitelyNotNull(it) ?: error("null DefinitelyNotNullType for '$it'")
|
||||
else
|
||||
it
|
||||
}
|
||||
}
|
||||
|
||||
val computedType = proto.abbreviatedType(c.typeTable)?.let {
|
||||
|
||||
@@ -15,6 +15,7 @@ public class Flags {
|
||||
|
||||
// Types
|
||||
public static final BooleanFlagField SUSPEND_TYPE = FlagField.booleanFirst();
|
||||
public static final BooleanFlagField DEFINITELY_NOT_NULL_TYPE = FlagField.booleanAfter(SUSPEND_TYPE);
|
||||
|
||||
// Common for declarations
|
||||
|
||||
@@ -85,8 +86,8 @@ public class Flags {
|
||||
|
||||
// ---
|
||||
|
||||
public static int getTypeFlags(boolean isSuspend) {
|
||||
return SUSPEND_TYPE.toFlags(isSuspend);
|
||||
public static int getTypeFlags(boolean isSuspend, boolean isDefinitelyNotNull) {
|
||||
return SUSPEND_TYPE.toFlags(isSuspend) | DEFINITELY_NOT_NULL_TYPE.toFlags(isDefinitelyNotNull);
|
||||
}
|
||||
|
||||
public static int getClassFlags(
|
||||
|
||||
Reference in New Issue
Block a user