diff --git a/mozilla/js/rhino/docs/rhino16R2.html b/mozilla/js/rhino/docs/rhino16R2.html index 0f4a09fe234..3978f7e7297 100644 --- a/mozilla/js/rhino/docs/rhino16R2.html +++ b/mozilla/js/rhino/docs/rhino16R2.html @@ -360,6 +360,22 @@ rethrown erro... + + + 306825 + + Allow to use shell.Global in servlets + + + + + + 309029 + + Exception when evaluating recursive function + + + diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/Context.java b/mozilla/js/rhino/src/org/mozilla/javascript/Context.java index f799936c922..cb21268efa9 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/Context.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/Context.java @@ -2182,6 +2182,9 @@ public class Context } Parser p = new Parser(compilerEnv, compilationErrorReporter); + if (returnFunction) { + p.calledByCompileFunction = true; + } ScriptOrFnNode tree; if (sourceString != null) { tree = p.parse(sourceString, sourceName, lineno); diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/Parser.java b/mozilla/js/rhino/src/org/mozilla/javascript/Parser.java index 0db84dfc3fa..29e611673a9 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/Parser.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/Parser.java @@ -68,6 +68,7 @@ public class Parser CompilerEnvirons compilerEnv; private ErrorReporter errorReporter; private String sourceURI; + boolean calledByCompileFunction; private TokenStream ts; private int currentFlaggedToken; @@ -340,7 +341,9 @@ public class Parser if (tt == Token.FUNCTION) { consumeToken(); try { - n = function(FunctionNode.FUNCTION_STATEMENT); + n = function(calledByCompileFunction + ? FunctionNode.FUNCTION_EXPRESSION + : FunctionNode.FUNCTION_STATEMENT); } catch (ParserException e) { break; }