diff --git a/pytype/overlays/fiddle_overlay.py b/pytype/overlays/fiddle_overlay.py index 1f2c56ed7..e8d07e05d 100644 --- a/pytype/overlays/fiddle_overlay.py +++ b/pytype/overlays/fiddle_overlay.py @@ -167,6 +167,9 @@ def new_slot( self, node, unused_cls, *args, **kwargs ) -> tuple[Node, "cfg.Variable"]: """Create a Config or Partial instance from args.""" + # pass + if not args: + return node, self.ctx.new_unsolvable(node) underlying = args[0].data[0] self._check_init_args(node, underlying, args, kwargs) diff --git a/pytype/tests/test_fiddle_overlay.py b/pytype/tests/test_fiddle_overlay.py index d0736ca26..125189008 100644 --- a/pytype/tests/test_fiddle_overlay.py +++ b/pytype/tests/test_fiddle_overlay.py @@ -665,6 +665,19 @@ def f() -> fiddle.Config[Simple]: return fiddle.Config(Simple, 1) """) + def test_no_crash_on_empty_args(self): + # pass + with self.DepTree([("fiddle.pyi", _FIDDLE_PYI)]): + self.Check(""" + from typing import cast, Any + import fiddle + + def foo(*args): + return + + fiddle.Config(foo, *[1, 2], 3) + """) + if __name__ == "__main__": test_base.main()