From af3b7039e134959bd9c70e9c9ecf9666859ee2c6 Mon Sep 17 00:00:00 2001 From: Jackson Gatenby Date: Mon, 25 May 2015 09:56:06 +1000 Subject: [PATCH] Check for multiple lambdas in add_functions analysis Fixes #163 --- problem_db/add_functions.tut/analysis.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/problem_db/add_functions.tut/analysis.py b/problem_db/add_functions.tut/analysis.py index ab58292..6b398ec 100644 --- a/problem_db/add_functions.tut/analysis.py +++ b/problem_db/add_functions.tut/analysis.py @@ -2,14 +2,14 @@ class CodeVisitor(TutorialNodeVisitor): def __init__(self): super().__init__() - self.uses_lambda = False + self.lambda_count = 0 self.num_lambda_args = None self.adds_in_lambda = False def visit_Lambda(self, node): super().visit_Lambda(node) - self.uses_lambda = True + self.lambda_count += 1 self.num_lambda_args = len(node.args.args) if isinstance(node.body, ast.BinOp) \ @@ -25,8 +25,10 @@ def _analyse(self): self.add_error('add_functions should accept exactly two args') else: # some of these are only safe if the function is defined properly - if not self.visitor.uses_lambda: + if self.visitor.lambda_count == 0: self.add_error('You need to use a lambda function') + elif self.visitor.lambda_count > 1: + self.add_error('You only need to define one lambda function') elif self.visitor.num_lambda_args != 1: self.add_error('Your lambda should only take in a single arg') elif not self.visitor.adds_in_lambda: