ninja_syntax: Disallow positional parameters in BuildAction
Change-Id: I59b24b86acb287b2c4c490096cb1b3f9590cf821
diff --git a/ninja/ninja_syntax.py b/ninja/ninja_syntax.py
index 2929c2f..e7c5c03 100644
--- a/ninja/ninja_syntax.py
+++ b/ninja/ninja_syntax.py
@@ -137,12 +137,14 @@
"""
def __init__(self,
+ *args,
rule: str,
output: list[str] = None,
inputs: list[str] = None,
implicits: list[str] = None,
order_only: list[str] = None,
variables: list[tuple[(str, str)]] = ()):
+ assert not args, "parameters must be passed as keywords"
self.output = self._as_list(output)
self.rule = rule
self.inputs = self._as_list(inputs)
diff --git a/ninja/test_ninja_syntax.py b/ninja/test_ninja_syntax.py
index 528807d..c8b1f14 100644
--- a/ninja/test_ninja_syntax.py
+++ b/ninja/test_ninja_syntax.py
@@ -100,6 +100,11 @@
with self.assertRaises(BuildActionException):
next(build.stream())
+ def test_nonkeyword_inputs(self):
+ """Verify that non-keyword args are rejected."""
+ with self.assertRaises(TypeError):
+ BuildAction("out")
+
def test_inputs(self):
build = BuildAction(output="out",
rule="cat",