#include "ElementAssignment.h" #include #include "bscript/compiler/ast/ElementIndexes.h" #include "bscript/compiler/ast/NodeVisitor.h" namespace Pol::Bscript::Compiler { ElementAssignment::ElementAssignment( const SourceLocation& source_location, bool consume, std::unique_ptr entity, std::unique_ptr indexes, std::unique_ptr rhs ) : Expression( source_location ), consume( consume ) { children.reserve( 3 ); children.push_back( std::move( entity ) ); children.push_back( std::move( indexes ) ); children.push_back( std::move( rhs ) ); } void ElementAssignment::accept( NodeVisitor& visitor ) { visitor.visit_element_assignment( *this ); } void ElementAssignment::describe_to( fmt::Writer& w ) const { w << "element-assignment"; } ElementIndexes& ElementAssignment::indexes() { return child( 1 ); } std::unique_ptr ElementAssignment::take_entity() { return take_child( 0 ); } std::unique_ptr ElementAssignment::take_indexes() { return take_child( 1 ); } std::unique_ptr ElementAssignment::take_rhs() { return take_child( 2 ); } } // namespace Pol::Bscript::Compiler