getConcreteMembers method

Map<String, InterpretedFunction> getConcreteMembers()

Returns a map of all concrete instance members (methods, getters, setters) defined directly in this class AND in applied mixins. The key is the member name, the value is the concrete InterpretedFunction. Also includes instance fields (which implicitly provide getters).

Implementation

Map<String, InterpretedFunction> getConcreteMembers() {
  final concreteMembers = <String, InterpretedFunction>{};

  // Include concrete members from applied mixins (in order of application)
  for (final mixin in mixins) {
    mixin.methods.forEach((name, func) {
      if (!func.isAbstract) {
        concreteMembers[name] = func;
      }
    });
    mixin.getters.forEach((name, func) {
      if (!func.isAbstract) {
        concreteMembers[name] = func;
      }
    });
    mixin.setters.forEach((name, func) {
      if (!func.isAbstract) {
        concreteMembers[name] = func;
      }
    });
  }

  // Include concrete members from this class (override mixin members if same name)
  methods.forEach((name, func) {
    if (!func.isAbstract) {
      concreteMembers[name] = func;
    }
  });
  getters.forEach((name, func) {
    if (!func.isAbstract) {
      concreteMembers[name] = func;
    }
  });
  setters.forEach((name, func) {
    if (!func.isAbstract) {
      concreteMembers[name] = func;
    }
  });
  return concreteMembers;
}