Merge pull request #5741 from ethereum/fix-5730-SourceLocation

Fixes SourceLocation extraction on multiline locations with a too long first line
This commit is contained in:
chriseth 2019-01-07 14:37:07 +01:00 committed by GitHub
commit ff7bc85478
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 1 deletions

View File

@ -58,7 +58,9 @@ SourceReference SourceReferenceExtractor::extract(SourceLocation const* _locatio
int locationLength = isMultiline ? line.length() - start.column : end.column - start.column;
if (locationLength > 150)
{
line = line.substr(0, start.column + 35) + " ... " + line.substr(end.column - 35);
int const lhs = start.column + 35;
int const rhs = (isMultiline ? line.length() : end.column) - 35;
line = line.substr(0, lhs) + " ... " + line.substr(rhs);
end.column = start.column + 75;
locationLength = 75;
}

View File

@ -0,0 +1,13 @@
contract C {
function f() returns (byte _b, bytes2 _b2, bytes3 _b3, bytes memory _blit, bytes5 _b5, bytes6 _b6, string memory _str, bytes7 _b7, bytes22 _b22, bytes32 _b32) {
_b = 0x12;
_b2 = 0x1223;
_b5 = hex"043245";
_b6 = hex"2345532532";
_b7 = hex"03252353253253";
_b22 = hex"325235235325325325235325";
_b32 = hex"032523532532523532523532523532";
_blit = hex"123498";
_str = "heidy";
}
}

View File

@ -0,0 +1,6 @@
too_long_line_multiline.sol:2:5: Error: No visibility specified. Did you intend to add "public"?
function f() returns (byte _b, byte ... _b7, bytes22 _b22, bytes32 _b32) {
^ (Relevant source part starts here and spans across multiple lines).
too_long_line_multiline.sol:1:1: Warning: Source file does not specify required compiler version!
contract C {
^ (Relevant source part starts here and spans across multiple lines).

View File

@ -0,0 +1 @@
1