mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge ea9a773d57
into 9bce5f91dc
This commit is contained in:
commit
6a9552ea16
@ -208,9 +208,18 @@ void SemVerMatchExpressionParser::parseMatchExpression()
|
|||||||
range.components.push_back(parseMatchComponent());
|
range.components.push_back(parseMatchComponent());
|
||||||
if (currentToken() == Token::Sub)
|
if (currentToken() == Token::Sub)
|
||||||
{
|
{
|
||||||
range.components[0].prefix = Token::GreaterThanOrEqual;
|
|
||||||
nextToken();
|
nextToken();
|
||||||
range.components.push_back(parseMatchComponent());
|
range.components.push_back(parseMatchComponent());
|
||||||
|
|
||||||
|
if (TokenTraits::isPragmaOp(range.components[0].prefix) || TokenTraits::isPragmaOp(range.components[1].prefix))
|
||||||
|
{
|
||||||
|
solThrow(
|
||||||
|
SemVerError,
|
||||||
|
"You cannot use operators (<, <=, >=, >, ^) with version ranges (-)."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
range.components[0].prefix = Token::GreaterThanOrEqual;
|
||||||
range.components[1].prefix = Token::LessThanOrEqual;
|
range.components[1].prefix = Token::LessThanOrEqual;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -299,6 +299,7 @@ namespace TokenTraits
|
|||||||
op == Token::Add || op == Token::Mul || op == Token::Equal || op == Token::NotEqual; }
|
op == Token::Add || op == Token::Mul || op == Token::Equal || op == Token::NotEqual; }
|
||||||
constexpr bool isArithmeticOp(Token op) { return Token::Add <= op && op <= Token::Exp; }
|
constexpr bool isArithmeticOp(Token op) { return Token::Add <= op && op <= Token::Exp; }
|
||||||
constexpr bool isCompareOp(Token op) { return Token::Equal <= op && op <= Token::GreaterThanOrEqual; }
|
constexpr bool isCompareOp(Token op) { return Token::Equal <= op && op <= Token::GreaterThanOrEqual; }
|
||||||
|
constexpr bool isPragmaOp(Token op) { return (Token::LessThan <= op && op <= Token::GreaterThanOrEqual) || op == Token::BitXor; }
|
||||||
|
|
||||||
constexpr bool isBitOp(Token op) { return (Token::BitOr <= op && op <= Token::BitAnd) || op == Token::BitNot; }
|
constexpr bool isBitOp(Token op) { return (Token::BitOr <= op && op <= Token::BitAnd) || op == Token::BitNot; }
|
||||||
constexpr bool isBooleanOp(Token op) { return (Token::Or <= op && op <= Token::And) || op == Token::Not; }
|
constexpr bool isBooleanOp(Token op) { return (Token::Or <= op && op <= Token::And) || op == Token::Not; }
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
pragma solidity <0.8.17 - 0.8.20;
|
||||||
|
// ----
|
||||||
|
// ParserError 1684: (0-33): Invalid version pragma. You cannot use operators (<, <=, >=, >, ^) with version ranges (-).
|
@ -0,0 +1,3 @@
|
|||||||
|
pragma solidity 0.8.17 - >0.8.20;
|
||||||
|
// ----
|
||||||
|
// ParserError 1684: (0-33): Invalid version pragma. You cannot use operators (<, <=, >=, >, ^) with version ranges (-).
|
@ -0,0 +1,3 @@
|
|||||||
|
pragma solidity 0.8.14 || 0.8.17 - >0.8.20;
|
||||||
|
// ----
|
||||||
|
// ParserError 1684: (0-43): Invalid version pragma. You cannot use operators (<, <=, >=, >, ^) with version ranges (-).
|
@ -0,0 +1,2 @@
|
|||||||
|
pragma solidity 0.8.17 - 0.8.20;
|
||||||
|
// ----
|
@ -0,0 +1,2 @@
|
|||||||
|
pragma solidity <0.8.15 || 0.8.17 - 0.8.20;
|
||||||
|
// ----
|
Loading…
Reference in New Issue
Block a user