[cls] more compact representation for contract stubs
distinguish boolean parameters
This commit is contained in:
@@ -23,12 +23,12 @@ object KotlinStubVersions {
|
|||||||
// Though only kotlin declarations (no code in the bodies) are stubbed, please do increase this version
|
// Though only kotlin declarations (no code in the bodies) are stubbed, please do increase this version
|
||||||
// if you are not 100% sure it can be avoided.
|
// if you are not 100% sure it can be avoided.
|
||||||
// Increasing this version will lead to reindexing of all kotlin source files on the first IDE startup with the new version.
|
// Increasing this version will lead to reindexing of all kotlin source files on the first IDE startup with the new version.
|
||||||
const val SOURCE_STUB_VERSION = 150
|
const val SOURCE_STUB_VERSION = 151
|
||||||
|
|
||||||
// Binary stub version should be increased if stub format (org.jetbrains.kotlin.psi.stubs.impl) is changed
|
// Binary stub version should be increased if stub format (org.jetbrains.kotlin.psi.stubs.impl) is changed
|
||||||
// or changes are made to the core stub building code (org.jetbrains.kotlin.idea.decompiler.stubBuilder).
|
// or changes are made to the core stub building code (org.jetbrains.kotlin.idea.decompiler.stubBuilder).
|
||||||
// Increasing this version will lead to reindexing of all binary files that are potentially kotlin binaries (including all class files).
|
// Increasing this version will lead to reindexing of all binary files that are potentially kotlin binaries (including all class files).
|
||||||
private const val BINARY_STUB_VERSION = 86
|
private const val BINARY_STUB_VERSION = 87
|
||||||
|
|
||||||
// Classfile stub version should be increased if changes are made to classfile stub building subsystem (org.jetbrains.kotlin.idea.decompiler.classFile)
|
// Classfile stub version should be increased if changes are made to classfile stub building subsystem (org.jetbrains.kotlin.idea.decompiler.classFile)
|
||||||
// Increasing this version will lead to reindexing of all classfiles.
|
// Increasing this version will lead to reindexing of all classfiles.
|
||||||
|
|||||||
+17
-4
@@ -79,6 +79,11 @@ enum class KotlinContractEffectType {
|
|||||||
return KtValueParameterReference(dataStream.readInt(), IGNORE_REFERENCE_PARAMETER_NAME)
|
return KtValueParameterReference(dataStream.readInt(), IGNORE_REFERENCE_PARAMETER_NAME)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
BOOLEAN_PARAMETER_REFERENCE {
|
||||||
|
override fun deserialize(dataStream: StubInputStream): KtValueParameterReference<KotlinTypeBean, Nothing?> {
|
||||||
|
return KtBooleanValueParameterReference(dataStream.readInt(), IGNORE_REFERENCE_PARAMETER_NAME)
|
||||||
|
}
|
||||||
|
},
|
||||||
CONSTANT {
|
CONSTANT {
|
||||||
override fun deserialize(dataStream: StubInputStream): KtContractDescriptionElement<KotlinTypeBean, Nothing?> {
|
override fun deserialize(dataStream: StubInputStream): KtContractDescriptionElement<KotlinTypeBean, Nothing?> {
|
||||||
return when (val str = dataStream.readNameString()!!) {
|
return when (val str = dataStream.readNameString()!!) {
|
||||||
@@ -112,12 +117,12 @@ class KotlinContractSerializationVisitor(val dataStream: StubOutputStream) :
|
|||||||
|
|
||||||
override fun visitReturnsEffectDeclaration(returnsEffect: KtReturnsEffectDeclaration<KotlinTypeBean, Nothing?>, data: Nothing?) {
|
override fun visitReturnsEffectDeclaration(returnsEffect: KtReturnsEffectDeclaration<KotlinTypeBean, Nothing?>, data: Nothing?) {
|
||||||
dataStream.writeInt(KotlinContractEffectType.RETURNS.ordinal)
|
dataStream.writeInt(KotlinContractEffectType.RETURNS.ordinal)
|
||||||
returnsEffect.value.accept(this, data)
|
dataStream.writeName(returnsEffect.value.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitCallsEffectDeclaration(callsEffect: KtCallsEffectDeclaration<KotlinTypeBean, Nothing?>, data: Nothing?) {
|
override fun visitCallsEffectDeclaration(callsEffect: KtCallsEffectDeclaration<KotlinTypeBean, Nothing?>, data: Nothing?) {
|
||||||
dataStream.writeInt(KotlinContractEffectType.CALLS.ordinal)
|
dataStream.writeInt(KotlinContractEffectType.CALLS.ordinal)
|
||||||
callsEffect.valueParameterReference.accept(this, data)
|
dataStream.writeInt(callsEffect.valueParameterReference.parameterIndex)
|
||||||
dataStream.writeInt(callsEffect.kind.ordinal)
|
dataStream.writeInt(callsEffect.kind.ordinal)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,14 +143,14 @@ class KotlinContractSerializationVisitor(val dataStream: StubOutputStream) :
|
|||||||
|
|
||||||
override fun visitIsInstancePredicate(isInstancePredicate: KtIsInstancePredicate<KotlinTypeBean, Nothing?>, data: Nothing?) {
|
override fun visitIsInstancePredicate(isInstancePredicate: KtIsInstancePredicate<KotlinTypeBean, Nothing?>, data: Nothing?) {
|
||||||
dataStream.writeInt(KotlinContractEffectType.IS_INSTANCE.ordinal)
|
dataStream.writeInt(KotlinContractEffectType.IS_INSTANCE.ordinal)
|
||||||
isInstancePredicate.arg.accept(this, data)
|
dataStream.writeInt(isInstancePredicate.arg.parameterIndex)
|
||||||
serializeType(dataStream, isInstancePredicate.type)
|
serializeType(dataStream, isInstancePredicate.type)
|
||||||
dataStream.writeBoolean(isInstancePredicate.isNegated)
|
dataStream.writeBoolean(isInstancePredicate.isNegated)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitIsNullPredicate(isNullPredicate: KtIsNullPredicate<KotlinTypeBean, Nothing?>, data: Nothing?) {
|
override fun visitIsNullPredicate(isNullPredicate: KtIsNullPredicate<KotlinTypeBean, Nothing?>, data: Nothing?) {
|
||||||
dataStream.writeInt(KotlinContractEffectType.IS_NULL.ordinal)
|
dataStream.writeInt(KotlinContractEffectType.IS_NULL.ordinal)
|
||||||
isNullPredicate.arg.accept(this, data)
|
dataStream.writeInt(isNullPredicate.arg.parameterIndex)
|
||||||
dataStream.writeBoolean(isNullPredicate.isNegated)
|
dataStream.writeBoolean(isNullPredicate.isNegated)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,6 +164,14 @@ class KotlinContractSerializationVisitor(val dataStream: StubOutputStream) :
|
|||||||
dataStream.writeInt(KotlinContractEffectType.PARAMETER_REFERENCE.ordinal)
|
dataStream.writeInt(KotlinContractEffectType.PARAMETER_REFERENCE.ordinal)
|
||||||
dataStream.writeInt(valueParameterReference.parameterIndex)
|
dataStream.writeInt(valueParameterReference.parameterIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitBooleanValueParameterReference(
|
||||||
|
booleanValueParameterReference: KtBooleanValueParameterReference<KotlinTypeBean, Nothing?>,
|
||||||
|
data: Nothing?
|
||||||
|
) {
|
||||||
|
dataStream.writeInt(KotlinContractEffectType.BOOLEAN_PARAMETER_REFERENCE.ordinal)
|
||||||
|
dataStream.writeInt(booleanValueParameterReference.parameterIndex)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object KotlinContractConstantValues {
|
object KotlinContractConstantValues {
|
||||||
|
|||||||
Reference in New Issue
Block a user