fromTypeDef static method

LookupTypeDef fromTypeDef(
  1. TypeDef typeDef
)

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}'),
  };
}