mirror of
https://github.com/Samsung/escargot.git
synced 2026-06-22 10:01:50 +00:00
implement eval
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
This commit is contained in:
parent
52dc57eca5
commit
35142d1c6a
17 changed files with 252 additions and 49 deletions
|
|
@ -72,7 +72,7 @@ CodeBlock* ScriptParser::generateCodeBlockTreeFromAST(Context* ctx, StringView s
|
|||
return generateCodeBlockTreeFromASTWalker(ctx, source, script, program->scopeContext(), nullptr);
|
||||
}
|
||||
|
||||
ScriptParser::ScriptParserResult ScriptParser::parse(StringView scriptSource, String* fileName)
|
||||
ScriptParser::ScriptParserResult ScriptParser::parse(StringView scriptSource, String* fileName, CodeBlock* parentCodeBlock)
|
||||
{
|
||||
Script* script = nullptr;
|
||||
ScriptParseError* error = nullptr;
|
||||
|
|
@ -80,7 +80,15 @@ ScriptParser::ScriptParserResult ScriptParser::parse(StringView scriptSource, St
|
|||
ProgramNode* program = esprima::parseProgram(m_context, scriptSource, nullptr);
|
||||
|
||||
script = new Script(fileName);
|
||||
CodeBlock* topCodeBlock = generateCodeBlockTreeFromAST(m_context, scriptSource, script, program);
|
||||
CodeBlock* topCodeBlock;
|
||||
if (parentCodeBlock) {
|
||||
program->scopeContext()->m_hasEval = parentCodeBlock->hasEvalWithYield();
|
||||
program->scopeContext()->m_hasWith = parentCodeBlock->hasEvalWithYield();
|
||||
program->scopeContext()->m_hasYield = parentCodeBlock->hasEvalWithYield();
|
||||
topCodeBlock = generateCodeBlockTreeFromASTWalker(m_context, scriptSource, script, program->scopeContext(), parentCodeBlock);
|
||||
} else {
|
||||
topCodeBlock = generateCodeBlockTreeFromAST(m_context, scriptSource, script, program);
|
||||
}
|
||||
topCodeBlock->m_cachedASTNode = program;
|
||||
script->m_topCodeBlock = topCodeBlock;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue