aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-08-25 23:08:42 +0800
committerGitHub <noreply@github.com>2017-08-25 23:08:42 +0800
commit523e76332a460945454b79180b2a86531e15b051 (patch)
treeb7c5c5a4b8a84496d4a4d7845c50462d4acb0e40 /libsolidity
parentec6d8007db3577c7899a0ef531a8c9b632156860 (diff)
parentf6dba97fe174c95f9dd5defdd8f443c121f73956 (diff)
downloaddexon-solidity-523e76332a460945454b79180b2a86531e15b051.tar.gz
dexon-solidity-523e76332a460945454b79180b2a86531e15b051.tar.zst
dexon-solidity-523e76332a460945454b79180b2a86531e15b051.zip
Merge pull request #2813 from ethereum/tightpack-warn
Warn on using literals in tight packing
Diffstat (limited to 'libsolidity')
-rw-r--r--libsolidity/analysis/TypeChecker.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp
index 99f3c64c..d594a060 100644
--- a/libsolidity/analysis/TypeChecker.cpp
+++ b/libsolidity/analysis/TypeChecker.cpp
@@ -1446,6 +1446,28 @@ bool TypeChecker::visit(FunctionCall const& _functionCall)
_functionCall.annotation().type = make_shared<TupleType>(functionType->returnParameterTypes());
TypePointers parameterTypes = functionType->parameterTypes();
+
+ if (!functionType->padArguments())
+ {
+ for (size_t i = 0; i < arguments.size(); ++i)
+ {
+ auto const& argType = type(*arguments[i]);
+ if (auto literal = dynamic_cast<RationalNumberType const*>(argType.get()))
+ {
+ /* If no mobile type is available an error will be raised elsewhere. */
+ if (literal->mobileType())
+ m_errorReporter.warning(
+ _functionCall.location(),
+ "The type of \"" +
+ argType->toString() +
+ "\" was inferred as " +
+ literal->mobileType()->toString() +
+ ". This is probably not desired. Use an explicit type to silence this warning."
+ );
+ }
+ }
+ }
+
if (!functionType->takesArbitraryParameters() && parameterTypes.size() != arguments.size())
{
string msg =