Pass parsed block statements as reference instead of value
This commit is contained in:
@@ -9,9 +9,9 @@ BoundScriptStatement *Binder::Bind(Script* script, ParsedScriptStatement *s, Bou
|
||||
|
||||
binder._scope = scriptScope;
|
||||
auto statements = s->GetStatements();
|
||||
vector<BoundStatement*> boundStatements (statements.size());
|
||||
for (int i = 0; i < statements.size(); i++){
|
||||
boundStatements[i] = binder.BindStatement(statements[i]);
|
||||
vector<BoundStatement*> boundStatements (statements->size());
|
||||
for (int i = 0; i < statements->size(); i++){
|
||||
boundStatements[i] = binder.BindStatement(statements->at(i));
|
||||
}
|
||||
return new BoundScriptStatement(boundStatements, scriptScope->GetDeepestScope());
|
||||
}
|
||||
@@ -36,10 +36,10 @@ BoundStatement* Binder::BindStatement(ParsedStatement* statement){
|
||||
|
||||
BoundStatement *Binder::BindBlockStatement(ParsedStatement *statement) {
|
||||
auto statements = ((ParsedBlockStatement*)statement)->GetStatements();
|
||||
vector<BoundStatement*> boundStatements (statements.size());
|
||||
vector<BoundStatement*> boundStatements (statements->size());
|
||||
this->_scope->GoInnerScope();
|
||||
for (int i = 0; i < statements.size(); i++){
|
||||
boundStatements[i] = this -> BindStatement(statements[i]);
|
||||
for (int i = 0; i < statements->size(); i++){
|
||||
boundStatements[i] = this -> BindStatement(statements->at(i));
|
||||
}
|
||||
this->_scope->GoOuterScope();
|
||||
return new BoundBlockStatement(boundStatements);
|
||||
|
||||
@@ -77,8 +77,8 @@ public:
|
||||
return ParsedStatementKind ::Block;
|
||||
}
|
||||
|
||||
std::vector<ParsedStatement*> GetStatements(){
|
||||
return _statements;
|
||||
std::vector<ParsedStatement*>* GetStatements(){
|
||||
return &_statements;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -399,7 +399,7 @@ ParsedExpression* Parser::ParseTableExpression(IToken* current){
|
||||
else {
|
||||
auto block = (ParsedBlockStatement*)this -> ParseBlock({TokenKind ::CloseCurlyBracket});
|
||||
auto statements = block->GetStatements();
|
||||
statements.insert(statements.begin(), firstItem);
|
||||
statements->insert(statements->begin(), firstItem);
|
||||
throw "not implemented TODO";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user