fromTypeDef static method
Implementation
static LookupTypeDef fromTypeDef(TypeDef typeDef) {
return switch (typeDef) {
final TypeDefComposite def => LookupTypeDef(
tag: 'composite',
value: def.fields
.map(
(field) => (
name: field.name,
typeName: field.typeName,
type: field.type,
),
)
.toList(),
),
final TypeDefVariant def => LookupTypeDef(
tag: 'variant',
value: def.variants
.map(
(v) => (
name: v.name,
index: v.index,
fields: v.fields
.map(
(field) => (
name: field.name,
typeName: field.typeName,
type: field.type,
),
)
.toList(),
),
)
.toList()),
final TypeDefSequence def => LookupTypeDef(tag: 'sequence', value: def.type),
final TypeDefArray def => LookupTypeDef(
tag: 'array',
value: (len: def.length, type: def.type),
),
final TypeDefTuple def => LookupTypeDef(tag: 'tuple', value: def.fields),
final TypeDefBitSequence def => LookupTypeDef(tag: 'bitSequence', value: def),
final TypeDefPrimitive def => LookupTypeDef(
tag: 'primitive',
value: (tag: def.primitive.name.toLowerCase(), value: null),
),
final TypeDefCompact def => LookupTypeDef(tag: 'compact', value: def.type),
_ => throw Exception('Unknown type definition runtime type ${typeDef.runtimeType}'),
};
}