mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
give more information (at most 35 chars before and after) for too long lines
add tests for giving more informations for too long lines add edge tests for giving more informations for too long lines avoid printing out tailing white space update test case after avoiding printing out trailing whitespace update test case for removing the pre-release warning from reference refactor the code to if-else flavor rename folder to cmdlineErrorReports under test rename folder to cmdlineErrorReports under test ignore whitespace for reference files avoiding to modify the file stderr_path by call sed without -i option print ' ...' instead of ' ... ' at the end of a line
This commit is contained in:
parent
9214c7c34f
commit
558a4ac49c
@ -55,8 +55,14 @@ void SourceReferenceFormatter::printSourceLocation(SourceLocation const* _locati
|
|||||||
}
|
}
|
||||||
if (line.length() > 150)
|
if (line.length() > 150)
|
||||||
{
|
{
|
||||||
line = " ... " + line.substr(startColumn, locationLength) + " ... ";
|
int len = line.length();
|
||||||
startColumn = 5;
|
line = line.substr(max(0, startColumn - 35), min(startColumn, 35) + min(locationLength + 35, len - startColumn));
|
||||||
|
if (startColumn + locationLength + 35 < len)
|
||||||
|
line += " ...";
|
||||||
|
if (startColumn > 35) {
|
||||||
|
line = " ... " + line;
|
||||||
|
startColumn = 40;
|
||||||
|
}
|
||||||
endColumn = startColumn + locationLength;
|
endColumn = startColumn + locationLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
4
test/cmdlineErrorReports/too_long_line.sol
Normal file
4
test/cmdlineErrorReports/too_long_line.sol
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
contract C {
|
||||||
|
function ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff(announcementType Type, string Announcement, string Link, bool Oppositable, string _str, uint256 _uint, address _addr) onlyOwner external {
|
||||||
|
}
|
||||||
|
}
|
7
test/cmdlineErrorReports/too_long_line.sol.ref
Normal file
7
test/cmdlineErrorReports/too_long_line.sol.ref
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
too_long_line.sol:1:1: Warning: Source file does not specify required compiler version!
|
||||||
|
contract C {
|
||||||
|
^ (Relevant source part starts here and spans across multiple lines).
|
||||||
|
too_long_line.sol:2:164: Error: Identifier not found or not unique.
|
||||||
|
... ffffffffffffffffffffffffffffffffff(announcementType Type, string Announcement, string ...
|
||||||
|
^--------------^
|
@ -0,0 +1,5 @@
|
|||||||
|
contract C {
|
||||||
|
function f(announcementTypeXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Type,
|
||||||
|
string Announcement, string Link, bool Oppositable, string _str, uint256 _uint, address _addr) onlyOwner external {
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
too_long_line_both_sides_short.sol:1:1: Warning: Source file does not specify required compiler version!
|
||||||
|
contract C {
|
||||||
|
^ (Relevant source part starts here and spans across multiple lines).
|
||||||
|
too_long_line_both_sides_short.sol:2:15: Error: Identifier not found or not unique.
|
||||||
|
function f(announcementTypeXXXXXXXXXXXXXXXXXXX ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Type,
|
||||||
|
^-------------------------------------------------------------------------^
|
4
test/cmdlineErrorReports/too_long_line_edge_in.sol
Normal file
4
test/cmdlineErrorReports/too_long_line_edge_in.sol
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
contract C {
|
||||||
|
function ffffffffffffffffffffff(announcementTypeTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT Ty, string A) onlyOwner external {
|
||||||
|
}
|
||||||
|
}
|
7
test/cmdlineErrorReports/too_long_line_edge_in.sol.ref
Normal file
7
test/cmdlineErrorReports/too_long_line_edge_in.sol.ref
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
too_long_line_edge_in.sol:1:1: Warning: Source file does not specify required compiler version!
|
||||||
|
contract C {
|
||||||
|
^ (Relevant source part starts here and spans across multiple lines).
|
||||||
|
too_long_line_edge_in.sol:2:36: Error: Identifier not found or not unique.
|
||||||
|
function ffffffffffffffffffffff(announcementTypeTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT Ty, string A) onlyOwner external {
|
||||||
|
^----------------------------------------------------------------------------------------------^
|
4
test/cmdlineErrorReports/too_long_line_edge_out.sol
Normal file
4
test/cmdlineErrorReports/too_long_line_edge_out.sol
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
contract C {
|
||||||
|
function fffffffffffffffffffffff(announcementTypeTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT Typ, string A) onlyOwner external {
|
||||||
|
}
|
||||||
|
}
|
7
test/cmdlineErrorReports/too_long_line_edge_out.sol.ref
Normal file
7
test/cmdlineErrorReports/too_long_line_edge_out.sol.ref
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
too_long_line_edge_out.sol:1:1: Warning: Source file does not specify required compiler version!
|
||||||
|
contract C {
|
||||||
|
^ (Relevant source part starts here and spans across multiple lines).
|
||||||
|
too_long_line_edge_out.sol:2:37: Error: Identifier not found or not unique.
|
||||||
|
... function fffffffffffffffffffffff(announcementTypeTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT Typ, string A) onlyOwner external ...
|
||||||
|
^----------------------------------------------------------------------------------------------^
|
4
test/cmdlineErrorReports/too_long_line_left_short.sol
Normal file
4
test/cmdlineErrorReports/too_long_line_left_short.sol
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
contract C {
|
||||||
|
function f(announcementType Type, string Announcement, string Link, bool Oppositable, string _str, uint256 _uint, address _addr) onlyOwner external {
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
too_long_line_left_short.sol:1:1: Warning: Source file does not specify required compiler version!
|
||||||
|
contract C {
|
||||||
|
^ (Relevant source part starts here and spans across multiple lines).
|
||||||
|
too_long_line_left_short.sol:2:15: Error: Identifier not found or not unique.
|
||||||
|
function f(announcementType Type, string Announcement, string ...
|
||||||
|
^--------------^
|
5
test/cmdlineErrorReports/too_long_line_right_short.sol
Normal file
5
test/cmdlineErrorReports/too_long_line_right_short.sol
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
contract C {
|
||||||
|
function ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff(announcementType Type,
|
||||||
|
string Announcement, string Link, bool Oppositable, string _str, uint256 _uint, address _addr) onlyOwner external {
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
too_long_line_right_short.sol:1:1: Warning: Source file does not specify required compiler version!
|
||||||
|
contract C {
|
||||||
|
^ (Relevant source part starts here and spans across multiple lines).
|
||||||
|
too_long_line_right_short.sol:2:164: Error: Identifier not found or not unique.
|
||||||
|
... ffffffffffffffffffffffffffffffffff(announcementType Type,
|
||||||
|
^--------------^
|
@ -117,6 +117,8 @@ test_solc_file_input_failures() {
|
|||||||
exitCode=$?
|
exitCode=$?
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
stderr=`sed 's/.*This is a pre-release compiler version, please do not use it in production.*$//' $stderr_path`
|
||||||
|
|
||||||
if [[ $exitCode -eq 0 ]]; then
|
if [[ $exitCode -eq 0 ]]; then
|
||||||
printError "Incorrect exit code. Expected failure (non-zero) but got success (0)."
|
printError "Incorrect exit code. Expected failure (non-zero) but got success (0)."
|
||||||
rm -f $stdout_path $stderr_path
|
rm -f $stdout_path $stderr_path
|
||||||
@ -133,12 +135,12 @@ test_solc_file_input_failures() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$(cat $stderr_path)" != "${stderr_expected}" ]]; then
|
if [[ "$stderr" != "${stderr_expected}" ]]; then
|
||||||
printError "Incorrect output on stderr received. Expected:"
|
printError "Incorrect output on stderr received. Expected:"
|
||||||
echo -e "${stderr_expected}"
|
echo -e "${stderr_expected}"
|
||||||
|
|
||||||
printError "But got:"
|
printError "But got:"
|
||||||
cat $stderr_path
|
echo $stderr
|
||||||
rm -f $stdout_path $stderr_path
|
rm -f $stdout_path $stderr_path
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -156,6 +158,16 @@ printTask "Testing passing empty remappings..."
|
|||||||
test_solc_file_input_failures "${0}" "=/some/remapping/target" "" "Invalid remapping: \"=/some/remapping/target\"."
|
test_solc_file_input_failures "${0}" "=/some/remapping/target" "" "Invalid remapping: \"=/some/remapping/target\"."
|
||||||
test_solc_file_input_failures "${0}" "ctx:=/some/remapping/target" "" "Invalid remapping: \"ctx:=/some/remapping/target\"."
|
test_solc_file_input_failures "${0}" "ctx:=/some/remapping/target" "" "Invalid remapping: \"ctx:=/some/remapping/target\"."
|
||||||
|
|
||||||
|
printTask "Testing passing location printing..."
|
||||||
|
(
|
||||||
|
cd "$REPO_ROOT"/test/cmdlineErrorReports/
|
||||||
|
for file in *.sol
|
||||||
|
do
|
||||||
|
ret=`cat $file.ref`
|
||||||
|
test_solc_file_input_failures "$file" "" "" "$ret"
|
||||||
|
done
|
||||||
|
)
|
||||||
|
|
||||||
printTask "Compiling various other contracts and libraries..."
|
printTask "Compiling various other contracts and libraries..."
|
||||||
(
|
(
|
||||||
cd "$REPO_ROOT"/test/compilationTests/
|
cd "$REPO_ROOT"/test/compilationTests/
|
||||||
|
Loading…
Reference in New Issue
Block a user