mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #1155 from ethereum/suggestcorrectversion
Suggest correct version for pragma.
This commit is contained in:
commit
e98d7f4ba4
@ -52,13 +52,22 @@ void SyntaxChecker::endVisit(SourceUnit const& _sourceUnit)
|
|||||||
{
|
{
|
||||||
if (!m_versionPragmaFound)
|
if (!m_versionPragmaFound)
|
||||||
{
|
{
|
||||||
|
string errorString("Source file does not specify required compiler version!");
|
||||||
|
SemVerVersion recommendedVersion{string(VersionString)};
|
||||||
|
if (!recommendedVersion.isPrerelease())
|
||||||
|
errorString +=
|
||||||
|
"Consider adding \"pragma solidity ^" +
|
||||||
|
to_string(recommendedVersion.major()) +
|
||||||
|
string(".") +
|
||||||
|
to_string(recommendedVersion.minor()) +
|
||||||
|
string(".") +
|
||||||
|
to_string(recommendedVersion.patch());
|
||||||
|
string(";\"");
|
||||||
|
|
||||||
auto err = make_shared<Error>(Error::Type::Warning);
|
auto err = make_shared<Error>(Error::Type::Warning);
|
||||||
*err <<
|
*err <<
|
||||||
errinfo_sourceLocation(_sourceUnit.location()) <<
|
errinfo_sourceLocation(_sourceUnit.location()) <<
|
||||||
errinfo_comment(
|
errinfo_comment(errorString);
|
||||||
string("Source file does not specify required compiler version! ") +
|
|
||||||
string("Consider adding \"pragma solidity ^") + VersionNumber + string(";\".")
|
|
||||||
);
|
|
||||||
m_errors.push_back(err);
|
m_errors.push_back(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,8 +21,10 @@
|
|||||||
* Full-stack compiler that converts a source code string to bytecode.
|
* Full-stack compiler that converts a source code string to bytecode.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <libsolidity/interface/CompilerStack.h>
|
||||||
#include <boost/filesystem.hpp>
|
|
||||||
|
#include <libsolidity/interface/Version.h>
|
||||||
|
#include <libsolidity/analysis/SemVerHandler.h>
|
||||||
#include <libsolidity/ast/AST.h>
|
#include <libsolidity/ast/AST.h>
|
||||||
#include <libsolidity/parsing/Scanner.h>
|
#include <libsolidity/parsing/Scanner.h>
|
||||||
#include <libsolidity/parsing/Parser.h>
|
#include <libsolidity/parsing/Parser.h>
|
||||||
@ -32,12 +34,15 @@
|
|||||||
#include <libsolidity/analysis/DocStringAnalyser.h>
|
#include <libsolidity/analysis/DocStringAnalyser.h>
|
||||||
#include <libsolidity/analysis/SyntaxChecker.h>
|
#include <libsolidity/analysis/SyntaxChecker.h>
|
||||||
#include <libsolidity/codegen/Compiler.h>
|
#include <libsolidity/codegen/Compiler.h>
|
||||||
#include <libsolidity/interface/CompilerStack.h>
|
|
||||||
#include <libsolidity/interface/InterfaceHandler.h>
|
#include <libsolidity/interface/InterfaceHandler.h>
|
||||||
#include <libsolidity/formal/Why3Translator.h>
|
#include <libsolidity/formal/Why3Translator.h>
|
||||||
|
|
||||||
#include <libdevcore/SHA3.h>
|
#include <libdevcore/SHA3.h>
|
||||||
|
|
||||||
|
#include <boost/algorithm/string.hpp>
|
||||||
|
#include <boost/filesystem.hpp>
|
||||||
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace dev;
|
using namespace dev;
|
||||||
using namespace dev::solidity;
|
using namespace dev::solidity;
|
||||||
@ -100,6 +105,13 @@ bool CompilerStack::parse()
|
|||||||
m_errors.clear();
|
m_errors.clear();
|
||||||
m_parseSuccessful = false;
|
m_parseSuccessful = false;
|
||||||
|
|
||||||
|
if (SemVerVersion{string(VersionString)}.isPrerelease())
|
||||||
|
{
|
||||||
|
auto err = make_shared<Error>(Error::Type::Warning);
|
||||||
|
*err << errinfo_comment("This is a pre-release compiler version, please do not use it in production.");
|
||||||
|
m_errors.push_back(err);
|
||||||
|
}
|
||||||
|
|
||||||
vector<string> sourcesToParse;
|
vector<string> sourcesToParse;
|
||||||
for (auto const& s: m_sources)
|
for (auto const& s: m_sources)
|
||||||
sourcesToParse.push_back(s.first);
|
sourcesToParse.push_back(s.first);
|
||||||
|
Loading…
Reference in New Issue
Block a user