MCPcopy Create free account
hub / github.com/argotorg/solidity / replaceConstArgSwitch

Function replaceConstArgSwitch

libyul/optimiser/StructuralSimplifier.cpp:32–55  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

30{
31
32OptionalStatements replaceConstArgSwitch(Switch& _switchStmt, u256 const& _constExprVal)
33{
34 Block* matchingCaseBlock = nullptr;
35 Case* defaultCase = nullptr;
36
37 for (auto& _case: _switchStmt.cases)
38 {
39 if (_case.value && _case.value->value.value() == _constExprVal)
40 {
41 matchingCaseBlock = &_case.body;
42 break;
43 }
44 else if (!_case.value)
45 defaultCase = &_case;
46 }
47
48 if (!matchingCaseBlock && defaultCase)
49 matchingCaseBlock = &defaultCase->body;
50
51 if (matchingCaseBlock)
52 return util::make_vector<Statement>(std::move(*matchingCaseBlock));
53 else
54 return std::optional<std::vector<Statement>>{std::vector<Statement>{}};
55}
56
57std::optional<u256> hasLiteralValue(Expression const& _expression)
58{

Callers 1

simplifyMethod · 0.85

Calls 1

valueMethod · 0.45

Tested by

no test coverage detected