kataras / kataras/iris

[BUG] router.APIContainer.RegisterDependency only works with specific registration sequence

Open
#1,794 1 comment 1 reaction 1 assignee Claimed by @kataras View on GitHub
🐞 type:bug
Dominant language
Go
Stars
25.6k
Forks
2.4k
PR merge metrics
No merged PRs in 30d

Description

**Describe the bug**
`router.APIContainer.RegisterDependency` only works with specific registration sequence.

**To Reproduce**

1. In `main.go`

```go
package main

import (
"github.com/kataras/iris/v12"
)

func main() {
app := iris.Default()
app.ConfigureContainer(func(api *iris.APIContainer) {
api.RegisterDependency(func(f32 float32) float64 {
return float64(f32)
})
api.RegisterDependency(float32(1))
})
}
```

2. run with `go run main.go`
3. panic
```
[DBUG] 2021/07/22 21:57 Log level set to "debug"
[DBUG] 2021/07/22 21:57 Using <./access.log> to log requests
[DBUG] 2021/07/22 21:57 Using to identify requests
panic: expected [1] bindings (input parameters) but got [0]
Function:
- main.main.func1.1
Expected:
- [1] float32
Missing:
- [1] float32

goroutine 1 [running]:
github.com/kataras/iris/v12/hero.getBindingsForFunc(0x18a8380, 0x1a247d0, 0x13, 0xc000293a40, 0xc, 0xc, 0x1b29b00, 0xffffffffffffffff, 0x19b9f60, 0x1892e00, ...)
/Users/yz/go/pkg/mod/github.com/kataras/iris/v12@v12.2.0-alpha2.0.20210705170737-afb15b860124/hero/binding.go:274 +0x785
github.com/kataras/iris/v12/hero.fromDependentFunc(0x18a8380, 0x1a247d0, 0x13, 0xc000293b00, 0xc000293b00, 0xc000293a40, 0xc, 0xc, 0xc000293b00)
/Users/yz/go/pkg/mod/github.com/kataras/iris/v12@v12.2.0-alpha2.0.20210705170737-afb15b860124/hero/dependency.go:214 +0x112
github.com/kataras/iris/v12/hero.resolveDependency(0x18a8380, 0x1a247d0, 0x13, 0xc0002d1600, 0xc000293b00, 0xc000293a40, 0xc, 0xc, 0x1)
/Users/yz/go/pkg/mod/github.com/kataras/iris/v12@v12.2.0-alpha2.0.20210705170737-afb15b860124/hero/dependency.go:91 +0xdf
github.com/kataras/iris/v12/hero.newDependency(0x18a8380, 0x1a247d0, 0xc00029ee00, 0xc000293a40, 0xc, 0xc, 0x1823387)
/Users/yz/go/pkg/mod/github.com/kataras/iris/v12@v12.2.0-alpha2.0.20210705170737-afb15b860124/hero/dependency.go:77 +0x1dc
github.com/kataras/iris/v12/hero.(*Container).Register(0xc0004adc70, 0x18a8380, 0x1a247d0, 0xc000291190)
/Users/yz/go/pkg/mod/github.com/kataras/iris/v12@v12.2.0-alpha2.0.20210705170737-afb15b860124/hero/container.go:284 +0x6a
github.com/kataras/iris/v12/core/router.(*APIContainer).RegisterDependency(...)
/Users/yz/go/pkg/mod/github.com/kataras/iris/v12@v12.2.0-alpha2.0.20210705170737-afb15b860124/core/router/api_container.go:71
main.main.func1(0xc000273338)
/Users/yz/workspace/test/main.go:10 +0x47
github.com/kataras/iris/v12/core/router.(*APIBuilder).ConfigureContainer(0xc000279e60, 0xc0004c3f70, 0x1, 0x1, 0xffffffff)
/Users/yz/go/pkg/mod/github.com/kataras/iris/v12@v12.2.0-alpha2.0.20210705170737-afb15b860124/core/router/api_builder.go:335 +0x64
main.main()
/Users/yz/workspace/test/main.go:9 +0x66
exit status 2
```

**Expected behavior**
No panic like

```go
package main

import (
"github.com/kataras/iris/v12"
)

func main() {
app := iris.Default()
app.ConfigureContainer(func(api *iris.APIContainer) {
api.RegisterDependency(float32(1))
api.RegisterDependency(func(f32 float32) float64 {
return float64(f32)
})
})
}
```

**Desktop (please complete the following information):**
- OS: macOS Bug Sur 11.4
- go: 1.16

**iris.Version**
- v12.2.0-alpha2

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.