mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
"Operator has not been user-defined." is displayed only is operator can be user-defined
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
#pragma once
|
||||
|
||||
#include <liblangutil/Token.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace solidity::frontend
|
||||
{
|
||||
|
||||
std::vector<langutil::Token> const overridableOperators = {
|
||||
langutil::Token::BitOr,
|
||||
langutil::Token::BitAnd,
|
||||
langutil::Token::BitXor,
|
||||
langutil::Token::Add,
|
||||
langutil::Token::Sub,
|
||||
langutil::Token::Mul,
|
||||
langutil::Token::Div,
|
||||
langutil::Token::Mod,
|
||||
langutil::Token::Equal,
|
||||
langutil::Token::NotEqual,
|
||||
langutil::Token::LessThan,
|
||||
langutil::Token::GreaterThan,
|
||||
langutil::Token::LessThanOrEqual,
|
||||
langutil::Token::GreaterThanOrEqual,
|
||||
langutil::Token::BitNot,
|
||||
langutil::Token::SHL,
|
||||
langutil::Token::SAR,
|
||||
langutil::Token::Exp,
|
||||
langutil::Token::Not
|
||||
};
|
||||
|
||||
}
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include <libsolidity/ast/AST.h>
|
||||
#include <libsolidity/ast/TypeProvider.h>
|
||||
#include <libsolidity/ast/OverridableOperators.h>
|
||||
|
||||
#include <libsolidity/analysis/ConstantEvaluator.h>
|
||||
|
||||
@@ -387,7 +388,7 @@ vector<UsingForDirective const*> usingForDirectivesForType(Type const& _type, AS
|
||||
|
||||
Result<FunctionDefinition const*> Type::userDefinedOperator(Token _token, ASTNode const& _scope, bool _unaryOperation) const
|
||||
{
|
||||
if (!typeDefinition())
|
||||
if (!typeDefinition() || !util::contains(overridableOperators, _token))
|
||||
return nullptr;
|
||||
|
||||
set<FunctionDefinition const*> matchingDefinitions;
|
||||
|
||||
Reference in New Issue
Block a user