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