withDataClassMetadata method

CustomType withDataClassMetadata()

Add Annotation data to CustomType by generating the dataclass using generateDataClassFile and the using analyze to collect the annotations.

{@category generator}

Implementation

CustomType withDataClassMetadata() {
  final dataclass = generateDataClassFile();
  final result = analyze(fileContent: dataclass);
  final parent = result.parent! as CustomType;
  final parentMembersCopy = <TypeMember>[];

  for (final member in members) {
    final annotations = parent.members
            .where((annotatedMember) => annotatedMember.name == member.name)
            .firstOrNull
            ?.annotations ??
        [];

    parentMembersCopy.add(TypeMember(
      name: member.name,
      annotations: annotations,
      type: member.type,
    ));
  }

  return CustomType(
    className: result.parent!.className,
    members: parentMembersCopy,
  );
}