aboutsummaryrefslogtreecommitdiffstats
path: root/libjulia/optimiser/ASTCopier.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libjulia/optimiser/ASTCopier.cpp')
-rw-r--r--libjulia/optimiser/ASTCopier.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/libjulia/optimiser/ASTCopier.cpp b/libjulia/optimiser/ASTCopier.cpp
index a461f434..5c47be64 100644
--- a/libjulia/optimiser/ASTCopier.cpp
+++ b/libjulia/optimiser/ASTCopier.cpp
@@ -37,6 +37,11 @@ Statement ASTCopier::operator()(Instruction const&)
return {};
}
+Statement ASTCopier::operator()(ExpressionStatement const& _statement)
+{
+ return ExpressionStatement{ _statement.location, translate(_statement.expression) };
+}
+
Statement ASTCopier::operator()(VariableDeclaration const& _varDecl)
{
return VariableDeclaration{
@@ -67,7 +72,7 @@ Statement ASTCopier::operator()(Label const&)
return {};
}
-Statement ASTCopier::operator()(FunctionCall const& _call)
+Expression ASTCopier::operator()(FunctionCall const& _call)
{
return FunctionCall{
_call.location,
@@ -76,7 +81,7 @@ Statement ASTCopier::operator()(FunctionCall const& _call)
};
}
-Statement ASTCopier::operator()(FunctionalInstruction const& _instruction)
+Expression ASTCopier::operator()(FunctionalInstruction const& _instruction)
{
return FunctionalInstruction{
_instruction.location,
@@ -85,12 +90,12 @@ Statement ASTCopier::operator()(FunctionalInstruction const& _instruction)
};
}
-Statement ASTCopier::operator()(Identifier const& _identifier)
+Expression ASTCopier::operator()(Identifier const& _identifier)
{
return Identifier{_identifier.location, translateIdentifier(_identifier.name)};
}
-Statement ASTCopier::operator()(Literal const& _literal)
+Expression ASTCopier::operator()(Literal const& _literal)
{
return translate(_literal);
}
@@ -140,9 +145,14 @@ Statement ASTCopier::operator ()(Block const& _block)
return translate(_block);
}
+Expression ASTCopier::translate(Expression const& _expression)
+{
+ return _expression.apply_visitor(static_cast<ExpressionCopier&>(*this));
+}
+
Statement ASTCopier::translate(Statement const& _statement)
{
- return boost::apply_visitor(*this, _statement);
+ return _statement.apply_visitor(static_cast<StatementCopier&>(*this));
}
Block ASTCopier::translate(Block const& _block)