aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-09-12 23:57:55 +0800
committerGitHub <noreply@github.com>2017-09-12 23:57:55 +0800
commit5084a9cda9ed913e50cf393d21764a620827191c (patch)
tree579ff7b68fc24ff60431250ff02388b3c46e34bd
parent14f103ca6024722cdbfb0a1c2a3837df635fbdef (diff)
parent10d290cb9b131f620c56c0bc84a9ab5bcf50368b (diff)
downloaddexon-solidity-5084a9cda9ed913e50cf393d21764a620827191c.tar
dexon-solidity-5084a9cda9ed913e50cf393d21764a620827191c.tar.gz
dexon-solidity-5084a9cda9ed913e50cf393d21764a620827191c.tar.bz2
dexon-solidity-5084a9cda9ed913e50cf393d21764a620827191c.tar.lz
dexon-solidity-5084a9cda9ed913e50cf393d21764a620827191c.tar.xz
dexon-solidity-5084a9cda9ed913e50cf393d21764a620827191c.tar.zst
dexon-solidity-5084a9cda9ed913e50cf393d21764a620827191c.zip
Merge pull request #2852 from ssuman/develop
This commit will display warning when there is unused function parameter
-rw-r--r--Changelog.md1
-rw-r--r--libsolidity/analysis/StaticAnalyzer.cpp11
-rw-r--r--test/libsolidity/SolidityNameAndTypeResolution.cpp14
3 files changed, 18 insertions, 8 deletions
diff --git a/Changelog.md b/Changelog.md
index f61bb560..d3627565 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -2,6 +2,7 @@
Features:
* Optimizer: Add new optimization step to remove unused ``JUMPDEST``s.
+ * Type Checker: Display helpful warning for unused function arguments/return parameters.
* Type Checker: Do not show the same error multiple times for events.
* Type Checker: Warn on using literals as tight packing parameters in ``keccak256``, ``sha3``, ``sha256`` and ``ripemd160``.
diff --git a/libsolidity/analysis/StaticAnalyzer.cpp b/libsolidity/analysis/StaticAnalyzer.cpp
index 2f130414..d012c25d 100644
--- a/libsolidity/analysis/StaticAnalyzer.cpp
+++ b/libsolidity/analysis/StaticAnalyzer.cpp
@@ -69,7 +69,16 @@ void StaticAnalyzer::endVisit(FunctionDefinition const&)
m_constructor = false;
for (auto const& var: m_localVarUseCount)
if (var.second == 0)
- m_errorReporter.warning(var.first->location(), "Unused local variable");
+ {
+ if (var.first->isCallableParameter())
+ m_errorReporter.warning(
+ var.first->location(),
+ "Unused function parameter. Remove or comment out the variable name to silence this warning."
+ );
+ else
+ m_errorReporter.warning(var.first->location(), "Unused local variable.");
+ }
+
m_localVarUseCount.clear();
}
diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp
index 7bef8fec..1fbc55a2 100644
--- a/test/libsolidity/SolidityNameAndTypeResolution.cpp
+++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp
@@ -5816,7 +5816,7 @@ BOOST_AUTO_TEST_CASE(warn_unused_local)
}
}
)";
- CHECK_WARNING(text, "Unused");
+ CHECK_WARNING(text, "Unused local variable.");
}
BOOST_AUTO_TEST_CASE(warn_unused_local_assigned)
@@ -5828,10 +5828,10 @@ BOOST_AUTO_TEST_CASE(warn_unused_local_assigned)
}
}
)";
- CHECK_WARNING(text, "Unused");
+ CHECK_WARNING(text, "Unused local variable.");
}
-BOOST_AUTO_TEST_CASE(warn_unused_param)
+BOOST_AUTO_TEST_CASE(warn_unused_function_parameter)
{
char const* text = R"(
contract C {
@@ -5839,7 +5839,7 @@ BOOST_AUTO_TEST_CASE(warn_unused_param)
}
}
)";
- CHECK_WARNING(text, "Unused");
+ CHECK_WARNING(text, "Unused function parameter. Remove or comment out the variable name to silence this warning.");
text = R"(
contract C {
function f(uint a) {
@@ -5849,7 +5849,7 @@ BOOST_AUTO_TEST_CASE(warn_unused_param)
success(text);
}
-BOOST_AUTO_TEST_CASE(warn_unused_return_param)
+BOOST_AUTO_TEST_CASE(warn_unused_return_parameter)
{
char const* text = R"(
contract C {
@@ -5857,7 +5857,7 @@ BOOST_AUTO_TEST_CASE(warn_unused_return_param)
}
}
)";
- CHECK_WARNING(text, "Unused");
+ CHECK_WARNING(text, "Unused function parameter. Remove or comment out the variable name to silence this warning.");
text = R"(
contract C {
function f() returns (uint a) {
@@ -5865,7 +5865,7 @@ BOOST_AUTO_TEST_CASE(warn_unused_return_param)
}
}
)";
- CHECK_WARNING(text, "Unused");
+ CHECK_WARNING(text, "Unused function parameter. Remove or comment out the variable name to silence this warning.");
text = R"(
contract C {
function f() returns (uint) {