Skip to content

Commit 7fee3a7

Browse files
authored
Merge pull request #8 from go-spring-projects/fix-resolveBean
Fix the panic caused by the closure bean
2 parents 7b8589c + 729eb32 commit 7fee3a7

File tree

2 files changed

+22
-16
lines changed

2 files changed

+22
-16
lines changed

gs/gs.go

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -489,23 +489,25 @@ func (c *container) resolveBean(b *BeanDefinition) error {
489489
if b.method {
490490
selector, ok := b.f.Arg(0)
491491
if !ok || selector == "" {
492-
selector, _ = b.f.In(0)
492+
selector, ok = b.f.In(0)
493493
}
494-
parents, err := c.findBean(selector)
495-
if err != nil {
496-
return err
497-
}
498-
n := len(parents)
499-
if n > 1 {
500-
msg := fmt.Sprintf("found %d parent beans, bean:%q type:%q [", n, selector, b.t.In(0))
501-
for _, b := range parents {
502-
msg += "( " + b.String() + " ), "
494+
if ok {
495+
parents, err := c.findBean(selector)
496+
if err != nil {
497+
return err
498+
}
499+
n := len(parents)
500+
if n > 1 {
501+
msg := fmt.Sprintf("found %d parent beans, bean:%q type:%q [", n, selector, b.t.In(0))
502+
for _, b := range parents {
503+
msg += "( " + b.String() + " ), "
504+
}
505+
msg = msg[:len(msg)-2] + "]"
506+
return errors.New(msg)
507+
} else if n == 0 {
508+
b.status = Deleted
509+
return nil
503510
}
504-
msg = msg[:len(msg)-2] + "]"
505-
return errors.New(msg)
506-
} else if n == 0 {
507-
b.status = Deleted
508-
return nil
509511
}
510512
}
511513

gs/gs_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3070,10 +3070,14 @@ func (tac *testAutoConfiguration) NewEmpty() *BeanDefinition {
30703070
return NewBean(new(struct{})).Name("empty")
30713071
}
30723072

3073-
func (tac *testAutoConfiguration) NewFoo() *testFoo {
3073+
func (tac *testAutoConfiguration) newFoo() *testFoo {
30743074
return &testFoo{prefix: tac.Prefix}
30753075
}
30763076

3077+
func (tac *testAutoConfiguration) NewFoo() *BeanDefinition {
3078+
return NewBean(tac.newFoo)
3079+
}
3080+
30773081
func (tac *testAutoConfiguration) NewBar(foo *testFoo) (*testBar, error) {
30783082
return &testBar{foo: foo}, nil
30793083
}

0 commit comments

Comments
 (0)