1.1 --- a/translator.py Fri Nov 11 00:03:05 2016 +0100
1.2 +++ b/translator.py Fri Nov 11 00:05:34 2016 +0100
1.3 @@ -536,6 +536,11 @@
1.4 elif isinstance(n, compiler.ast.Return):
1.5 return self.process_return_node(n)
1.6
1.7 + # Print statements.
1.8 +
1.9 + elif isinstance(n, (compiler.ast.Print, compiler.ast.Printnl)):
1.10 + self.statement(self.process_print_node(n))
1.11 +
1.12 # Invocations.
1.13
1.14 elif isinstance(n, compiler.ast.CallFunc):
1.15 @@ -914,6 +919,12 @@
1.16 if not args[argnum+1]:
1.17 args[argnum+1] = "__GETDEFAULT(&%s, %d)" % (target_structure, i)
1.18
1.19 + # Test for missing arguments.
1.20 +
1.21 + if None in args:
1.22 + raise TranslateError("Not all arguments supplied.",
1.23 + self.get_namespace_path(), n)
1.24 +
1.25 # Encode the arguments.
1.26
1.27 argstr = "__ARGS(%s)" % ", ".join(args)
1.28 @@ -1041,15 +1052,11 @@
1.29 if n.name in predefined_constants:
1.30 return PredefinedConstantRef(n.name)
1.31
1.32 - # Convert literal references.
1.33 + # Convert literal references, operator function names, and print
1.34 + # function names to references.
1.35
1.36 - elif n.name.startswith("$L"):
1.37 - ref = self.importer.get_module(self.name).special.get(n.name)
1.38 - return TrResolvedNameRef(n.name, ref)
1.39 -
1.40 - # Convert operator function names to references.
1.41 -
1.42 - elif n.name.startswith("$op"):
1.43 + elif n.name.startswith("$L") or n.name.startswith("$op") or \
1.44 + n.name.startswith("$print"):
1.45 ref = self.importer.get_module(self.name).special.get(n.name)
1.46 return TrResolvedNameRef(n.name, ref)
1.47