mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Use fully qualified name of super in message
This commit is contained in:
parent
a5ceaac8df
commit
ff5bb54e3c
@ -1950,13 +1950,12 @@ void TypeChecker::requireLValue(Expression const& _expression)
|
|||||||
m_errorReporter.typeError(_expression.location(), "Expression has to be an lvalue.");
|
m_errorReporter.typeError(_expression.location(), "Expression has to be an lvalue.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TypeChecker::overrideTypeError(FunctionDefinition const& function, FunctionDefinition const& super)
|
void TypeChecker::overrideTypeError(FunctionDefinition const& function, FunctionDefinition const& super)
|
||||||
{
|
{
|
||||||
string message;
|
string message;
|
||||||
|
|
||||||
if (function.visibility() != super.visibility())
|
if (function.visibility() != super.visibility())
|
||||||
message = "Overriding function visibility differs from extended function.";
|
message = "Overriding function visibility differs from " + super.fullyQualifiedName() + ".";
|
||||||
else if (function.isDeclaredConst() && !super.isDeclaredConst())
|
else if (function.isDeclaredConst() && !super.isDeclaredConst())
|
||||||
message = "Overriding function should not be declared constant.";
|
message = "Overriding function should not be declared constant.";
|
||||||
else if (!function.isDeclaredConst() && super.isDeclaredConst())
|
else if (!function.isDeclaredConst() && super.isDeclaredConst())
|
||||||
@ -1972,11 +1971,11 @@ void TypeChecker::overrideTypeError(FunctionDefinition const& function, Function
|
|||||||
FunctionType superType(super);
|
FunctionType superType(super);
|
||||||
|
|
||||||
if (functionType != superType)
|
if (functionType != superType)
|
||||||
message = "Overriding function return types differ from extended function.";
|
message = "Overriding function return types differ from " + super.fullyQualifiedName() + ".";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.empty())
|
if (message.empty())
|
||||||
message = "Override changes extended function signature.";
|
message = "Overriding function signature differs from " + super.fullyQualifiedName() + ".";
|
||||||
|
|
||||||
m_errorReporter.typeError(function.location(), message);
|
m_errorReporter.typeError(function.location(), message);
|
||||||
}
|
}
|
||||||
|
@ -371,6 +371,15 @@ string FunctionDefinition::externalSignature() const
|
|||||||
return FunctionType(*this).externalSignature();
|
return FunctionType(*this).externalSignature();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string FunctionDefinition::fullyQualifiedName() const
|
||||||
|
{
|
||||||
|
auto const* contract = dynamic_cast<ContractDefinition const*>(scope());
|
||||||
|
solAssert(contract, "Enclosing scope of function definition was not set.");
|
||||||
|
|
||||||
|
auto fname = name().empty() ? "<fallback>" : name();
|
||||||
|
return sourceUnitName() + ":" + contract->name() + "." + fname;
|
||||||
|
}
|
||||||
|
|
||||||
FunctionDefinitionAnnotation& FunctionDefinition::annotation() const
|
FunctionDefinitionAnnotation& FunctionDefinition::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
|
@ -613,6 +613,7 @@ public:
|
|||||||
std::vector<ASTPointer<ModifierInvocation>> const& modifiers() const { return m_functionModifiers; }
|
std::vector<ASTPointer<ModifierInvocation>> const& modifiers() const { return m_functionModifiers; }
|
||||||
std::vector<ASTPointer<VariableDeclaration>> const& returnParameters() const { return m_returnParameters->parameters(); }
|
std::vector<ASTPointer<VariableDeclaration>> const& returnParameters() const { return m_returnParameters->parameters(); }
|
||||||
Block const& body() const { solAssert(m_body, ""); return *m_body; }
|
Block const& body() const { solAssert(m_body, ""); return *m_body; }
|
||||||
|
std::string fullyQualifiedName() const;
|
||||||
virtual bool isVisibleInContract() const override
|
virtual bool isVisibleInContract() const override
|
||||||
{
|
{
|
||||||
return Declaration::isVisibleInContract() && !isConstructor() && !isFallback();
|
return Declaration::isVisibleInContract() && !isConstructor() && !isFallback();
|
||||||
|
Loading…
Reference in New Issue
Block a user