From 883666d2c0cf602640a52b26d5ef7da9da3018f4 Mon Sep 17 00:00:00 2001 From: chriseth Date: Mon, 10 Jul 2017 18:30:41 +0200 Subject: Fix invalid "explicit storage keyword" warning for reference members of structs. --- Changelog.md | 1 + libsolidity/analysis/ReferencesResolver.cpp | 2 +- test/libsolidity/SolidityNameAndTypeResolution.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Changelog.md b/Changelog.md index b3a37590..9afb0679 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,6 +3,7 @@ Features: Bugfixes: + * Type Checker: Fix invalid "specify storage keyword" warning for reference members of structs. ### 0.4.13 (2017-07-06) diff --git a/libsolidity/analysis/ReferencesResolver.cpp b/libsolidity/analysis/ReferencesResolver.cpp index cc95c294..8f07d43a 100644 --- a/libsolidity/analysis/ReferencesResolver.cpp +++ b/libsolidity/analysis/ReferencesResolver.cpp @@ -295,7 +295,7 @@ void ReferencesResolver::endVisit(VariableDeclaration const& _variable) else { typeLoc = DataLocation::Storage; - if (!_variable.isStateVariable()) + if (_variable.isLocalVariable()) m_errorReporter.warning( _variable.location(), "Variable is declared as a storage pointer. " diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index 108128f7..3c49051e 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -6160,7 +6160,7 @@ BOOST_AUTO_TEST_CASE(warn_unspecified_storage) { char const* text = R"( contract C { - struct S { uint a; } + struct S { uint a; string b; } S x; function f() { S storage y = x; -- cgit v1.2.3