Skip to content

Commit 805e4ba

Browse files
authored
Fix right side of the Loc of ContractDefinition (#863)
Fix right side of the Loc of ContractDefinition Signed-off-by: Julian Popescu <hi@julian.dev>
1 parent 935fe0d commit 805e4ba

File tree

535 files changed

+1423
-1421
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

535 files changed

+1423
-1421
lines changed

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
Cargo.lock
33
/target
44
**/*.rs.bk
5-
5+
bundle.ll

solang-parser/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ itertools = "0.10"
2222
[dev-dependencies]
2323
walkdir = "2.3.2"
2424
regex = "1.5.5"
25+
pretty_assertions = "1.2"

solang-parser/src/solidity.lalrpop

+2-2
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,8 @@ Base: Base = {
188188
}
189189

190190
ContractDefinition: Box<ContractDefinition> = {
191-
<l:@L> <ty:ContractTy> <name:SolIdentifier> <base:Bases> <r:@R>
192-
"{" <parts:(<ContractPart>)*> "}" => {
191+
<l:@L> <ty:ContractTy> <name:SolIdentifier> <base:Bases>
192+
"{" <parts:(<ContractPart>)*> "}" <r:@R> => {
193193
Box::new(ContractDefinition{loc: Loc::File(file_no, l, r), ty, name, base, parts})
194194
}
195195
}

solang-parser/src/test.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::lexer::Lexer;
22
use crate::pt::*;
33
use crate::solidity;
4+
use pretty_assertions::assert_eq;
45
use std::sync::mpsc;
56
use std::time::Duration;
67
use std::{fs, path::Path, thread};
@@ -55,7 +56,7 @@ fn parse_test() {
5556
SourceUnitPart::DocComment(DocComment{ loc: Loc::File(0,34,51), ty: CommentType::Line, comment: " @description Foo".to_string()}),
5657
SourceUnitPart::DocComment(DocComment{ loc: Loc::File(0,71,75), ty: CommentType::Line, comment: " Bar".to_string()}),
5758
SourceUnitPart::ContractDefinition(Box::new(ContractDefinition {
58-
loc: Loc::File(0, 92, 105),
59+
loc: Loc::File(0, 92, 702),
5960
ty: ContractTy::Contract(Loc::File(0, 92, 100)),
6061
name: Identifier {
6162
loc: Loc::File(0, 101, 104),
@@ -336,7 +337,7 @@ fn parse_error_test() {
336337
],
337338
})),
338339
SourceUnitPart::ContractDefinition(Box::new(ContractDefinition {
339-
loc: Loc::File(0, 69, 88),
340+
loc: Loc::File(0, 69, 438),
340341
ty: ContractTy::Contract(Loc::File(0, 69, 77)),
341342
name: Identifier {
342343
loc: Loc::File(0, 78, 87),
@@ -879,7 +880,7 @@ fn parse_revert_test() {
879880

880881
let expected_parse_tree = SourceUnit(vec![SourceUnitPart::ContractDefinition(Box::new(
881882
ContractDefinition {
882-
loc: Loc::File(0, 9, 28),
883+
loc: Loc::File(0, 9, 150),
883884
ty: ContractTy::Contract(Loc::File(0, 9, 17)),
884885
name: Identifier {
885886
loc: Loc::File(0, 18, 27),
@@ -968,7 +969,7 @@ fn parse_user_defined_value_type() {
968969
ty: Expression::Type(Loc::File(0, 25, 32), Type::Uint(256)),
969970
})),
970971
SourceUnitPart::ContractDefinition(Box::new(ContractDefinition {
971-
loc: Loc::File(0, 42, 61),
972+
loc: Loc::File(0, 42, 109),
972973
ty: ContractTy::Contract(Loc::File(0, 42, 50)),
973974
name: Identifier {
974975
loc: Loc::File(0, 51, 60),

tests/contract_testcases/ewasm/call/call.dot

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
strict digraph "tests/contract_testcases/ewasm/call/call.sol" {
2-
contract [label="contract x\ntests/contract_testcases/ewasm/call/call.sol:2:9-20"]
2+
contract [label="contract x\ntests/contract_testcases/ewasm/call/call.sol:2:9-6:10"]
33
f [label="function f\ncontract: x\ntests/contract_testcases/ewasm/call/call.sol:3:13-49\nsignature f(address)\nvisibility public\nmutability nonpayable"]
44
parameters [label="parameters\naddress payable a"]
5-
diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/ewasm/call/call.sol:2:9-20"]
5+
diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/ewasm/call/call.sol:2:9-6:10"]
66
diagnostic_6 [label="'delegatecall' cannot have value specifed\nlevel Error\ntests/contract_testcases/ewasm/call/call.sol:4:45-73"]
77
contracts -> contract
88
contract -> f [label="function"]

tests/contract_testcases/ewasm/call/call_01.dot

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
strict digraph "tests/contract_testcases/ewasm/call/call_01.sol" {
2-
contract [label="contract x\ntests/contract_testcases/ewasm/call/call_01.sol:2:9-20"]
2+
contract [label="contract x\ntests/contract_testcases/ewasm/call/call_01.sol:2:9-6:10"]
33
f [label="function f\ncontract: x\ntests/contract_testcases/ewasm/call/call_01.sol:3:13-49\nsignature f(address)\nvisibility public\nmutability nonpayable"]
44
parameters [label="parameters\naddress payable a"]
5-
diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/ewasm/call/call_01.sol:2:9-20"]
5+
diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/ewasm/call/call_01.sol:2:9-6:10"]
66
diagnostic_6 [label="'staticcall' cannot have value specifed\nlevel Error\ntests/contract_testcases/ewasm/call/call_01.sol:4:45-71"]
77
contracts -> contract
88
contract -> f [label="function"]

tests/contract_testcases/ewasm/call/call_02.dot

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
strict digraph "tests/contract_testcases/ewasm/call/call_02.sol" {
2-
contract [label="contract x\ntests/contract_testcases/ewasm/call/call_02.sol:2:9-20"]
2+
contract [label="contract x\ntests/contract_testcases/ewasm/call/call_02.sol:2:9-6:10"]
33
f [label="function f\ncontract: x\ntests/contract_testcases/ewasm/call/call_02.sol:3:13-49\nsignature f(address)\nvisibility public\nmutability nonpayable"]
44
parameters [label="parameters\naddress payable a"]
55
destructure [label="destructure\ntests/contract_testcases/ewasm/call/call_02.sol:4:17-65"]
@@ -10,7 +10,7 @@ strict digraph "tests/contract_testcases/ewasm/call/call_02.sol" {
1010
alloc_array [label="alloc array bytes\ninitializer: \ntests/contract_testcases/ewasm/call/call_02.sol:4:62-64"]
1111
number_literal [label="uint32 literal: 0\ntests/contract_testcases/ewasm/call/call_02.sol:4:62-64"]
1212
number_literal_11 [label="uint128 literal: 2\ntests/contract_testcases/ewasm/call/call_02.sol:4:59-60"]
13-
diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/ewasm/call/call_02.sol:2:9-20"]
13+
diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/ewasm/call/call_02.sol:2:9-6:10"]
1414
diagnostic_14 [label="function can be declared 'view'\nlevel Warning\ntests/contract_testcases/ewasm/call/call_02.sol:3:13-49"]
1515
diagnostic_15 [label="destructure variable 's' has never been used\nlevel Warning\ntests/contract_testcases/ewasm/call/call_02.sol:4:23-24"]
1616
diagnostic_16 [label="destructure variable 'bs' has never been used\nlevel Warning\ntests/contract_testcases/ewasm/call/call_02.sol:4:39-41"]

tests/contract_testcases/ewasm/comment_tests.dot

+12-12
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
22
Transfer [label="name:Transfer\ncontract: 0\ntests/contract_testcases/ewasm/comment_tests.sol:58:11-19\nfield name:from ty:address indexed:yes\nfield name:to ty:address indexed:yes\nfield name:value ty:uint256 indexed:no"]
33
Approval [label="name:Approval\ncontract: 0\ntests/contract_testcases/ewasm/comment_tests.sol:61:11-19\nfield name:owner ty:address indexed:yes\nfield name:spender ty:address indexed:yes\nfield name:value ty:uint256 indexed:no"]
44
OwnershipTransferred [label="name:OwnershipTransferred\ncontract: 4\ntests/contract_testcases/ewasm/comment_tests.sol:312:9-29\nfield name:previousOwner ty:address indexed:yes\nfield name:newOwner ty:address indexed:yes"]
5-
contract [label="contract IERC20\ntests/contract_testcases/ewasm/comment_tests.sol:16:5-17:12"]
5+
contract [label="contract IERC20\ntests/contract_testcases/ewasm/comment_tests.sol:16:5-66:2"]
66
tags [label="notice: Submitted for verification at BscScan.com on 2022-01-08"]
77
balanceOf [label="function balanceOf\ncontract: IERC20\ntests/contract_testcases/ewasm/comment_tests.sol:18:5-19:92\nsignature balanceOf(address)\nvisibility external\nmutability view\nvirtual"]
88
parameters [label="parameters\naddress account"]
@@ -21,7 +21,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
2121
transferFrom [label="function transferFrom\ncontract: IERC20\ntests/contract_testcases/ewasm/comment_tests.sol:51:5-55:30\nsignature transferFrom(address,address,uint256)\nvisibility external\nmutability nonpayable\nvirtual"]
2222
parameters_22 [label="parameters\naddress sender\naddress recipient\nuint256 amount"]
2323
returns_23 [label="returns\nbool "]
24-
contract_24 [label="contract SafeMath\ntests/contract_testcases/ewasm/comment_tests.sol:71:1-72:18"]
24+
contract_24 [label="contract SafeMath\ntests/contract_testcases/ewasm/comment_tests.sol:71:1-151:2"]
2525
add [label="function add\ncontract: SafeMath\ntests/contract_testcases/ewasm/comment_tests.sol:74:5-71\nsignature add(uint256,uint256)\nvisibility internal\nmutability pure"]
2626
parameters_26 [label="parameters\nuint256 a\nuint256 b"]
2727
returns_27 [label="returns\nuint256 "]
@@ -136,7 +136,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
136136
modulo [label="modulo\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:149:16-21"]
137137
variable_137 [label="variable: a\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:149:16-17"]
138138
variable_138 [label="variable: b\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:149:20-21"]
139-
contract_139 [label="contract Context\ntests/contract_testcases/ewasm/comment_tests.sol:152:1-153:27"]
139+
contract_139 [label="contract Context\ntests/contract_testcases/ewasm/comment_tests.sol:152:1-166:2"]
140140
_msgSender [label="function _msgSender\ncontract: Context\ntests/contract_testcases/ewasm/comment_tests.sol:154:5-74\nsignature _msgSender()\nvisibility internal\nmutability view\nvirtual"]
141141
returns_141 [label="returns\naddress payable "]
142142
return_142 [label="return\ntests/contract_testcases/ewasm/comment_tests.sol:155:9-26"]
@@ -147,7 +147,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
147147
builtins_147 [label="builtin GetAddress\ntests/contract_testcases/ewasm/comment_tests.sol:161:9-13"]
148148
return_148 [label="return\ntests/contract_testcases/ewasm/comment_tests.sol:162:9-24"]
149149
builtins_149 [label="builtin Calldata\ntests/contract_testcases/ewasm/comment_tests.sol:162:16-24"]
150-
contract_150 [label="contract Address\ntests/contract_testcases/ewasm/comment_tests.sol:168:1-169:17"]
150+
contract_150 [label="contract Address\ntests/contract_testcases/ewasm/comment_tests.sol:168:1-300:2"]
151151
isContract [label="function isContract\ncontract: Address\ntests/contract_testcases/ewasm/comment_tests.sol:171:5-70\nsignature isContract(address)\nvisibility internal\nmutability view"]
152152
parameters_152 [label="parameters\naddress account"]
153153
returns_153 [label="returns\nbool "]
@@ -245,7 +245,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
245245
_functionCallWithValue [label="function _functionCallWithValue\ncontract: Address\ntests/contract_testcases/ewasm/comment_tests.sol:264:5-270:37\nsignature _functionCallWithValue(address,bytes,uint256,string)\nvisibility private\nmutability nonpayable"]
246246
parameters_246 [label="parameters\naddress target\nbytes data\nuint256 weiValue\nstring errorMessage"]
247247
returns_247 [label="returns\nbytes "]
248-
contract_248 [label="contract Ownable\ntests/contract_testcases/ewasm/comment_tests.sol:302:1-303:28"]
248+
contract_248 [label="contract Ownable\ntests/contract_testcases/ewasm/comment_tests.sol:302:1-373:2"]
249249
base [label="base Context\ntests/contract_testcases/ewasm/comment_tests.sol:303:21-28"]
250250
var [label="variable owners\nvisibility private\ntests/contract_testcases/ewasm/comment_tests.sol:304:5-27"]
251251
var_251 [label="variable _owner\nvisibility private\ntests/contract_testcases/ewasm/comment_tests.sol:305:5-27"]
@@ -309,7 +309,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
309309
storage_var_309 [label="storage variable\nOwnable._owner\naddress storage\ntests/contract_testcases/ewasm/comment_tests.sol:366:10-16"]
310310
storage_load_310 [label="storage load address\ntests/contract_testcases/ewasm/comment_tests.sol:366:19-31"]
311311
storage_var_311 [label="storage variable\nOwnable._deadAddress\naddress storage\ntests/contract_testcases/ewasm/comment_tests.sol:366:19-31"]
312-
contract_312 [label="contract TigerBNB\ntests/contract_testcases/ewasm/comment_tests.sol:374:1-375:46"]
312+
contract_312 [label="contract TigerBNB\ntests/contract_testcases/ewasm/comment_tests.sol:374:1-679:2"]
313313
base_313 [label="base Context\ntests/contract_testcases/ewasm/comment_tests.sol:375:22-29"]
314314
base_314 [label="base IERC20\ntests/contract_testcases/ewasm/comment_tests.sol:375:31-37"]
315315
base_315 [label="base Ownable\ntests/contract_testcases/ewasm/comment_tests.sol:375:39-46"]
@@ -773,18 +773,18 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
773773
variable_773 [label="variable: spender\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:676:30-37"]
774774
variable_774 [label="variable: amount\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:676:39-45"]
775775
diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:10:3-11:24"]
776-
diagnostic_777 [label="found interface 'IERC20'\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:16:5-17:12"]
777-
diagnostic_778 [label="found library 'SafeMath'\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:71:1-72:18"]
778-
diagnostic_779 [label="found abstract contract 'Context'\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:152:1-153:27"]
779-
diagnostic_780 [label="found library 'Address'\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:168:1-169:17"]
776+
diagnostic_777 [label="found interface 'IERC20'\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:16:5-66:2"]
777+
diagnostic_778 [label="found library 'SafeMath'\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:71:1-151:2"]
778+
diagnostic_779 [label="found abstract contract 'Context'\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:152:1-166:2"]
779+
diagnostic_780 [label="found library 'Address'\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:168:1-300:2"]
780780
diagnostic_781 [label="builtin 'extcodehash' is not available for target ewasm. Please, open a GitHub issue at https://github.com/hyperledger-labs/solang/issues if there is need to support this function\nlevel Error\ntests/contract_testcases/ewasm/comment_tests.sol:182:25-45"]
781781
diagnostic_782 [label="conversion truncates uint256 to uint128, as value is type uint128 on target ewasm\nlevel Warning\ntests/contract_testcases/ewasm/comment_tests.sol:195:50-56"]
782782
diagnostic_783 [label="conversion truncates uint256 to uint128, as value is type uint128 on target ewasm\nlevel Warning\ntests/contract_testcases/ewasm/comment_tests.sol:276:70-78"]
783783
diagnostic_784 [label="builtin 'mload' is not available for target ewasm. Please, open a GitHub issue at https://github.com/hyperledger-labs/solang/issues if there is need to support this function\nlevel Error\ntests/contract_testcases/ewasm/comment_tests.sol:288:44-61"]
784784
diagnostic_785 [label="missing return statement\nlevel Error\ntests/contract_testcases/ewasm/comment_tests.sol:299:6"]
785-
diagnostic_786 [label="found contract 'Ownable'\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:302:1-303:28"]
785+
diagnostic_786 [label="found contract 'Ownable'\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:302:1-373:2"]
786786
diagnostic_787 [label="'internal': visibility for constructors is ignored\nlevel Warning\ntests/contract_testcases/ewasm/comment_tests.sol:321:9-17"]
787-
diagnostic_788 [label="found contract 'TigerBNB'\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:374:1-375:46"]
787+
diagnostic_788 [label="found contract 'TigerBNB'\nlevel Debug\ntests/contract_testcases/ewasm/comment_tests.sol:374:1-679:2"]
788788
diagnostic_789 [label="'public': visibility for constructors is ignored\nlevel Warning\ntests/contract_testcases/ewasm/comment_tests.sol:417:5-11"]
789789
events -> Transfer
790790
events -> Approval

tests/contract_testcases/ewasm/dead_storage_different_types.dot

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
strict digraph "tests/contract_testcases/ewasm/dead_storage_different_types.sol" {
2-
contract [label="contract C\ntests/contract_testcases/ewasm/dead_storage_different_types.sol:1:1-12"]
2+
contract [label="contract C\ntests/contract_testcases/ewasm/dead_storage_different_types.sol:1:1-10:2"]
33
var [label="variable referralsKey\nvisibility private\ntests/contract_testcases/ewasm/dead_storage_different_types.sol:2:5-35"]
44
getReferralsByAddress [label="function getReferralsByAddress\ncontract: C\ntests/contract_testcases/ewasm/dead_storage_different_types.sol:4:5-98\nsignature getReferralsByAddress()\nvisibility public\nmutability view"]
55
returns [label="returns\naddress[] referralsKeyList\nuint256 "]
@@ -11,7 +11,7 @@ strict digraph "tests/contract_testcases/ewasm/dead_storage_different_types.sol"
1111
storage_load [label="storage load address[]\ntests/contract_testcases/ewasm/dead_storage_different_types.sol:8:9-37"]
1212
storage_var_11 [label="storage variable\nC.referralsKey\naddress[] storage\ntests/contract_testcases/ewasm/dead_storage_different_types.sol:8:17-29"]
1313
variable [label="variable: length\nuint256\ntests/contract_testcases/ewasm/dead_storage_different_types.sol:8:30-36"]
14-
diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/ewasm/dead_storage_different_types.sol:1:1-12"]
14+
diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/ewasm/dead_storage_different_types.sol:1:1-10:2"]
1515
contracts -> contract
1616
contract -> var [label="variable"]
1717
contract -> getReferralsByAddress [label="function"]

0 commit comments

Comments
 (0)