aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/analysis
diff options
context:
space:
mode:
Diffstat (limited to 'libsolidity/analysis')
-rw-r--r--libsolidity/analysis/TypeChecker.cpp21
1 files changed, 10 insertions, 11 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp
index 0c457039..0764bf67 100644
--- a/libsolidity/analysis/TypeChecker.cpp
+++ b/libsolidity/analysis/TypeChecker.cpp
@@ -318,17 +318,16 @@ void TypeChecker::checkFunctionOverride(FunctionDefinition const& function, Func
if (function.visibility() != super.visibility())
overrideError(function, super, "Overriding function visibility differs.");
- else if (function.isDeclaredConst() && !super.isDeclaredConst())
- overrideError(function, super, "Overriding function should not be declared constant.");
-
- else if (!function.isDeclaredConst() && super.isDeclaredConst())
- overrideError(function, super, "Overriding function should be declared constant.");
-
- else if (function.isPayable() && !super.isPayable())
- overrideError(function, super, "Overriding function should not be declared payable.");
-
- else if (!function.isPayable() && super.isPayable())
- overrideError(function, super, "Overriding function should be declared payable.");
+ else if (function.stateMutability() != super.stateMutability())
+ overrideError(
+ function,
+ super,
+ "Overriding function changes state mutability from \"" +
+ stateMutabilityToString(super.stateMutability()) +
+ "\" to \"" +
+ stateMutabilityToString(function.stateMutability()) +
+ "\"."
+ );
else if (functionType != superType)
overrideError(function, super, "Overriding function return types differ.");