aboutsummaryrefslogtreecommitdiffstats
path: root/src/SourceReferenceFormatter.cpp
diff options
context:
space:
mode:
authorLefteris Karapetsas <lefteris@refu.co>2015-08-19 20:57:25 +0800
committerLefteris Karapetsas <lefteris@refu.co>2015-08-19 20:57:25 +0800
commit1690f1c947b1b1bfaf84d0a586d2a56ffed11f37 (patch)
treecbf27ebb57b629ae7a4a10cc1342a359481de7d3 /src/SourceReferenceFormatter.cpp
parent2f41438715137e7f123481b2ca8e163a4d35bd78 (diff)
downloaddexon-solidity-1690f1c947b1b1bfaf84d0a586d2a56ffed11f37.tar.gz
dexon-solidity-1690f1c947b1b1bfaf84d0a586d2a56ffed11f37.tar.zst
dexon-solidity-1690f1c947b1b1bfaf84d0a586d2a56ffed11f37.zip
Add CMakeLists.txt for libsolidity
Diffstat (limited to 'src/SourceReferenceFormatter.cpp')
-rw-r--r--src/SourceReferenceFormatter.cpp126
1 files changed, 0 insertions, 126 deletions
diff --git a/src/SourceReferenceFormatter.cpp b/src/SourceReferenceFormatter.cpp
deleted file mode 100644
index 77805efc..00000000
--- a/src/SourceReferenceFormatter.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- This file is part of cpp-ethereum.
-
- cpp-ethereum is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- cpp-ethereum is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
-*/
-/**
- * @author Christian <c@ethdev.com>
- * @date 2014
- * Formatting functions for errors referencing positions and locations in the source.
- */
-
-#include <libsolidity/SourceReferenceFormatter.h>
-#include <libsolidity/CompilerStack.h>
-#include <libsolidity/Scanner.h>
-#include <libsolidity/Exceptions.h>
-
-using namespace std;
-
-namespace dev
-{
-namespace solidity
-{
-
-void SourceReferenceFormatter::printSourceLocation(
- ostream& _stream,
- SourceLocation const& _location,
- Scanner const& _scanner
-)
-{
- int startLine;
- int startColumn;
- tie(startLine, startColumn) = _scanner.translatePositionToLineColumn(_location.start);
- int endLine;
- int endColumn;
- tie(endLine, endColumn) = _scanner.translatePositionToLineColumn(_location.end);
- if (startLine == endLine)
- {
- string line = _scanner.getLineAtPosition(_location.start);
- _stream << line << endl;
- for_each(
- line.cbegin(),
- line.cbegin() + startColumn,
- [&_stream](char const& ch) { _stream << (ch == '\t' ? '\t' : ' '); }
- );
- _stream << "^";
- if (endColumn > startColumn + 2)
- _stream << string(endColumn - startColumn - 2, '-');
- if (endColumn > startColumn + 1)
- _stream << "^";
- _stream << endl;
- }
- else
- _stream <<
- _scanner.getLineAtPosition(_location.start) <<
- endl <<
- string(startColumn, ' ') <<
- "^\n" <<
- "Spanning multiple lines.\n";
-}
-
-void SourceReferenceFormatter::printSourceName(
- ostream& _stream,
- SourceLocation const& _location,
- Scanner const& _scanner
-)
-{
- int startLine;
- int startColumn;
- tie(startLine, startColumn) = _scanner.translatePositionToLineColumn(_location.start);
- _stream << *_location.sourceName << ":" << (startLine + 1) << ":" << (startColumn + 1) << ": ";
-}
-
-void SourceReferenceFormatter::printExceptionInformation(
- ostream& _stream,
- Exception const& _exception,
- string const& _name,
- CompilerStack const& _compiler
-)
-{
- SourceLocation const* location = boost::get_error_info<errinfo_sourceLocation>(_exception);
- auto secondarylocation = boost::get_error_info<errinfo_secondarySourceLocation>(_exception);
- Scanner const* scanner = nullptr;
-
- if (location)
- {
- scanner = &_compiler.getScanner(*location->sourceName);
- printSourceName(_stream, *location, *scanner);
- }
-
- _stream << _name;
- if (string const* description = boost::get_error_info<errinfo_comment>(_exception))
- _stream << ": " << *description << endl;
-
- if (location)
- {
- scanner = &_compiler.getScanner(*location->sourceName);
- printSourceLocation(_stream, *location, *scanner);
- }
-
- if (secondarylocation && !secondarylocation->infos.empty())
- {
- for (auto info: secondarylocation->infos)
- {
- scanner = &_compiler.getScanner(*info.second.sourceName);
- _stream << info.first << " ";
- printSourceName(_stream, info.second, *scanner);
- _stream << endl;
- printSourceLocation(_stream, info.second, *scanner);
- }
- _stream << endl;
- }
-}
-
-}
-}