/// <summary> /// Compile a function call. Returns true if it's a call to return a value /// </summary> private static bool CompileFunctionCall(int level, bool debug, NanCodeWriter wr, Node node, Scope parameterNames) { var funcName = node.Text; if (Desugar.NeedsDesugaring(funcName)) { node = Desugar.ProcessNode(funcName, parameterNames, node); var frag = Compile(node, level + 1, debug, parameterNames, null, Context.Default); wr.Merge(frag); return(frag.ReturnsValues); } wr.Merge(Compile(node, level + 1, debug, parameterNames, null, Context.Default)); if (debug) { wr.Comment("// Function : \"" + funcName + "\" with " + node.Children.Count + " parameter(s)"); } if (funcName == "return") { wr.Return(node.Children.Count); } else { wr.FunctionCall(funcName, node.Children.Count); } return((funcName == "return") && (node.Children.Count > 0)); // is there a value return? }