aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-02-10 02:01:41 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-02-10 02:01:41 +0200
commitab85e724103943f94e307581c9af5df525fbf061 (patch)
tree7409d3f33279846658151c7b90fce838de1da172
parented53c4f5acea9f4134985ffa81d72aec0ec7a18c (diff)
downloadmeson-ab85e724103943f94e307581c9af5df525fbf061.zip
meson-ab85e724103943f94e307581c9af5df525fbf061.tar.gz
meson-ab85e724103943f94e307581c9af5df525fbf061.tar.bz2
Enforce keyword order.
-rwxr-xr-xbparser.py2
-rwxr-xr-xinterpreter.py2
-rw-r--r--nodes.py3
3 files changed, 6 insertions, 1 deletions
diff --git a/bparser.py b/bparser.py
index 839ce30..31aa2cf 100755
--- a/bparser.py
+++ b/bparser.py
@@ -174,7 +174,7 @@ def p_args_multiple(t):
def p_kwargs_multiple(t):
'args : expression COLON statement COMMA args'
args = t[5]
- args.add_kwarg(t[1], t[3])
+ args.set_kwarg(t[1], t[3])
t[0] = args
def p_args_single_pos(t):
diff --git a/interpreter.py b/interpreter.py
index 7e5a36c..09c7ae0 100755
--- a/interpreter.py
+++ b/interpreter.py
@@ -616,6 +616,8 @@ class Interpreter():
def reduce_arguments(self, args):
assert(isinstance(args, nodes.Arguments))
+ if args.incorrect_order():
+ raise InvalidArguments('Line %d: all keyword arguments must be after positional arguments.' % args.lineno())
reduced_pos = [self.reduce_single(arg) for arg in args.arguments]
reduced_kw = {}
for key in args.kwargs.keys():
diff --git a/nodes.py b/nodes.py
index b1d26ee..e692c48 100644
--- a/nodes.py
+++ b/nodes.py
@@ -186,6 +186,9 @@ class Arguments(Statement):
def num_kwargs(self):
return len(self.kwargs)
+
+ def incorrect_order(self):
+ return self.order_error
def __len__(self):
return self.num_args() # Fixme