IrGetClass serialization/deserialization.
This commit is contained in:
committed by
KonstantinAnisimov
parent
9a922c6947
commit
5ca5923b9a
+5
@@ -153,6 +153,10 @@ message IrEnumConstructorCall {
|
|||||||
required MemberAccessCommon member_access = 2;
|
required MemberAccessCommon member_access = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message IrGetClass {
|
||||||
|
required IrExpression argument = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message IrGetEnumValue {
|
message IrGetEnumValue {
|
||||||
required KotlinType type = 1;
|
required KotlinType type = 1;
|
||||||
required KotlinDescriptor descriptor = 2;
|
required KotlinDescriptor descriptor = 2;
|
||||||
@@ -248,6 +252,7 @@ message IrOperation {
|
|||||||
IrDelegatingConstructorCall delegating_constructor_call = 7;
|
IrDelegatingConstructorCall delegating_constructor_call = 7;
|
||||||
IrDoWhile do_while = 25;
|
IrDoWhile do_while = 25;
|
||||||
IrEnumConstructorCall enum_constructor_call = 8;
|
IrEnumConstructorCall enum_constructor_call = 8;
|
||||||
|
IrGetClass get_class = 24;
|
||||||
IrGetEnumValue get_enum_value = 9;
|
IrGetEnumValue get_enum_value = 9;
|
||||||
IrGetField get_field = 10;
|
IrGetField get_field = 10;
|
||||||
IrGetValue get_value = 11;
|
IrGetValue get_value = 11;
|
||||||
|
|||||||
+14
@@ -270,6 +270,12 @@ internal class IrSerializer(val context: Context,
|
|||||||
return proto.build()
|
return proto.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun serializeGetClass(expression: IrGetClass): KonanIr.IrGetClass {
|
||||||
|
val proto = KonanIr.IrGetClass.newBuilder()
|
||||||
|
.setArgument(serializeExpression(expression.argument))
|
||||||
|
return proto.build()
|
||||||
|
}
|
||||||
|
|
||||||
fun serializeGetEnumValue(expression: IrGetEnumValue): KonanIr.IrGetEnumValue {
|
fun serializeGetEnumValue(expression: IrGetEnumValue): KonanIr.IrGetEnumValue {
|
||||||
val proto = KonanIr.IrGetEnumValue.newBuilder()
|
val proto = KonanIr.IrGetEnumValue.newBuilder()
|
||||||
.setType(serializeKotlinType(expression.type))
|
.setType(serializeKotlinType(expression.type))
|
||||||
@@ -472,6 +478,7 @@ internal class IrSerializer(val context: Context,
|
|||||||
is IrDelegatingConstructorCall
|
is IrDelegatingConstructorCall
|
||||||
-> operationProto.setDelegatingConstructorCall(serializeDelegatingConstructorCall(expression))
|
-> operationProto.setDelegatingConstructorCall(serializeDelegatingConstructorCall(expression))
|
||||||
is IrDoWhileLoop -> operationProto.setDoWhile(serializeDoWhile(expression))
|
is IrDoWhileLoop -> operationProto.setDoWhile(serializeDoWhile(expression))
|
||||||
|
is IrGetClass -> operationProto.setGetClass(serializeGetClass(expression))
|
||||||
is IrGetField -> operationProto.setGetField(serializeGetField(expression))
|
is IrGetField -> operationProto.setGetField(serializeGetField(expression))
|
||||||
is IrGetValue -> operationProto.setGetValue(serializeGetValue(expression))
|
is IrGetValue -> operationProto.setGetValue(serializeGetValue(expression))
|
||||||
is IrGetEnumValue
|
is IrGetEnumValue
|
||||||
@@ -851,6 +858,11 @@ internal class IrDeserializer(val context: Context,
|
|||||||
return call
|
return call
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun deserializeGetClass(proto: KonanIr.IrGetClass, start: Int, end: Int, type: KotlinType): IrGetClass {
|
||||||
|
val argument = deserializeExpression(proto.argument)
|
||||||
|
return IrGetClassImpl(start, end, type, argument)
|
||||||
|
}
|
||||||
|
|
||||||
fun deserializeGetField(proto: KonanIr.IrGetField, start: Int, end: Int): IrGetField {
|
fun deserializeGetField(proto: KonanIr.IrGetField, start: Int, end: Int): IrGetField {
|
||||||
val access = proto.fieldAccess
|
val access = proto.fieldAccess
|
||||||
val descriptor = deserializeDescriptor(access.getDescriptor()) as PropertyDescriptor
|
val descriptor = deserializeDescriptor(access.getDescriptor()) as PropertyDescriptor
|
||||||
@@ -1082,6 +1094,8 @@ internal class IrDeserializer(val context: Context,
|
|||||||
-> deserializeDoWhile(proto.doWhile, start, end, type)
|
-> deserializeDoWhile(proto.doWhile, start, end, type)
|
||||||
GET_ENUM_VALUE
|
GET_ENUM_VALUE
|
||||||
-> deserializeGetEnumValue(proto.getEnumValue, start, end)
|
-> deserializeGetEnumValue(proto.getEnumValue, start, end)
|
||||||
|
GET_CLASS
|
||||||
|
-> deserializeGetClass(proto.getClass, start, end, type)
|
||||||
GET_FIELD
|
GET_FIELD
|
||||||
-> deserializeGetField(proto.getField, start, end)
|
-> deserializeGetField(proto.getField, start, end)
|
||||||
GET_OBJECT
|
GET_OBJECT
|
||||||
|
|||||||
Reference in New Issue
Block a user