internal static IDynamic Eval(IEnvironment environment, IArgs args) { var x = args[0]; if (x.TypeCode != LanguageTypeCode.String) { return(x); } var compiler = new CompilerService(environment); var context = environment.Context; var e = compiler.CompileEvalCode(x.ConvertToString().BaseValue, context.Strict); using (var c = environment.EnterContext()) { c.ThisBinding = context.ThisBinding; c.LexicalEnviroment = context.LexicalEnviroment; c.VariableEnviroment = context.VariableEnviroment; if (e.Strict) { var s = context.LexicalEnviroment.NewDeclarativeEnvironment(); c.LexicalEnviroment = s; c.VariableEnviroment = s; } return(e.Code(environment, environment.EmptyArgs)); } }
internal static IDynamic Eval(IEnvironment environment, IArgs args) { var x = args[0]; if (x.TypeCode != LanguageTypeCode.String) { return x; } var compiler = new CompilerService(environment); var context = environment.Context; var e = compiler.CompileEvalCode(x.ConvertToString().BaseValue, context.Strict); using (var c = environment.EnterContext()) { c.ThisBinding = context.ThisBinding; c.LexicalEnviroment = context.LexicalEnviroment; c.VariableEnviroment = context.VariableEnviroment; if (e.Strict) { var s = context.LexicalEnviroment.NewDeclarativeEnvironment(); c.LexicalEnviroment = s; c.VariableEnviroment = s; } return e.Code(environment, environment.EmptyArgs); } }