Future buildDefinitionForClass()

in working/macros/example/data_class.dart [171:185]


  Future<void> buildDefinitionForClass(
      ClassDeclaration clazz, ClassDefinitionBuilder builder) async {
    var methods = await builder.methodsOf(clazz);
    var hashCodeBuilder = await builder.buildMethod(
        methods.firstWhere((m) => m.identifier.name == 'hashCode').identifier);
    var hashCodeExprs = [
      await for (var field in clazz.allFields(builder))
        ExpressionCode.fromString('${field.identifier.name}.hashCode')
    ].joinAsCode(' ^ ');
    hashCodeBuilder.augment(FunctionBodyCode.fromParts([
      ' => ',
      ...hashCodeExprs,
      ';',
    ]));
  }