Example #1
0
        private void TranslateFunctionHeader(FunctionDeclaration fdecl, IEnumerable<Identifier> parameters)
        {
            Write("function ");
            if (null != fdecl && null != fdecl.Id)
            {
                Emit(fdecl.Id);
            }

            Write("(");
            bool first = true;
            foreach (var p in parameters)
            {
                if (first) first = false; else Write(", ");
                Write(p.Name);
            }

            Write(") ");

        }
Example #2
0
        /// <summary>
        /// http://www.ecma-international.org/ecma-262/5.1/#sec-13.2
        /// </summary>
        /// <param name="functionDeclaration"></param>
        /// <returns></returns>
        public FunctionInstance CreateFunctionObject(FunctionDeclaration functionDeclaration)
        {
            var functionObject = new ScriptFunctionInstance(
                Engine,
                functionDeclaration,
                LexicalEnvironment.NewDeclarativeEnvironment(Engine, Engine.ExecutionContext.LexicalEnvironment),
                functionDeclaration.Strict
                ) { Extensible = true };

            return functionObject;
        }
Example #3
0
        private void EmitFunctionDeclaration(FunctionDeclaration fdecl)
        {
            WriteSeparator();
            TranslateFunctionHeader(fdecl, fdecl.Parameters);

            using (var ec = new ExpressionContext(this, OperatorInfo.Body))
            {
                Emit(fdecl.Body);
            }
        }