internal static ErrorReporter ForEval (ErrorReporter reporter)
 {
     DefaultErrorReporter r = new DefaultErrorReporter ();
     r.forEval = true;
     r.chainedReporter = reporter;
     return r;
 }
        private static object JsConstructor(Context cx, IScriptable scope, object [] args)
        {
            int arglen = args.Length;

            System.Text.StringBuilder sourceBuf = new System.Text.StringBuilder();

            sourceBuf.Append("function ");

            /* version != 1.2 Function constructor behavior -
             * print 'anonymous' as the function name if the
             * version (under which the function was compiled) is
             * less than 1.2... or if it's greater than 1.2, because
             * we need to be closer to ECMA.
             */
            if (cx.Version != Context.Versions.JS1_2)
            {
                sourceBuf.Append("anonymous");
            }
            sourceBuf.Append('(');

            // Append arguments as coma separated strings
            for (int i = 0; i < arglen - 1; i++)
            {
                if (i > 0)
                {
                    sourceBuf.Append(',');
                }
                sourceBuf.Append(ScriptConvert.ToString(args [i]));
            }
            sourceBuf.Append(") {");
            if (arglen != 0)
            {
                // append function body
                string funBody = ScriptConvert.ToString(args [arglen - 1]);
                sourceBuf.Append(funBody);
            }
            sourceBuf.Append('}');
            string source = sourceBuf.ToString();

            int [] linep    = new int [1];
            string filename = Context.GetSourcePositionFromStack(linep);

            if (filename == null)
            {
                filename  = "<eval'ed string>";
                linep [0] = 1;
            }

            string sourceURI = ScriptRuntime.makeUrlForGeneratedScript(false, filename, linep [0]);

            IScriptable global = ScriptableObject.GetTopLevelScope(scope);

            ErrorReporter reporter;

            reporter = DefaultErrorReporter.ForEval(cx.ErrorReporter);

            // Compile with explicit interpreter instance to force interpreter
            // mode.
            return(cx.CompileFunction(global, source, new Interpreter(), reporter, sourceURI, 1, (object)null));
        }
Beispiel #3
0
        internal static ErrorReporter ForEval(ErrorReporter reporter)
        {
            DefaultErrorReporter r = new DefaultErrorReporter();

            r.forEval         = true;
            r.chainedReporter = reporter;
            return(r);
        }