Reformat ContractSerializer.kt according to code style

This commit is contained in:
Dmitriy Novozhilov
2018-11-19 14:38:42 +03:00
parent b86ea7621c
commit 44ae7a19e6
@@ -26,9 +26,9 @@ import org.jetbrains.kotlin.metadata.deserialization.Flags
class ContractSerializer { class ContractSerializer {
fun serializeContractOfFunctionIfAny( fun serializeContractOfFunctionIfAny(
functionDescriptor: FunctionDescriptor, functionDescriptor: FunctionDescriptor,
proto: ProtoBuf.Function.Builder, proto: ProtoBuf.Function.Builder,
parentSerializer: DescriptorSerializer parentSerializer: DescriptorSerializer
) { ) {
val contractDescription = functionDescriptor.getUserData(ContractProviderKey)?.getContractDescription() val contractDescription = functionDescriptor.getUserData(ContractProviderKey)?.getContractDescription()
if (contractDescription != null) { if (contractDescription != null) {
@@ -50,7 +50,11 @@ class ContractSerializer {
} }
} }
private fun fillEffectProto(builder: ProtoBuf.Effect.Builder, effectDeclaration: EffectDeclaration, contractDescription: ContractDescription) { private fun fillEffectProto(
builder: ProtoBuf.Effect.Builder,
effectDeclaration: EffectDeclaration,
contractDescription: ContractDescription
) {
when (effectDeclaration) { when (effectDeclaration) {
is ConditionalEffectDeclaration -> { is ConditionalEffectDeclaration -> {
builder.setConclusionOfConditionalEffect(contractExpressionProto(effectDeclaration.condition, contractDescription)) builder.setConclusionOfConditionalEffect(contractExpressionProto(effectDeclaration.condition, contractDescription))
@@ -59,8 +63,10 @@ class ContractSerializer {
is ReturnsEffectDeclaration -> { is ReturnsEffectDeclaration -> {
when { when {
effectDeclaration.value == ConstantReference.NOT_NULL -> builder.effectType = ProtoBuf.Effect.EffectType.RETURNS_NOT_NULL effectDeclaration.value == ConstantReference.NOT_NULL -> builder.effectType =
effectDeclaration.value == ConstantReference.WILDCARD -> builder.effectType = ProtoBuf.Effect.EffectType.RETURNS_CONSTANT ProtoBuf.Effect.EffectType.RETURNS_NOT_NULL
effectDeclaration.value == ConstantReference.WILDCARD -> builder.effectType =
ProtoBuf.Effect.EffectType.RETURNS_CONSTANT
else -> { else -> {
builder.effectType = ProtoBuf.Effect.EffectType.RETURNS_CONSTANT builder.effectType = ProtoBuf.Effect.EffectType.RETURNS_CONSTANT
builder.addEffectConstructorArgument(contractExpressionProto(effectDeclaration.value, contractDescription)) builder.addEffectConstructorArgument(contractExpressionProto(effectDeclaration.value, contractDescription))
@@ -77,11 +83,14 @@ class ContractSerializer {
} }
} }
// TODO: Add else and do something like reporting issue? // TODO: Add else and do something like reporting issue?
} }
} }
private fun contractExpressionProto(contractDescriptionElement: ContractDescriptionElement, contractDescription: ContractDescription): ProtoBuf.Expression.Builder { private fun contractExpressionProto(
contractDescriptionElement: ContractDescriptionElement,
contractDescription: ContractDescription
): ProtoBuf.Expression.Builder {
return contractDescriptionElement.accept(object : ContractDescriptionVisitor<ProtoBuf.Expression.Builder, Unit> { return contractDescriptionElement.accept(object : ContractDescriptionVisitor<ProtoBuf.Expression.Builder, Unit> {
override fun visitLogicalOr(logicalOr: LogicalOr, data: Unit): ProtoBuf.Expression.Builder { override fun visitLogicalOr(logicalOr: LogicalOr, data: Unit): ProtoBuf.Expression.Builder {
val leftBuilder = logicalOr.left.accept(this, data) val leftBuilder = logicalOr.left.accept(this, data)
@@ -92,8 +101,7 @@ class ContractSerializer {
addOrArgument(leftBuilder) addOrArgument(leftBuilder)
addOrArgument(contractExpressionProto(logicalOr.right, contractDescription)) addOrArgument(contractExpressionProto(logicalOr.right, contractDescription))
} }
} } else {
else {
// we can save some space by re-using left builder instead of nesting new one // we can save some space by re-using left builder instead of nesting new one
leftBuilder.apply { addOrArgument(contractExpressionProto(logicalOr.right, contractDescription)) } leftBuilder.apply { addOrArgument(contractExpressionProto(logicalOr.right, contractDescription)) }
} }
@@ -108,17 +116,16 @@ class ContractSerializer {
addAndArgument(leftBuilder) addAndArgument(leftBuilder)
addAndArgument(contractExpressionProto(logicalAnd.right, contractDescription)) addAndArgument(contractExpressionProto(logicalAnd.right, contractDescription))
} }
} } else {
else {
// we can save some space by re-using left builder instead of nesting new one // we can save some space by re-using left builder instead of nesting new one
leftBuilder.apply { addAndArgument(contractExpressionProto(logicalAnd.right, contractDescription)) } leftBuilder.apply { addAndArgument(contractExpressionProto(logicalAnd.right, contractDescription)) }
} }
} }
override fun visitLogicalNot(logicalNot: LogicalNot, data: Unit): ProtoBuf.Expression.Builder = override fun visitLogicalNot(logicalNot: LogicalNot, data: Unit): ProtoBuf.Expression.Builder =
logicalNot.arg.accept(this, data).apply { logicalNot.arg.accept(this, data).apply {
writeFlags(Flags.IS_NEGATED.invert(flags)) writeFlags(Flags.IS_NEGATED.invert(flags))
} }
override fun visitIsInstancePredicate(isInstancePredicate: IsInstancePredicate, data: Unit): ProtoBuf.Expression.Builder { override fun visitIsInstancePredicate(isInstancePredicate: IsInstancePredicate, data: Unit): ProtoBuf.Expression.Builder {
// write variable // write variable
@@ -188,16 +195,17 @@ class ContractSerializer {
InvocationKind.UNKNOWN -> null InvocationKind.UNKNOWN -> null
} }
private fun constantValueProtobufEnum(constantReference: ConstantReference): ProtoBuf.Expression.ConstantValue? = when (constantReference) { private fun constantValueProtobufEnum(constantReference: ConstantReference): ProtoBuf.Expression.ConstantValue? =
BooleanConstantReference.TRUE -> ProtoBuf.Expression.ConstantValue.TRUE when (constantReference) {
BooleanConstantReference.FALSE -> ProtoBuf.Expression.ConstantValue.FALSE BooleanConstantReference.TRUE -> ProtoBuf.Expression.ConstantValue.TRUE
ConstantReference.NULL -> ProtoBuf.Expression.ConstantValue.NULL BooleanConstantReference.FALSE -> ProtoBuf.Expression.ConstantValue.FALSE
ConstantReference.NOT_NULL -> throw IllegalStateException( ConstantReference.NULL -> ProtoBuf.Expression.ConstantValue.NULL
ConstantReference.NOT_NULL -> throw IllegalStateException(
"Internal error during serialization of function contract: NOT_NULL constant isn't denotable in protobuf format. " + "Internal error during serialization of function contract: NOT_NULL constant isn't denotable in protobuf format. " +
"Its serialization should be handled at higher level" "Its serialization should be handled at higher level"
) )
ConstantReference.WILDCARD -> null ConstantReference.WILDCARD -> null
else -> throw IllegalArgumentException("Unknown constant: $constantReference") else -> throw IllegalArgumentException("Unknown constant: $constantReference")
} }
} }
} }