Skip to content

Commit

Permalink
Fix location of negative literals and negative expressions
Browse files Browse the repository at this point in the history
Signed-off-by: Sean Young <sean@mess.org>
  • Loading branch information
seanyoung committed May 11, 2022
1 parent 1a2988c commit eb88ece
Show file tree
Hide file tree
Showing 8 changed files with 9 additions and 9 deletions.
4 changes: 2 additions & 2 deletions solang-parser/src/solidity.lalrpop
Original file line number Diff line number Diff line change
Expand Up @@ -357,8 +357,8 @@ Precedence2: Expression = {
<a:@L> "new" <call:FunctionCall> <b:@R> => Expression::New(Loc::File(file_no, a, b), Box::new(call)),
<a:@L> "++" <b:@R> <e:Precedence2> => Expression::PreIncrement(Loc::File(file_no, a, b), Box::new(e)),
<a:@L> "--" <b:@R> <e:Precedence2> => Expression::PreDecrement(Loc::File(file_no, a, b), Box::new(e)),
<a:@L> "+" <b:@R> <e:Precedence2> => Expression::UnaryPlus(Loc::File(file_no, a, b), Box::new(e)),
<a:@L> "-" <b:@R> <e:Precedence2> => Expression::UnaryMinus(Loc::File(file_no, a, b), Box::new(e)),
<a:@L> "+" <e:Precedence2> <b:@R> => Expression::UnaryPlus(Loc::File(file_no, a, b), Box::new(e)),
<a:@L> "-" <e:Precedence2> <b:@R> => Expression::UnaryMinus(Loc::File(file_no, a, b), Box::new(e)),
<l:@L> "error" <r:@R> => Expression::Variable(Identifier{loc: Loc::File(file_no, l, r), name: "error".to_string()}),
<l:@L> "revert" <r:@R> => Expression::Variable(Identifier{loc: Loc::File(file_no, l, r), name: "revert".to_string()}),
Precedence0,
Expand Down
2 changes: 1 addition & 1 deletion tests/contract_testcases/ewasm/standalone_call.dot
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ strict digraph "tests/contract_testcases/ewasm/standalone_call.sol" {
call_internal_function_92 [label="call internal function\ntests/contract_testcases/ewasm/standalone_call.sol:39:10-24"]
internal_function_93 [label="function() internal pure returns (int256)\nBABYLINK.singleReturn\ntests/contract_testcases/ewasm/standalone_call.sol:39:10-24"]
expr_94 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:40:9-24"]
unary_minus [label="unary minus int256\ntests/contract_testcases/ewasm/standalone_call.sol:40:9-10"]
unary_minus [label="unary minus int256\ntests/contract_testcases/ewasm/standalone_call.sol:40:9-24"]
call_internal_function_96 [label="call internal function\ntests/contract_testcases/ewasm/standalone_call.sol:40:10-24"]
internal_function_97 [label="function() internal pure returns (int256)\nBABYLINK.singleReturn\ntests/contract_testcases/ewasm/standalone_call.sol:40:10-24"]
var_decl_98 [label="variable decl contract foo r\ntests/contract_testcases/ewasm/standalone_call.sol:41:9-26"]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions_01.sol" {
contract [label="contract foo\ntests/contract_testcases/substrate/arrays/array_dimensions_01.sol:2:9-22"]
diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/array_dimensions_01.sol:2:9-22"]
diagnostic_5 [label="negative literal -10 not allowed for unsigned type 'uint256'\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_01.sol:3:18-19"]
diagnostic_5 [label="negative literal -10 not allowed for unsigned type 'uint256'\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_01.sol:3:18-21"]
contracts -> contract
diagnostics -> diagnostic [label="Debug"]
diagnostics -> diagnostic_5 [label="Error"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ strict digraph "tests/contract_testcases/substrate/arrays/memory_dynamic_array_d
contract [label="contract foo\ntests/contract_testcases/substrate/arrays/memory_dynamic_array_deref.sol:2:9-22"]
test [label="function test\ncontract: foo\ntests/contract_testcases/substrate/arrays/memory_dynamic_array_deref.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/memory_dynamic_array_deref.sol:2:9-22"]
diagnostic_5 [label="negative literal -1 not allowed for unsigned type 'uint32'\nlevel Error\ntests/contract_testcases/substrate/arrays/memory_dynamic_array_deref.sol:6:19-20"]
diagnostic_5 [label="negative literal -1 not allowed for unsigned type 'uint32'\nlevel Error\ntests/contract_testcases/substrate/arrays/memory_dynamic_array_deref.sol:6:19-21"]
contracts -> contract
contract -> test [label="function"]
diagnostics -> diagnostic [label="Debug"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ strict digraph "tests/contract_testcases/substrate/arrays/memory_dynamic_array_n
contract [label="contract foo\ntests/contract_testcases/substrate/arrays/memory_dynamic_array_new_03.sol:2:9-22"]
test [label="function test\ncontract: foo\ntests/contract_testcases/substrate/arrays/memory_dynamic_array_new_03.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/memory_dynamic_array_new_03.sol:2:9-22"]
diagnostic_5 [label="negative literal -1 not allowed for unsigned type 'uint32'\nlevel Error\ntests/contract_testcases/substrate/arrays/memory_dynamic_array_new_03.sol:4:48-49"]
diagnostic_5 [label="negative literal -1 not allowed for unsigned type 'uint32'\nlevel Error\ntests/contract_testcases/substrate/arrays/memory_dynamic_array_new_03.sol:4:48-50"]
contracts -> contract
contract -> test [label="function"]
diagnostics -> diagnostic [label="Debug"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ strict digraph "tests/contract_testcases/substrate/primitives/test_literal_overf
contract [label="contract test\ntests/contract_testcases/substrate/primitives/test_literal_overflow_03.sol:1:1-15"]
var [label="variable foo\nvisibility internal\ntests/contract_testcases/substrate/primitives/test_literal_overflow_03.sol:2:13-28"]
diagnostic [label="found contract 'test'\nlevel Debug\ntests/contract_testcases/substrate/primitives/test_literal_overflow_03.sol:1:1-15"]
diagnostic_6 [label="literal -129 is too large to fit into type 'int8'\nlevel Error\ntests/contract_testcases/substrate/primitives/test_literal_overflow_03.sol:2:24-25"]
diagnostic_6 [label="literal -129 is too large to fit into type 'int8'\nlevel Error\ntests/contract_testcases/substrate/primitives/test_literal_overflow_03.sol:2:24-28"]
contracts -> contract
contract -> var [label="variable"]
diagnostics -> diagnostic [label="Debug"]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
strict digraph "tests/contract_testcases/substrate/primitives/test_literal_overflow_05.sol" {
contract [label="contract test\ntests/contract_testcases/substrate/primitives/test_literal_overflow_05.sol:1:1-15"]
var [label="variable foo\nvisibility internal\ntests/contract_testcases/substrate/primitives/test_literal_overflow_05.sol:2:13-28"]
number_literal [label="int8 literal: -128\ntests/contract_testcases/substrate/primitives/test_literal_overflow_05.sol:2:24-25"]
number_literal [label="int8 literal: -128\ntests/contract_testcases/substrate/primitives/test_literal_overflow_05.sol:2:24-28"]
diagnostic [label="found contract 'test'\nlevel Debug\ntests/contract_testcases/substrate/primitives/test_literal_overflow_05.sol:1:1-15"]
diagnostic_7 [label="storage variable 'foo' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/substrate/primitives/test_literal_overflow_05.sol:2:13-28"]
contracts -> contract
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ strict digraph "tests/contract_testcases/substrate/primitives/test_literal_overf
contract [label="contract test\ntests/contract_testcases/substrate/primitives/test_literal_overflow_07.sol:1:1-15"]
var [label="variable foo\nvisibility internal\ntests/contract_testcases/substrate/primitives/test_literal_overflow_07.sol:2:13-30"]
diagnostic [label="found contract 'test'\nlevel Debug\ntests/contract_testcases/substrate/primitives/test_literal_overflow_07.sol:1:1-15"]
diagnostic_6 [label="negative literal -130 not allowed for unsigned type 'uint8'\nlevel Error\ntests/contract_testcases/substrate/primitives/test_literal_overflow_07.sol:2:25-26"]
diagnostic_6 [label="negative literal -130 not allowed for unsigned type 'uint8'\nlevel Error\ntests/contract_testcases/substrate/primitives/test_literal_overflow_07.sol:2:25-30"]
contracts -> contract
contract -> var [label="variable"]
diagnostics -> diagnostic [label="Debug"]
Expand Down

0 comments on commit eb88ece

Please sign in to comment.