Simplify switch statements by refactoring internal break statements

This commit is contained in:
Alex Beregszaszi 2017-09-25 09:41:04 +01:00
parent 74972f5fa6
commit cb6cdfe780
2 changed files with 24 additions and 24 deletions

View File

@ -596,7 +596,6 @@ void CompilerUtils::convertType(
storeInMemoryDynamic(IntegerType(256)); storeInMemoryDynamic(IntegerType(256));
// stack: mempos datapos // stack: mempos datapos
storeStringData(data); storeStringData(data);
break;
} }
else else
solAssert( solAssert(
@ -820,15 +819,16 @@ void CompilerUtils::convertType(
// stack: <address> <function_id> // stack: <address> <function_id>
m_context << Instruction::POP; m_context << Instruction::POP;
break;
} }
else
// All other types should not be convertible to non-equal types. {
solAssert(_typeOnStack == _targetType, "Invalid type conversion requested."); // All other types should not be convertible to non-equal types.
if (_cleanupNeeded && _targetType.canBeStored() && _targetType.storageBytes() < 32) solAssert(_typeOnStack == _targetType, "Invalid type conversion requested.");
if (_cleanupNeeded && _targetType.canBeStored() && _targetType.storageBytes() < 32)
m_context m_context
<< ((u256(1) << (8 * _targetType.storageBytes())) - 1) << ((u256(1) << (8 * _targetType.storageBytes())) - 1)
<< Instruction::AND; << Instruction::AND;
}
break; break;
} }

View File

@ -1051,26 +1051,26 @@ bool ExpressionCompiler::visit(MemberAccess const& _memberAccess)
else else
alsoSearchInteger = true; alsoSearchInteger = true;
if (!alsoSearchInteger) if (alsoSearchInteger)
break;
if (member == "balance")
{ {
utils().convertType( if (member == "balance")
*_memberAccess.expression().annotation().type, {
IntegerType(0, IntegerType::Modifier::Address), utils().convertType(
true *_memberAccess.expression().annotation().type,
); IntegerType(0, IntegerType::Modifier::Address),
m_context << Instruction::BALANCE; true
);
m_context << Instruction::BALANCE;
}
else if ((set<string>{"send", "transfer", "call", "callcode", "delegatecall"}).count(member))
utils().convertType(
*_memberAccess.expression().annotation().type,
IntegerType(0, IntegerType::Modifier::Address),
true
);
else
solAssert(false, "Invalid member access to integer");
} }
else if ((set<string>{"send", "transfer", "call", "callcode", "delegatecall"}).count(member))
utils().convertType(
*_memberAccess.expression().annotation().type,
IntegerType(0, IntegerType::Modifier::Address),
true
);
else
solAssert(false, "Invalid member access to integer");
break; break;
} }
case Type::Category::Function: case Type::Category::Function: