Browse Source

Merge pull request #1824 from LianaHus/sol_ConverterFunctionForMix

Interface function for SourceLocation/position convertion
cl-refactor
chriseth 10 years ago
parent
commit
137d812cd3
  1. 12
      libsolidity/CompilerStack.cpp
  2. 6
      libsolidity/CompilerStack.h

12
libsolidity/CompilerStack.cpp

@ -257,6 +257,18 @@ bytes CompilerStack::staticCompile(std::string const& _sourceCode, bool _optimiz
return stack.compile(_sourceCode, _optimize);
}
tuple<int, int, int, int> CompilerStack::positionFromSourceLocation(SourceLocation const& _sourceLocation) const
{
int startLine;
int startColumn;
int endLine;
int endColumn;
tie(startLine, startColumn) = getScanner(*_sourceLocation.sourceName).translatePositionToLineColumn(_sourceLocation.start);
tie(endLine, endColumn) = getScanner(*_sourceLocation.sourceName).translatePositionToLineColumn(_sourceLocation.end);
return make_tuple(++startLine, ++startColumn, ++endLine, ++endColumn);
}
void CompilerStack::reset(bool _keepSources)
{
m_parseSuccessful = false;

6
libsolidity/CompilerStack.h

@ -31,6 +31,7 @@
#include <json/json.h>
#include <libdevcore/Common.h>
#include <libdevcore/FixedHash.h>
#include <libevmasm/SourceLocation.h>
namespace dev
{
@ -131,6 +132,11 @@ public:
/// scanning the source code - this is useful for printing exception information.
static bytes staticCompile(std::string const& _sourceCode, bool _optimize = false);
/// Helper function for logs printing. Do only use in error cases, it's quite expensive.
/// line and columns are numbered starting from 1 with following order:
/// start line, start column, end line, end column
std::tuple<int, int, int, int> positionFromSourceLocation(SourceLocation const& _sourceLocation) const;
private:
/**
* Information pertaining to one source unit, filled gradually during parsing and compilation.

Loading…
Cancel
Save