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
}