mirror of
https://github.com/polserver/polserver
synced 2026-08-13 08:23:08 -04:00
* all except pol * pol and includes under defines * something weird has happened * remove own folder from include searchpath * fixed remaining, adapted include style for external headers * missing include
32 lines
1 KiB
C++
32 lines
1 KiB
C++
#include "bscript/compiler/optimizer/ShortCircuitCombiner.h"
|
|
|
|
#include "bscript/compiler/Report.h"
|
|
#include "bscript/compiler/ast/BinaryOperatorShortCircuit.h"
|
|
|
|
namespace Pol::Bscript::Compiler
|
|
{
|
|
class ShortCircuitCombinerChildVisitor : public NodeVisitor
|
|
{
|
|
public:
|
|
ShortCircuitCombinerChildVisitor() = default;
|
|
void visit_children( Node& ) override {};
|
|
void visit_binary_operator_short_circuit( BinaryOperatorShortCircuit& child ) override
|
|
{
|
|
// its a child so no need to add convert instruction
|
|
child.generate_logical_convert = false;
|
|
};
|
|
};
|
|
|
|
ShortCircuitCombiner::ShortCircuitCombiner( Report& ) {}
|
|
|
|
void ShortCircuitCombiner::visit_children( Node& ) {}
|
|
|
|
void ShortCircuitCombiner::visit_binary_operator_short_circuit( BinaryOperatorShortCircuit& op )
|
|
{
|
|
// dont visit recursivly just direct both sides
|
|
ShortCircuitCombinerChildVisitor lhs_child{};
|
|
op.lhs().accept( lhs_child );
|
|
ShortCircuitCombinerChildVisitor rhs_child{};
|
|
op.rhs().accept( rhs_child );
|
|
}
|
|
} // namespace Pol::Bscript::Compiler
|