[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/i18n/RFC.md fully. Find features de... #147

Merged
Virgil merged 1 commit from agent/read---spec-code-core-go-i18n-rfc-md-ful into dev 2026-04-02 07:07:58 +00:00
2 changed files with 23 additions and 0 deletions

View file

@ -103,6 +103,9 @@ func NewWithFS(fsys fs.FS, dir string, opts ...Option) (*Service, error) {
// NewWithLoader creates a new i18n service with a custom loader.
func NewWithLoader(loader Loader, opts ...Option) (*Service, error) {
if loader == nil {
return nil, log.E("NewWithLoader", "nil loader", nil)
}
s := &Service{
loader: loader,
messages: make(map[string]map[string]Message),
@ -836,6 +839,9 @@ func (s *Service) AddMessages(lang string, messages map[string]string) {
// and grammar data into the existing service. This is the correct way to
// add package-specific translations at runtime.
func (s *Service) AddLoader(loader Loader) error {
if loader == nil {
return log.E("Service.AddLoader", "nil loader", nil)
}
langs := loader.Languages()
for _, lang := range langs {
messages, grammar, err := loader.Load(lang)

View file

@ -986,6 +986,17 @@ func TestServiceAddLoader_Bad(t *testing.T) {
}
}
func TestServiceAddLoader_Nil(t *testing.T) {
svc, err := New()
if err != nil {
t.Fatalf("New() failed: %v", err)
}
if err := svc.AddLoader(nil); err == nil {
t.Error("AddLoader() should fail with nil loader")
}
}
func TestPackageLevelAddLoader(t *testing.T) {
svc, err := New()
if err != nil {
@ -1047,6 +1058,12 @@ func TestNewWithLoaderNoLanguages(t *testing.T) {
}
}
func TestNewWithLoaderNil(t *testing.T) {
if _, err := NewWithLoader(nil); err == nil {
t.Error("NewWithLoader(nil) should fail")
}
}
func TestServiceIsRTL(t *testing.T) {
svc, err := New()
if err != nil {