mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #2734 from chriseth/sol_fixOperators
Disallow some binary operators.
This commit is contained in:
commit
068d8d0f45
1
Token.h
1
Token.h
@ -366,6 +366,7 @@ public:
|
||||
}
|
||||
|
||||
static bool isBitOp(Value op) { return (BitOr <= op && op <= SHR) || op == BitNot; }
|
||||
static bool isBooleanOp(Value op) { return (Or <= op && op <= And) || op == Not; }
|
||||
static bool isUnaryOp(Value op) { return (Not <= op && op <= Delete) || op == Add || op == Sub || op == After; }
|
||||
static bool isCountOp(Value op) { return op == Inc || op == Dec; }
|
||||
static bool isShiftOp(Value op) { return (SHL <= op) && (op <= SHR); }
|
||||
|
@ -313,6 +313,8 @@ TypePointer IntegerType::binaryOperatorResult(Token::Value _operator, TypePointe
|
||||
// All integer types can be compared
|
||||
if (Token::isCompareOp(_operator))
|
||||
return commonType;
|
||||
if (Token::isBooleanOp(_operator))
|
||||
return TypePointer();
|
||||
// Nothing else can be done with addresses
|
||||
if (commonType->isAddress())
|
||||
return TypePointer();
|
||||
|
4
Types.h
4
Types.h
@ -409,6 +409,10 @@ public:
|
||||
DataLocation location() const { return m_location; }
|
||||
|
||||
virtual TypePointer unaryOperatorResult(Token::Value _operator) const override;
|
||||
virtual TypePointer binaryOperatorResult(Token::Value, TypePointer const&) const override
|
||||
{
|
||||
return TypePointer();
|
||||
}
|
||||
virtual unsigned memoryHeadSize() const override { return 32; }
|
||||
|
||||
/// @returns a copy of this type with location (recursively) changed to @a _location,
|
||||
|
Loading…
Reference in New Issue
Block a user