Skip to content

bug: Provide 静默接受不支持的输出类型 #40

Description

@kooksee

问题

handleProvide 对不支持的 output kind 只 logger.Warn 并返回 nildixinternal/dix.go),注册表面成功。providerInputType.Validate() 存在但注册路径未调用。不支持的 input 在 parseInputType 中被丢弃,可能导致后续 fn.Call 参数个数不匹配而 panic。

影响

  • TryProvide/Provide 给人「注册成功」的假象
  • 失败推迟到 Inject,错误更难定位
  • 极端情况下运行时 panic

建议

  • Provide/TryProvide 对不支持的 in/out 直接返回 error
  • 注册时调用 Validate(),拒绝「声明了参数但解析为空」的情况
  • 将现有「Inject 时才失败」的测试前移到 Provide 阶段

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions