func()

in internal/typeregistry/registration.go [34:53]


func (t *TypeRegistry) RegisterClass(fqn api.FQN, class reflect.Type, overrides []api.Override, maker func() interface{}) error {
	if class.Kind() != reflect.Interface {
		return fmt.Errorf("the provided class is not an interface: %v", class)
	}

	if existing, exists := t.fqnToType[fqn]; exists && existing.Type != class {
		return fmt.Errorf("another type was already registered with %v: %v", fqn, existing)
	}

	t.fqnToType[fqn] = registeredType{class, classType}
	t.proxyMakers[class] = maker

	// Skipping registration if there are no members, as this would have no use.
	if len(overrides) > 0 {
		t.typeMembers[fqn] = make([]api.Override, len(overrides))
		copy(t.typeMembers[fqn], overrides)
	}

	return nil
}