diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-02-10 02:01:41 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-02-10 02:01:41 +0200 |
commit | ab85e724103943f94e307581c9af5df525fbf061 (patch) | |
tree | 7409d3f33279846658151c7b90fce838de1da172 | |
parent | ed53c4f5acea9f4134985ffa81d72aec0ec7a18c (diff) | |
download | meson-ab85e724103943f94e307581c9af5df525fbf061.zip meson-ab85e724103943f94e307581c9af5df525fbf061.tar.gz meson-ab85e724103943f94e307581c9af5df525fbf061.tar.bz2 |
Enforce keyword order.
-rwxr-xr-x | bparser.py | 2 | ||||
-rwxr-xr-x | interpreter.py | 2 | ||||
-rw-r--r-- | nodes.py | 3 |
3 files changed, 6 insertions, 1 deletions
@@ -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(): @@ -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 |