Browse Source

Fix locations when location matches end of line

Signed-off-by: Sean Young <sean@mess.org>
Sean Young 3 years ago
parent
commit
7e124d373a
58 changed files with 218 additions and 219 deletions
  1. 4 5
      src/sema/file.rs
  2. 12 12
      tests/contract_testcases/evm/comment_tests.dot
  3. 8 8
      tests/contract_testcases/evm/interface_inheritance.dot
  4. 2 2
      tests/contract_testcases/evm/llvm_type.dot
  5. 2 2
      tests/contract_testcases/evm/standalone_call.dot
  6. 2 2
      tests/contract_testcases/solana/abstract_interface.dot
  7. 2 2
      tests/contract_testcases/solana/account_info.dot
  8. 2 2
      tests/contract_testcases/solana/account_meta.dot
  9. 3 3
      tests/contract_testcases/solana/address_member_call.dot
  10. 2 2
      tests/contract_testcases/solana/asm_reserved_words.dot
  11. 2 2
      tests/contract_testcases/solana/assign_array_in_array.dot
  12. 2 2
      tests/contract_testcases/solana/bad_seeds_on_external_call.dot
  13. 2 2
      tests/contract_testcases/solana/call/abi_encode_call.dot
  14. 2 2
      tests/contract_testcases/solana/call/call_args_three_ways.dot
  15. 2 2
      tests/contract_testcases/solana/comment.dot
  16. 2 2
      tests/contract_testcases/solana/contract_var_base_function_init.dot
  17. 2 2
      tests/contract_testcases/solana/destructure_assign_struct_member.dot
  18. 5 5
      tests/contract_testcases/solana/destructure_assign_struct_member_2.dot
  19. 2 2
      tests/contract_testcases/solana/doccomments_everywhere.dot
  20. 2 2
      tests/contract_testcases/solana/error.dot
  21. 2 2
      tests/contract_testcases/solana/event.dot
  22. 6 6
      tests/contract_testcases/solana/expressions/contract_compare.dot
  23. 2 2
      tests/contract_testcases/solana/expressions/slice.dot
  24. 2 2
      tests/contract_testcases/solana/immutable_function.dot
  25. 8 8
      tests/contract_testcases/solana/immutable_function_type.dot
  26. 5 5
      tests/contract_testcases/solana/import_contracts_via_object.dot
  27. 1 1
      tests/contract_testcases/solana/import_free_function.dot
  28. 2 2
      tests/contract_testcases/solana/import_free_function_chain.dot
  29. 3 3
      tests/contract_testcases/solana/issues678.dot
  30. 4 4
      tests/contract_testcases/solana/keep_on_resolving.dot
  31. 2 2
      tests/contract_testcases/solana/mapping_deletion.dot
  32. 21 21
      tests/contract_testcases/solana/override.dot
  33. 2 2
      tests/contract_testcases/solana/power.dot
  34. 8 8
      tests/contract_testcases/solana/selectors-must-be-different.dot
  35. 2 2
      tests/contract_testcases/solana/shift_struct_member.dot
  36. 3 3
      tests/contract_testcases/solana/simple.dot
  37. 3 3
      tests/contract_testcases/solana/type_called_error.dot
  38. 3 3
      tests/contract_testcases/solana/type_decl.dot
  39. 2 2
      tests/contract_testcases/solana/type_decl_broken.dot
  40. 4 4
      tests/contract_testcases/solana/type_decl_broken_more.dot
  41. 2 2
      tests/contract_testcases/solana/type_decl_broken_used_as_event.dot
  42. 5 5
      tests/contract_testcases/solana/type_decl_import.dot
  43. 6 6
      tests/contract_testcases/solana/using_import.dot
  44. 4 4
      tests/contract_testcases/solana/using_list.dot
  45. 2 2
      tests/contract_testcases/solana/using_literal.dot
  46. 2 2
      tests/contract_testcases/substrate/arrays/multi_dim.dot
  47. 2 2
      tests/contract_testcases/substrate/arrays/push_array_literal.dot
  48. 3 3
      tests/contract_testcases/substrate/contracts/contract_public_functions_01.dot
  49. 2 2
      tests/contract_testcases/substrate/contracts/contract_public_functions_02.dot
  50. 5 5
      tests/contract_testcases/substrate/contracts/contract_public_functions_03.dot
  51. 6 6
      tests/contract_testcases/substrate/inheritance/base_contract_access_via_name.dot
  52. 4 4
      tests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.dot
  53. 8 8
      tests/contract_testcases/substrate/libraries/using_07.dot
  54. 5 5
      tests/contract_testcases/substrate/libraries/using_08.dot
  55. 5 5
      tests/contract_testcases/substrate/libraries/using_09.dot
  56. 8 8
      tests/contract_testcases/substrate/selector_override_inherited.dot
  57. 1 1
      tests/contract_testcases/substrate/tags/contract_03.dot
  58. 1 1
      vscode/src/test/suite/extension.test.ts

+ 4 - 5
src/sema/file.rs

@@ -59,14 +59,13 @@ impl File {
                 break;
             }
 
-            if loc == *l {
-                col_no -= 1;
-                break;
-            }
-
             col_no = loc - l;
 
             line_no += 1;
+
+            if loc == *l {
+                break;
+            }
         }
 
         (line_no, col_no)

+ 12 - 12
tests/contract_testcases/evm/comment_tests.dot

@@ -20,7 +20,7 @@ strict digraph "tests/contract_testcases/evm/comment_tests.sol" {
 	transferFrom [label="function transferFrom\ncontract: IERC20\ntests/contract_testcases/evm/comment_tests.sol:51:5-55:30\nsignature transferFrom(address,address,uint256)\nvisibility external\nmutability nonpayable\nvirtual"]
 	parameters_21 [label="parameters\naddress sender\naddress recipient\nuint256 amount"]
 	returns_22 [label="returns\nbool "]
-	contract_23 [label="contract SafeMath\ntests/contract_testcases/evm/comment_tests.sol:71:1-151:2"]
+	contract_23 [label="contract SafeMath\ntests/contract_testcases/evm/comment_tests.sol:72:1-151:2"]
 	add [label="function add\ncontract: SafeMath\ntests/contract_testcases/evm/comment_tests.sol:74:5-71\nsignature add(uint256,uint256)\nvisibility internal\nmutability pure"]
 	parameters_25 [label="parameters\nuint256 a\nuint256 b"]
 	returns_26 [label="returns\nuint256 "]
@@ -135,7 +135,7 @@ strict digraph "tests/contract_testcases/evm/comment_tests.sol" {
 	modulo [label="modulo\nuint256\ntests/contract_testcases/evm/comment_tests.sol:149:16-21"]
 	variable_136 [label="variable: a\nuint256\ntests/contract_testcases/evm/comment_tests.sol:149:16-17"]
 	variable_137 [label="variable: b\nuint256\ntests/contract_testcases/evm/comment_tests.sol:149:20-21"]
-	contract_138 [label="contract Context\ntests/contract_testcases/evm/comment_tests.sol:152:1-166:2"]
+	contract_138 [label="contract Context\ntests/contract_testcases/evm/comment_tests.sol:153:1-166:2"]
 	_msgSender [label="function _msgSender\ncontract: Context\ntests/contract_testcases/evm/comment_tests.sol:154:5-74\nsignature _msgSender()\nvisibility internal\nmutability view\nvirtual"]
 	returns_140 [label="returns\naddress payable "]
 	return_141 [label="return\ntests/contract_testcases/evm/comment_tests.sol:155:9-26"]
@@ -146,7 +146,7 @@ strict digraph "tests/contract_testcases/evm/comment_tests.sol" {
 	builtins_146 [label="builtin GetAddress\ntests/contract_testcases/evm/comment_tests.sol:161:9-13"]
 	return_147 [label="return\ntests/contract_testcases/evm/comment_tests.sol:162:9-24"]
 	builtins_148 [label="builtin Calldata\ntests/contract_testcases/evm/comment_tests.sol:162:16-24"]
-	contract_149 [label="contract Address\ntests/contract_testcases/evm/comment_tests.sol:168:1-300:2"]
+	contract_149 [label="contract Address\ntests/contract_testcases/evm/comment_tests.sol:169:1-300:2"]
 	isContract [label="function isContract\ncontract: Address\ntests/contract_testcases/evm/comment_tests.sol:171:5-70\nsignature isContract(address)\nvisibility internal\nmutability view"]
 	parameters_151 [label="parameters\naddress account"]
 	returns_152 [label="returns\nbool "]
@@ -285,7 +285,7 @@ strict digraph "tests/contract_testcases/evm/comment_tests.sol" {
 	expr_285 [label="expression\ntests/contract_testcases/evm/comment_tests.sol:294:17-37"]
 	builtins_286 [label="builtin Revert\ntests/contract_testcases/evm/comment_tests.sol:294:17-23"]
 	variable_287 [label="variable: errorMessage\nstring\ntests/contract_testcases/evm/comment_tests.sol:294:24-36"]
-	contract_288 [label="contract Ownable\ntests/contract_testcases/evm/comment_tests.sol:302:1-373:2"]
+	contract_288 [label="contract Ownable\ntests/contract_testcases/evm/comment_tests.sol:303:1-373:2"]
 	base [label="base Context\ntests/contract_testcases/evm/comment_tests.sol:303:21-28"]
 	var [label="variable owners\nvisibility private\ntests/contract_testcases/evm/comment_tests.sol:304:5-27"]
 	var_291 [label="variable _owner\nvisibility private\ntests/contract_testcases/evm/comment_tests.sol:305:5-27"]
@@ -349,7 +349,7 @@ strict digraph "tests/contract_testcases/evm/comment_tests.sol" {
 	storage_var_349 [label="storage variable\nOwnable._owner\naddress storage\ntests/contract_testcases/evm/comment_tests.sol:366:10-16"]
 	storage_load_350 [label="storage load address\ntests/contract_testcases/evm/comment_tests.sol:366:19-31"]
 	storage_var_351 [label="storage variable\nOwnable._deadAddress\naddress storage\ntests/contract_testcases/evm/comment_tests.sol:366:19-31"]
-	contract_352 [label="contract TigerBNB\ntests/contract_testcases/evm/comment_tests.sol:374:1-679:2"]
+	contract_352 [label="contract TigerBNB\ntests/contract_testcases/evm/comment_tests.sol:375:1-679:2"]
 	base_353 [label="base Context\ntests/contract_testcases/evm/comment_tests.sol:375:22-29"]
 	base_354 [label="base IERC20\ntests/contract_testcases/evm/comment_tests.sol:375:31-37"]
 	base_355 [label="base Ownable\ntests/contract_testcases/evm/comment_tests.sol:375:39-46"]
@@ -782,7 +782,7 @@ strict digraph "tests/contract_testcases/evm/comment_tests.sol" {
 	variable_782 [label="variable: sender\naddress\ntests/contract_testcases/evm/comment_tests.sol:660:31-37"]
 	variable_783 [label="variable: recipient\naddress\ntests/contract_testcases/evm/comment_tests.sol:660:39-48"]
 	variable_784 [label="variable: tAmount\nuint256\ntests/contract_testcases/evm/comment_tests.sol:660:50-57"]
-	_approve_785 [label="function _approve\ncontract: TigerBNB\ntests/contract_testcases/evm/comment_tests.sol:667:1-672:14\nsignature _approve(address,address,uint256)\nvisibility private\nmutability nonpayable"]
+	_approve_785 [label="function _approve\ncontract: TigerBNB\ntests/contract_testcases/evm/comment_tests.sol:668:1-672:14\nsignature _approve(address,address,uint256)\nvisibility private\nmutability nonpayable"]
 	parameters_786 [label="parameters\naddress owner\naddress spender\nuint256 amount"]
 	expr_787 [label="expression\ntests/contract_testcases/evm/comment_tests.sol:673:9-77"]
 	builtins_788 [label="builtin Require\ntests/contract_testcases/evm/comment_tests.sol:673:9-16"]
@@ -812,20 +812,20 @@ strict digraph "tests/contract_testcases/evm/comment_tests.sol" {
 	variable_812 [label="variable: owner\naddress\ntests/contract_testcases/evm/comment_tests.sol:676:23-28"]
 	variable_813 [label="variable: spender\naddress\ntests/contract_testcases/evm/comment_tests.sol:676:30-37"]
 	variable_814 [label="variable: amount\nuint256\ntests/contract_testcases/evm/comment_tests.sol:676:39-45"]
-	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:10:3-11:24"]
+	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:11:1-24"]
 	diagnostic_817 [label="found interface 'IERC20'\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:16:5-66:2"]
-	diagnostic_818 [label="found library 'SafeMath'\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:71:1-151:2"]
-	diagnostic_819 [label="found abstract contract 'Context'\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:152:1-166:2"]
-	diagnostic_820 [label="found library 'Address'\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:168:1-300:2"]
+	diagnostic_818 [label="found library 'SafeMath'\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:72:1-151:2"]
+	diagnostic_819 [label="found abstract contract 'Context'\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:153:1-166:2"]
+	diagnostic_820 [label="found library 'Address'\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:169:1-300:2"]
 	diagnostic_821 [label="function can be declared 'view'\nlevel Warning\ntests/contract_testcases/evm/comment_tests.sol:188:5-75"]
 	diagnostic_822 [label="conversion truncates uint256 to uint128, as value is type uint128 on target evm\nlevel Warning\ntests/contract_testcases/evm/comment_tests.sol:195:50-56"]
 	diagnostic_823 [label="function can be declared 'view'\nlevel Warning\ntests/contract_testcases/evm/comment_tests.sol:264:5-270:37"]
 	diagnostic_824 [label="function parameter 'weiValue' has never been read\nlevel Warning\ntests/contract_testcases/evm/comment_tests.sol:268:17-25"]
 	diagnostic_825 [label="function parameter 'errorMessage' has never been read\nlevel Warning\ntests/contract_testcases/evm/comment_tests.sol:269:23-35"]
 	diagnostic_826 [label="conversion truncates uint256 to uint128, as value is type uint128 on target evm\nlevel Warning\ntests/contract_testcases/evm/comment_tests.sol:276:70-78"]
-	diagnostic_827 [label="found contract 'Ownable'\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:302:1-373:2"]
+	diagnostic_827 [label="found contract 'Ownable'\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:303:1-373:2"]
 	diagnostic_828 [label="'internal': visibility for constructors is ignored\nlevel Warning\ntests/contract_testcases/evm/comment_tests.sol:321:9-17"]
-	diagnostic_829 [label="found contract 'TigerBNB'\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:374:1-679:2"]
+	diagnostic_829 [label="found contract 'TigerBNB'\nlevel Debug\ntests/contract_testcases/evm/comment_tests.sol:375:1-679:2"]
 	diagnostic_830 [label="storage variable '_isExcluded' has never been used\nlevel Warning\ntests/contract_testcases/evm/comment_tests.sol:386:9-61"]
 	diagnostic_831 [label="storage variable 'MAX' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/evm/comment_tests.sol:390:9-51"]
 	diagnostic_832 [label="storage variable 'burnrepeat' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/evm/comment_tests.sol:408:5-44"]

+ 8 - 8
tests/contract_testcases/evm/interface_inheritance.dot

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/evm/interface_inheritance.sol" {
-	contract [label="contract IUniswapV2Router01\ntests/contract_testcases/evm/interface_inheritance.sol:2:1-7:2"]
+	contract [label="contract IUniswapV2Router01\ntests/contract_testcases/evm/interface_inheritance.sol:3:1-7:2"]
 	factory [label="function factory\ncontract: IUniswapV2Router01\ntests/contract_testcases/evm/interface_inheritance.sol:4:5-55\nsignature factory()\nvisibility external\nmutability pure\nvirtual"]
 	returns [label="returns\naddress "]
 	WETH [label="function WETH\ncontract: IUniswapV2Router01\ntests/contract_testcases/evm/interface_inheritance.sol:5:5-52\nsignature WETH()\nvisibility external\nmutability pure\nvirtual"]
@@ -7,16 +7,16 @@ strict digraph "tests/contract_testcases/evm/interface_inheritance.sol" {
 	createSomething [label="function createSomething\ncontract: IUniswapV2Router01\ntests/contract_testcases/evm/interface_inheritance.sol:6:5-88\nsignature createSomething(address,address)\nvisibility external\nmutability nonpayable\nvirtual"]
 	parameters [label="parameters\naddress tokenA\naddress tokenB"]
 	returns_8 [label="returns\naddress "]
-	contract_9 [label="contract IUniswapV2Router02\ntests/contract_testcases/evm/interface_inheritance.sol:8:1-18:2"]
+	contract_9 [label="contract IUniswapV2Router02\ntests/contract_testcases/evm/interface_inheritance.sol:9:1-18:2"]
 	base [label="base IUniswapV2Router01\ntests/contract_testcases/evm/interface_inheritance.sol:9:33-51"]
 	removeLiquidityETHSupportingFeeOnTransferTokens [label="function removeLiquidityETHSupportingFeeOnTransferTokens\ncontract: IUniswapV2Router02\ntests/contract_testcases/evm/interface_inheritance.sol:10:5-17:40\nsignature removeLiquidityETHSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)\nvisibility external\nmutability nonpayable\nvirtual"]
 	parameters_12 [label="parameters\naddress token\nuint256 liquidity\nuint256 amountTokenMin\nuint256 amountETHMin\naddress to\nuint256 deadline"]
 	returns_13 [label="returns\nuint256 amountETH"]
-	contract_14 [label="contract IUniswapV2Factory\ntests/contract_testcases/evm/interface_inheritance.sol:19:1-22:2"]
+	contract_14 [label="contract IUniswapV2Factory\ntests/contract_testcases/evm/interface_inheritance.sol:20:1-22:2"]
 	createPair [label="function createPair\ncontract: IUniswapV2Factory\ntests/contract_testcases/evm/interface_inheritance.sol:21:5-83\nsignature createPair(address,address)\nvisibility external\nmutability nonpayable\nvirtual"]
 	parameters_16 [label="parameters\naddress tokenA\naddress tokenB"]
 	returns_17 [label="returns\naddress "]
-	contract_18 [label="contract BABYLINK\ntests/contract_testcases/evm/interface_inheritance.sol:23:1-49:2"]
+	contract_18 [label="contract BABYLINK\ntests/contract_testcases/evm/interface_inheritance.sol:24:1-49:2"]
 	var [label="variable uniswapV2Router\nvisibility public\ntests/contract_testcases/evm/interface_inheritance.sol:26:5-46"]
 	var_20 [label="variable uniswapV2Pair\nvisibility public\ntests/contract_testcases/evm/interface_inheritance.sol:27:5-33"]
 	uniswapV2Router [label="function uniswapV2Router\ncontract: BABYLINK\ntests/contract_testcases/evm/interface_inheritance.sol:26:31-46\nsignature uniswapV2Router()\nvisibility public\nmutability view"]
@@ -77,10 +77,10 @@ strict digraph "tests/contract_testcases/evm/interface_inheritance.sol" {
 	cast_76 [label="cast contract IUniswapV2Router01\ntests/contract_testcases/evm/interface_inheritance.sol:46:93-109"]
 	variable_77 [label="variable: _uniswapV2Router\ncontract IUniswapV2Router02\ntests/contract_testcases/evm/interface_inheritance.sol:46:93-109"]
 	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/evm/interface_inheritance.sol:1:1-23"]
-	diagnostic_80 [label="found interface 'IUniswapV2Router01'\nlevel Debug\ntests/contract_testcases/evm/interface_inheritance.sol:2:1-7:2"]
-	diagnostic_81 [label="found interface 'IUniswapV2Router02'\nlevel Debug\ntests/contract_testcases/evm/interface_inheritance.sol:8:1-18:2"]
-	diagnostic_82 [label="found interface 'IUniswapV2Factory'\nlevel Debug\ntests/contract_testcases/evm/interface_inheritance.sol:19:1-22:2"]
-	diagnostic_83 [label="found contract 'BABYLINK'\nlevel Debug\ntests/contract_testcases/evm/interface_inheritance.sol:23:1-49:2"]
+	diagnostic_80 [label="found interface 'IUniswapV2Router01'\nlevel Debug\ntests/contract_testcases/evm/interface_inheritance.sol:3:1-7:2"]
+	diagnostic_81 [label="found interface 'IUniswapV2Router02'\nlevel Debug\ntests/contract_testcases/evm/interface_inheritance.sol:9:1-18:2"]
+	diagnostic_82 [label="found interface 'IUniswapV2Factory'\nlevel Debug\ntests/contract_testcases/evm/interface_inheritance.sol:20:1-22:2"]
+	diagnostic_83 [label="found contract 'BABYLINK'\nlevel Debug\ntests/contract_testcases/evm/interface_inheritance.sol:24:1-49:2"]
 	contracts -> contract
 	contract -> factory [label="function"]
 	factory -> returns [label="returns"]

+ 2 - 2
tests/contract_testcases/evm/llvm_type.dot

@@ -11,7 +11,7 @@ strict digraph "tests/contract_testcases/evm/llvm_type.sol" {
 	builtins_11 [label="builtin GetAddress\ntests/contract_testcases/evm/llvm_type.sol:6:17-21"]
 	return_12 [label="return\ntests/contract_testcases/evm/llvm_type.sol:7:17-33"]
 	builtins_13 [label="builtin Calldata\ntests/contract_testcases/evm/llvm_type.sol:7:25-33"]
-	contract_14 [label="contract Ownable\ntests/contract_testcases/evm/llvm_type.sol:10:1-43:2"]
+	contract_14 [label="contract Ownable\ntests/contract_testcases/evm/llvm_type.sol:11:1-43:2"]
 	base [label="base Context\ntests/contract_testcases/evm/llvm_type.sol:11:24-31"]
 	var [label="variable _owner\nvisibility private\ntests/contract_testcases/evm/llvm_type.sol:12:9-33"]
 	node_17 [label="constructor \ncontract: Ownable\ntests/contract_testcases/evm/llvm_type.sol:15:9-26\nsignature ()\nvisibility public\nmutability nonpayable"]
@@ -76,7 +76,7 @@ strict digraph "tests/contract_testcases/evm/llvm_type.sol" {
 	zero_ext [label="zero extend uint256\ntests/contract_testcases/evm/llvm_type.sol:41:17-40"]
 	builtins_77 [label="builtin Timestamp\ntests/contract_testcases/evm/llvm_type.sol:41:25-40"]
 	diagnostic [label="found abstract contract 'Context'\nlevel Debug\ntests/contract_testcases/evm/llvm_type.sol:1:1-9:2"]
-	diagnostic_80 [label="found contract 'Ownable'\nlevel Debug\ntests/contract_testcases/evm/llvm_type.sol:10:1-43:2"]
+	diagnostic_80 [label="found contract 'Ownable'\nlevel Debug\ntests/contract_testcases/evm/llvm_type.sol:11:1-43:2"]
 	events -> OwnershipTransferred
 	contracts -> contract
 	contract -> _msgSender [label="function"]

+ 2 - 2
tests/contract_testcases/evm/standalone_call.dot

@@ -7,7 +7,7 @@ strict digraph "tests/contract_testcases/evm/standalone_call.sol" {
 	list [label="list\ntests/contract_testcases/evm/standalone_call.sol:3:9-22"]
 	number_literal [label="int256 literal: 1\ntests/contract_testcases/evm/standalone_call.sol:3:17-18"]
 	number_literal_9 [label="int256 literal: 2\ntests/contract_testcases/evm/standalone_call.sol:3:20-21"]
-	contract_10 [label="contract BABYLINK\ntests/contract_testcases/evm/standalone_call.sol:6:1-58:2"]
+	contract_10 [label="contract BABYLINK\ntests/contract_testcases/evm/standalone_call.sol:7:1-58:2"]
 	multipleRetuns [label="function multipleRetuns\ncontract: BABYLINK\ntests/contract_testcases/evm/standalone_call.sol:13:5-71\nsignature multipleRetuns(int256)\nvisibility public\nmutability pure"]
 	parameters [label="parameters\nint256 c"]
 	returns_13 [label="returns\nint256 \nint256 \nint256 "]
@@ -139,7 +139,7 @@ strict digraph "tests/contract_testcases/evm/standalone_call.sol" {
 	return_139 [label="return\ntests/contract_testcases/evm/standalone_call.sol:56:9-17"]
 	variable_140 [label="variable: b\nint256\ntests/contract_testcases/evm/standalone_call.sol:56:16-17"]
 	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/evm/standalone_call.sol:1:1-5:2"]
-	diagnostic_143 [label="found contract 'BABYLINK'\nlevel Debug\ntests/contract_testcases/evm/standalone_call.sol:6:1-58:2"]
+	diagnostic_143 [label="found contract 'BABYLINK'\nlevel Debug\ntests/contract_testcases/evm/standalone_call.sol:7:1-58:2"]
 	structs -> tts
 	contracts -> contract
 	contract -> bar [label="function"]

+ 2 - 2
tests/contract_testcases/solana/abstract_interface.dot

@@ -2,7 +2,7 @@ strict digraph "tests/contract_testcases/solana/abstract_interface.sol" {
 	contract [label="contract A\ntests/contract_testcases/solana/abstract_interface.sol:1:1-3:2"]
 	v [label="function v\ncontract: A\ntests/contract_testcases/solana/abstract_interface.sol:2:2-32\nsignature v(int256)\nvisibility public\nmutability nonpayable\nvirtual"]
 	parameters [label="parameters\nint256 "]
-	contract_4 [label="contract C\ntests/contract_testcases/solana/abstract_interface.sol:3:2-8:2"]
+	contract_4 [label="contract C\ntests/contract_testcases/solana/abstract_interface.sol:4:1-8:2"]
 	t [label="function t\ncontract: C\ntests/contract_testcases/solana/abstract_interface.sol:5:2-24\nsignature t(bytes32)\nvisibility public\nmutability nonpayable"]
 	parameters_6 [label="parameters\ncontract A a"]
 	expr [label="expression\ntests/contract_testcases/solana/abstract_interface.sol:6:3-9"]
@@ -11,7 +11,7 @@ strict digraph "tests/contract_testcases/solana/abstract_interface.sol" {
 	variable [label="variable: a\ncontract A\ntests/contract_testcases/solana/abstract_interface.sol:6:3-4"]
 	number_literal [label="int256 literal: 1\ntests/contract_testcases/solana/abstract_interface.sol:6:7-8"]
 	diagnostic [label="found abstract contract 'A'\nlevel Debug\ntests/contract_testcases/solana/abstract_interface.sol:1:1-3:2"]
-	diagnostic_14 [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/abstract_interface.sol:3:2-8:2"]
+	diagnostic_14 [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/abstract_interface.sol:4:1-8:2"]
 	contracts -> contract
 	contract -> v [label="function"]
 	v -> parameters [label="parameters"]

+ 2 - 2
tests/contract_testcases/solana/account_info.dot

@@ -1,11 +1,11 @@
 strict digraph "tests/contract_testcases/solana/account_info.sol" {
-	contract [label="contract c\ntests/contract_testcases/solana/account_info.sol:2:1-24:2"]
+	contract [label="contract c\ntests/contract_testcases/solana/account_info.sol:3:1-24:2"]
 	f [label="function f\ncontract: c\ntests/contract_testcases/solana/account_info.sol:8:2-21\nsignature f()\nvisibility public\nmutability nonpayable"]
 	f2 [label="function f2\ncontract: c\ntests/contract_testcases/solana/account_info.sol:13:2-22\nsignature f2()\nvisibility public\nmutability nonpayable"]
 	notpub [label="function notpub\ncontract: c\ntests/contract_testcases/solana/account_info.sol:18:2-60\nsignature notpub((bytes32,uint64,bytes,bytes32,uint64,bool,bool,bool))\nvisibility private\nmutability nonpayable"]
 	parameters [label="parameters\nstruct AccountInfo "]
 	returns [label="returns\nstruct AccountInfo "]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/account_info.sol:2:1-24:2"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/account_info.sol:3:1-24:2"]
 	diagnostic_9 [label="variable cannot be of builtin type 'struct AccountInfo'\nlevel Error\ntests/contract_testcases/solana/account_info.sol:4:2-13"]
 	diagnostic_10 [label="parameter of type 'struct AccountInfo' not alowed in public or external functions\nlevel Error\ntests/contract_testcases/solana/account_info.sol:6:15-26"]
 	diagnostic_11 [label="return type 'struct AccountInfo' not allowed in public or external functions\nlevel Error\ntests/contract_testcases/solana/account_info.sol:6:44-55"]

+ 2 - 2
tests/contract_testcases/solana/account_meta.dot

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/account_meta.sol" {
-	contract [label="contract spl\ntests/contract_testcases/solana/account_meta.sol:2:1-18:2"]
+	contract [label="contract spl\ntests/contract_testcases/solana/account_meta.sol:3:1-18:2"]
 	foo [label="function foo\ncontract: spl\ntests/contract_testcases/solana/account_meta.sol:4:2-47\nsignature foo()\nvisibility public\nmutability nonpayable"]
 	returns [label="returns\nbool \naddress "]
 	var_decl [label="variable decl struct AccountMeta meta\ntests/contract_testcases/solana/account_meta.sol:5:3-75"]
@@ -46,7 +46,7 @@ strict digraph "tests/contract_testcases/solana/account_meta.sol" {
 	subscript_45 [label="subscript struct AccountMeta[2]\ntests/contract_testcases/solana/account_meta.sol:15:32-39"]
 	variable_46 [label="variable: meta\nstruct AccountMeta[2]\ntests/contract_testcases/solana/account_meta.sol:15:32-36"]
 	number_literal_47 [label="uint32 literal: 0\ntests/contract_testcases/solana/account_meta.sol:15:37-38"]
-	diagnostic [label="found contract 'spl'\nlevel Debug\ntests/contract_testcases/solana/account_meta.sol:2:1-18:2"]
+	diagnostic [label="found contract 'spl'\nlevel Debug\ntests/contract_testcases/solana/account_meta.sol:3:1-18:2"]
 	diagnostic_50 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/account_meta.sol:4:2-47"]
 	diagnostic_51 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/account_meta.sol:9:2-56"]
 	contracts -> contract

+ 3 - 3
tests/contract_testcases/solana/address_member_call.dot

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/address_member_call.sol" {
 	Receipt [label="name:Receipt\ncontract: 0\ntests/contract_testcases/solana/address_member_call.sol:5:11-18\nfield name:From ty:address indexed:no\nfield name:Token ty:address indexed:no\nfield name:Receivers ty:address[] indexed:no\nfield name:Amounts ty:uint64[] indexed:no\nfield name:Payment ty:string indexed:no"]
-	contract [label="contract MyContract\ntests/contract_testcases/solana/address_member_call.sol:3:1-45:2"]
+	contract [label="contract MyContract\ntests/contract_testcases/solana/address_member_call.sol:4:1-45:2"]
 	send [label="function send\ncontract: MyContract\ntests/contract_testcases/solana/address_member_call.sol:13:5-18:23\nsignature send(bytes32[],uint64[],string,uint64)\nvisibility external\nmutability payable"]
 	parameters [label="parameters\naddress[] _receivers\nuint64[] _amounts\nstring _payment\nuint64 value"]
 	expr [label="expression\ntests/contract_testcases/solana/address_member_call.sol:19:9-22:10"]
@@ -71,8 +71,8 @@ strict digraph "tests/contract_testcases/solana/address_member_call.sol" {
 	variable_71 [label="variable: _receivers\naddress[]\ntests/contract_testcases/solana/address_member_call.sol:40:13-23"]
 	variable_72 [label="variable: _amounts\nuint64[]\ntests/contract_testcases/solana/address_member_call.sol:41:13-21"]
 	variable_73 [label="variable: _payment\nstring\ntests/contract_testcases/solana/address_member_call.sol:42:13-21"]
-	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/address_member_call.sol:1:32-2:24"]
-	diagnostic_76 [label="found contract 'MyContract'\nlevel Debug\ntests/contract_testcases/solana/address_member_call.sol:3:1-45:2"]
+	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/address_member_call.sol:2:1-24"]
+	diagnostic_76 [label="found contract 'MyContract'\nlevel Debug\ntests/contract_testcases/solana/address_member_call.sol:4:1-45:2"]
 	events -> Receipt
 	contracts -> contract
 	contract -> send [label="function"]

+ 2 - 2
tests/contract_testcases/solana/asm_reserved_words.dot

@@ -1,12 +1,12 @@
 strict digraph "tests/contract_testcases/solana/asm_reserved_words.sol" {
-	contract [label="contract default\ntests/contract_testcases/solana/asm_reserved_words.sol:1:1-6:2"]
+	contract [label="contract default\ntests/contract_testcases/solana/asm_reserved_words.sol:2:1-6:2"]
 	switch [label="function switch\ncontract: default\ntests/contract_testcases/solana/asm_reserved_words.sol:3:2-55\nsignature switch(bool)\nvisibility public\nmutability pure"]
 	parameters [label="parameters\nbool case"]
 	returns [label="returns\nbool "]
 	return [label="return\ntests/contract_testcases/solana/asm_reserved_words.sol:4:3-15"]
 	not [label="not\ntests/contract_testcases/solana/asm_reserved_words.sol:4:10-15"]
 	variable [label="variable: case\nbool\ntests/contract_testcases/solana/asm_reserved_words.sol:4:11-15"]
-	diagnostic [label="found contract 'default'\nlevel Debug\ntests/contract_testcases/solana/asm_reserved_words.sol:1:1-6:2"]
+	diagnostic [label="found contract 'default'\nlevel Debug\ntests/contract_testcases/solana/asm_reserved_words.sol:2:1-6:2"]
 	contracts -> contract
 	contract -> switch [label="function"]
 	switch -> parameters [label="parameters"]

+ 2 - 2
tests/contract_testcases/solana/assign_array_in_array.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/assign_array_in_array.sol" {
 	Sfixed [label="name:Sfixed\ncontract: C\ntests/contract_testcases/solana/assign_array_in_array.sol:13:9-15\nfield name:f1 ty:uint256[3]"]
 	Sdynamic [label="name:Sdynamic\ncontract: C\ntests/contract_testcases/solana/assign_array_in_array.sol:14:9-17\nfield name:f1 ty:uint256[]"]
-	contract [label="contract C\ntests/contract_testcases/solana/assign_array_in_array.sol:1:60-25:2"]
+	contract [label="contract C\ntests/contract_testcases/solana/assign_array_in_array.sol:2:1-25:2"]
 	fixed [label="function fixed\ncontract: C\ntests/contract_testcases/solana/assign_array_in_array.sol:3:2-25\nsignature fixed()\nvisibility public\nmutability nonpayable"]
 	var_decl [label="variable decl uint256[3][4] iPj\ntests/contract_testcases/solana/assign_array_in_array.sol:4:3-27"]
 	expr [label="expression\ntests/contract_testcases/solana/assign_array_in_array.sol:5:3-19"]
@@ -40,7 +40,7 @@ strict digraph "tests/contract_testcases/solana/assign_array_in_array.sol" {
 	variable_40 [label="variable: iPj\nstruct C.Sdynamic\ntests/contract_testcases/solana/assign_array_in_array.sol:23:3-6"]
 	alloc_array_41 [label="alloc array uint256[]\ntests/contract_testcases/solana/assign_array_in_array.sol:23:12-28"]
 	number_literal_42 [label="uint32 literal: 4\ntests/contract_testcases/solana/assign_array_in_array.sol:23:26-27"]
-	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/assign_array_in_array.sol:1:60-25:2"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/assign_array_in_array.sol:2:1-25:2"]
 	diagnostic_45 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/assign_array_in_array.sol:3:2-25"]
 	diagnostic_46 [label="local variable 'iPj' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/assign_array_in_array.sol:4:24-27"]
 	diagnostic_47 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/assign_array_in_array.sol:8:2-27"]

+ 2 - 2
tests/contract_testcases/solana/bad_seeds_on_external_call.dot

@@ -1,9 +1,9 @@
 strict digraph "tests/contract_testcases/solana/bad_seeds_on_external_call.sol" {
-	contract [label="contract c\ntests/contract_testcases/solana/bad_seeds_on_external_call.sol:2:1-25:2"]
+	contract [label="contract c\ntests/contract_testcases/solana/bad_seeds_on_external_call.sol:3:1-25:2"]
 	var [label="variable zero\nvisibility internal\ntests/contract_testcases/solana/bad_seeds_on_external_call.sol:4:2-27"]
 	number_literal [label="address literal: 0\ntests/contract_testcases/solana/bad_seeds_on_external_call.sol:4:17-27"]
 	test1 [label="function test1\ncontract: c\ntests/contract_testcases/solana/bad_seeds_on_external_call.sol:6:2-25\nsignature test1()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/bad_seeds_on_external_call.sol:2:1-25:2"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/bad_seeds_on_external_call.sol:3:1-25:2"]
 	diagnostic_7 [label="type bytes1 found where array of slices expected\nlevel Error\ntests/contract_testcases/solana/bad_seeds_on_external_call.sol:13:4-7"]
 	diagnostic_8 [label="expected 'bytes1 slice[]', found integer\nlevel Error\ntests/contract_testcases/solana/bad_seeds_on_external_call.sol:15:4-5"]
 	diagnostic_9 [label="type string found where array of slices expected\nlevel Error\ntests/contract_testcases/solana/bad_seeds_on_external_call.sol:16:4-5"]

+ 2 - 2
tests/contract_testcases/solana/call/abi_encode_call.dot

@@ -2,13 +2,13 @@ strict digraph "tests/contract_testcases/solana/call/abi_encode_call.sol" {
 	contract [label="contract abi_encode_call\ntests/contract_testcases/solana/call/abi_encode_call.sol:1:1-9:2"]
 	test1 [label="function test1\ncontract: abi_encode_call\ntests/contract_testcases/solana/call/abi_encode_call.sol:2:5-28\nsignature test1()\nvisibility public\nmutability nonpayable"]
 	test2 [label="function test2\ncontract: abi_encode_call\ntests/contract_testcases/solana/call/abi_encode_call.sol:6:5-28\nsignature test2()\nvisibility public\nmutability nonpayable"]
-	contract_4 [label="contract other\ntests/contract_testcases/solana/call/abi_encode_call.sol:10:1-13:2"]
+	contract_4 [label="contract other\ntests/contract_testcases/solana/call/abi_encode_call.sol:11:1-13:2"]
 	foo [label="function foo\ncontract: other\ntests/contract_testcases/solana/call/abi_encode_call.sol:12:5-42\nsignature foo(int256,int256)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\nint256 foo\nint256 bar"]
 	diagnostic [label="found contract 'abi_encode_call'\nlevel Debug\ntests/contract_testcases/solana/call/abi_encode_call.sol:1:1-9:2"]
 	diagnostic_9 [label="function takes 2 arguments, 1 provided\nlevel Error\ntests/contract_testcases/solana/call/abi_encode_call.sol:3:20-48"]
 	diagnostic_10 [label="conversion from bool to int256 not possible\nlevel Error\ntests/contract_testcases/solana/call/abi_encode_call.sol:7:49-53"]
-	diagnostic_11 [label="found contract 'other'\nlevel Debug\ntests/contract_testcases/solana/call/abi_encode_call.sol:10:1-13:2"]
+	diagnostic_11 [label="found contract 'other'\nlevel Debug\ntests/contract_testcases/solana/call/abi_encode_call.sol:11:1-13:2"]
 	diagnostic_12 [label="declaration of 'foo' shadows function\nlevel Warning\ntests/contract_testcases/solana/call/abi_encode_call.sol:12:22-25"]
 	note [label="previous declaration of function\ntests/contract_testcases/solana/call/abi_encode_call.sol:12:14-17"]
 	contracts -> contract

+ 2 - 2
tests/contract_testcases/solana/call/call_args_three_ways.dot

@@ -21,7 +21,7 @@ strict digraph "tests/contract_testcases/solana/call/call_args_three_ways.sol" {
 	call_external_function_20 [label="call external function\ntests/contract_testcases/solana/call/call_args_three_ways.sol:12:3-23"]
 	external_function_21 [label="function() external payable returns (void)\nD.func\ntests/contract_testcases/solana/call/call_args_three_ways.sol:12:3-23"]
 	variable_22 [label="variable: d\ncontract D\ntests/contract_testcases/solana/call/call_args_three_ways.sol:12:4-5"]
-	contract_23 [label="contract D\ntests/contract_testcases/solana/call/call_args_three_ways.sol:15:1-19:2"]
+	contract_23 [label="contract D\ntests/contract_testcases/solana/call/call_args_three_ways.sol:16:1-19:2"]
 	node_24 [label="constructor \ncontract: D\ntests/contract_testcases/solana/call/call_args_three_ways.sol:17:2-23\nsignature ()\nvisibility public\nmutability payable"]
 	func [label="function func\ncontract: D\ntests/contract_testcases/solana/call/call_args_three_ways.sol:18:2-32\nsignature func()\nvisibility public\nmutability payable"]
 	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/call/call_args_three_ways.sol:1:1-14:2"]
@@ -31,7 +31,7 @@ strict digraph "tests/contract_testcases/solana/call/call_args_three_ways.sol" {
 	diagnostic_31 [label="Solana Cross Program Invocation (CPI) cannot transfer native value. See https://solang.readthedocs.io/en/latest/language/functions.html#value_transfer\nlevel Error\ntests/contract_testcases/solana/call/call_args_three_ways.sol:10:10-18"]
 	diagnostic_32 [label="Solana Cross Program Invocation (CPI) cannot transfer native value. See https://solang.readthedocs.io/en/latest/language/functions.html#value_transfer\nlevel Error\ntests/contract_testcases/solana/call/call_args_three_ways.sol:11:12-20"]
 	diagnostic_33 [label="Solana Cross Program Invocation (CPI) cannot transfer native value. See https://solang.readthedocs.io/en/latest/language/functions.html#value_transfer\nlevel Error\ntests/contract_testcases/solana/call/call_args_three_ways.sol:12:11-19"]
-	diagnostic_34 [label="found contract 'D'\nlevel Debug\ntests/contract_testcases/solana/call/call_args_three_ways.sol:15:1-19:2"]
+	diagnostic_34 [label="found contract 'D'\nlevel Debug\ntests/contract_testcases/solana/call/call_args_three_ways.sol:16:1-19:2"]
 	contracts -> contract
 	contract -> f [label="function"]
 	f -> var_decl [label="body"]

+ 2 - 2
tests/contract_testcases/solana/comment.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/comment.sol" {
-	contract [label="contract Hello\ntests/contract_testcases/solana/comment.sol:1:24-4:2"]
+	contract [label="contract Hello\ntests/contract_testcases/solana/comment.sol:2:1-4:2"]
 	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/comment.sol:1:1-23"]
-	diagnostic_4 [label="found contract 'Hello'\nlevel Debug\ntests/contract_testcases/solana/comment.sol:1:24-4:2"]
+	diagnostic_4 [label="found contract 'Hello'\nlevel Debug\ntests/contract_testcases/solana/comment.sol:2:1-4:2"]
 	contracts -> contract
 	diagnostics -> diagnostic [label="Debug"]
 	diagnostics -> diagnostic_4 [label="Debug"]

+ 2 - 2
tests/contract_testcases/solana/contract_var_base_function_init.dot

@@ -7,7 +7,7 @@ strict digraph "tests/contract_testcases/solana/contract_var_base_function_init.
 	divide [label="divide\nint256\ntests/contract_testcases/solana/contract_var_base_function_init.sol:3:16-19"]
 	variable [label="variable: a\nint256\ntests/contract_testcases/solana/contract_var_base_function_init.sol:3:16-17"]
 	number_literal [label="int256 literal: 2\ntests/contract_testcases/solana/contract_var_base_function_init.sol:3:18-19"]
-	contract_9 [label="contract testing\ntests/contract_testcases/solana/contract_var_base_function_init.sol:6:1-10:2"]
+	contract_9 [label="contract testing\ntests/contract_testcases/solana/contract_var_base_function_init.sol:7:1-10:2"]
 	base [label="base b\ntests/contract_testcases/solana/contract_var_base_function_init.sol:7:21-22"]
 	var [label="variable sfPtr\nvisibility internal\ntests/contract_testcases/solana/contract_var_base_function_init.sol:8:5-67"]
 	cast [label="cast function(int256) external pure returns (int256)\ntests/contract_testcases/solana/contract_var_base_function_init.sol:8:55-67"]
@@ -17,7 +17,7 @@ strict digraph "tests/contract_testcases/solana/contract_var_base_function_init.
 	cast_16 [label="cast function(int256) internal pure returns (int256)\ntests/contract_testcases/solana/contract_var_base_function_init.sol:9:55-62"]
 	internal_function [label="function(int256) internal pure returns (int256)\nb.testPtr\ntests/contract_testcases/solana/contract_var_base_function_init.sol:9:55-62"]
 	diagnostic [label="found contract 'b'\nlevel Debug\ntests/contract_testcases/solana/contract_var_base_function_init.sol:1:1-5:2"]
-	diagnostic_20 [label="found contract 'testing'\nlevel Debug\ntests/contract_testcases/solana/contract_var_base_function_init.sol:6:1-10:2"]
+	diagnostic_20 [label="found contract 'testing'\nlevel Debug\ntests/contract_testcases/solana/contract_var_base_function_init.sol:7:1-10:2"]
 	diagnostic_21 [label="storage variable 'sfPtr' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/contract_var_base_function_init.sol:8:5-67"]
 	diagnostic_22 [label="storage variable 'sgPtr' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/contract_var_base_function_init.sol:9:5-62"]
 	contracts -> contract

+ 2 - 2
tests/contract_testcases/solana/destructure_assign_struct_member.dot

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/destructure_assign_struct_member.sol" {
 	Data [label="name:Data\ncontract: TestContract\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:3:12-16\nfield name:a1 ty:bytes32\nfield name:a2 ty:bytes32"]
-	contract [label="contract TestContract\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:1:52-15:2"]
+	contract [label="contract TestContract\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:2:1-15:2"]
 	var [label="variable Hashes\nvisibility internal\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:8:5-39"]
 	node_5 [label="constructor \ncontract: TestContract\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:10:5-19\nsignature ()\nvisibility public\nmutability nonpayable"]
 	getdata [label="function getdata\ncontract: TestContract\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:12:5-84\nsignature getdata(uint176,bool)\nvisibility public\nmutability view"]
@@ -22,7 +22,7 @@ strict digraph "tests/contract_testcases/solana/destructure_assign_struct_member
 	add_22 [label="add\nuint176\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:46-50"]
 	variable_23 [label="variable: id\nuint176\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:46-48"]
 	number_literal_24 [label="uint176 literal: 2\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:49-50"]
-	diagnostic [label="found contract 'TestContract'\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:1:52-15:2"]
+	diagnostic [label="found contract 'TestContract'\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:2:1-15:2"]
 	diagnostic_27 [label="function parameter 'needHash' has never been read\nlevel Warning\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:12:39-47"]
 	structs -> Data
 	contracts -> contract

+ 5 - 5
tests/contract_testcases/solana/destructure_assign_struct_member_2.dot

@@ -1,9 +1,9 @@
 strict digraph "tests/contract_testcases/solana/destructure_assign_struct_member_2.sol" {
 	Struct1 [label="name:Struct1\ncontract: Contract\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:11:12-19\nfield name:a ty:uint256\nfield name:b ty:uint256"]
-	contract [label="contract IUniswapV2Pair\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:3:1-6:2"]
+	contract [label="contract IUniswapV2Pair\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:4:1-6:2"]
 	getReserves [label="function getReserves\ncontract: IUniswapV2Pair\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:5:5-113\nsignature getReserves()\nvisibility external\nmutability view\nvirtual"]
 	returns [label="returns\nuint112 reserve0\nuint112 reserve1\nuint32 blockTimestampLast"]
-	contract_6 [label="contract Contract\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:8:1-25:2"]
+	contract_6 [label="contract Contract\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:9:1-25:2"]
 	test [label="function test\ncontract: Contract\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:16:5-56\nsignature test(bytes32[])\nvisibility public\nmutability view"]
 	parameters [label="parameters\naddress[] _tokens"]
 	var_decl [label="variable decl uint256 size\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:17:2-15"]
@@ -29,9 +29,9 @@ strict digraph "tests/contract_testcases/solana/destructure_assign_struct_member
 	subscript_29 [label="subscript address[]\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:22:58-68"]
 	variable_30 [label="variable: _tokens\naddress[]\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:22:58-65"]
 	number_literal_31 [label="uint32 literal: 0\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:22:66-67"]
-	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:1:52-2:23"]
-	diagnostic_34 [label="found interface 'IUniswapV2Pair'\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:3:1-6:2"]
-	diagnostic_35 [label="found contract 'Contract'\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:8:1-25:2"]
+	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:2:1-23"]
+	diagnostic_34 [label="found interface 'IUniswapV2Pair'\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:4:1-6:2"]
+	diagnostic_35 [label="found contract 'Contract'\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:9:1-25:2"]
 	diagnostic_36 [label="local variable 'struct_1' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:20:26-34"]
 	diagnostic_37 [label="conversion truncates uint256 to uint32, as memory size is type uint32 on target solana\nlevel Warning\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:20:37-56"]
 	structs -> Struct1

+ 2 - 2
tests/contract_testcases/solana/doccomments_everywhere.dot

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/doccomments_everywhere.sol" {
 	MintProperty [label="name:MintProperty\ncontract: 0\ntests/contract_testcases/solana/doccomments_everywhere.sol:15:9-21\nfield name:id ty:uint256 indexed:no"]
-	contract [label="contract Property\ntests/contract_testcases/solana/doccomments_everywhere.sol:4:107-99:2"]
+	contract [label="contract Property\ntests/contract_testcases/solana/doccomments_everywhere.sol:5:1-99:2"]
 	tags [label="author: Max Campbell (https://github.com/maxall41), RafaCypherpunk (https://github.com/RafaCypherpunk)"]
 	var [label="variable pricePerShare_\nvisibility public\ntests/contract_testcases/solana/doccomments_everywhere.sol:9:3-52"]
 	var_6 [label="variable valueLocked_\nvisibility public\ntests/contract_testcases/solana/doccomments_everywhere.sol:10:3-50"]
@@ -126,7 +126,7 @@ strict digraph "tests/contract_testcases/solana/doccomments_everywhere.sol" {
 	sellShares [label="function sellShares\ncontract: Property\ntests/contract_testcases/solana/doccomments_everywhere.sol:77:3-59\nsignature sellShares(uint256,uint256)\nvisibility public\nmutability nonpayable"]
 	parameters_127 [label="parameters\nuint256 shares_\nuint256 _id"]
 	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/doccomments_everywhere.sol:1:1-24"]
-	diagnostic_130 [label="found contract 'Property'\nlevel Debug\ntests/contract_testcases/solana/doccomments_everywhere.sol:4:107-99:2"]
+	diagnostic_130 [label="found contract 'Property'\nlevel Debug\ntests/contract_testcases/solana/doccomments_everywhere.sol:5:1-99:2"]
 	diagnostic_131 [label="'Counters' not found\nlevel Error\ntests/contract_testcases/solana/doccomments_everywhere.sol:6:22-30"]
 	diagnostic_132 [label="'Counters' not found\nlevel Error\ntests/contract_testcases/solana/doccomments_everywhere.sol:7:3-11"]
 	diagnostic_133 [label="'ERC1155' not found\nlevel Error\ntests/contract_testcases/solana/doccomments_everywhere.sol:17:17-24"]

+ 2 - 2
tests/contract_testcases/solana/error.dot

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/error.sol" {
-	contract [label="contract error\ntests/contract_testcases/solana/error.sol:1:1-8:2"]
+	contract [label="contract error\ntests/contract_testcases/solana/error.sol:2:1-8:2"]
 	foo [label="function foo\ncontract: error\ntests/contract_testcases/solana/error.sol:5:2-30\nsignature foo(bytes32)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\ncontract error x"]
-	diagnostic [label="found contract 'error'\nlevel Debug\ntests/contract_testcases/solana/error.sol:1:1-8:2"]
+	diagnostic [label="found contract 'error'\nlevel Debug\ntests/contract_testcases/solana/error.sol:2:1-8:2"]
 	diagnostic_6 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/error.sol:5:2-30"]
 	diagnostic_7 [label="function parameter 'x' has never been read\nlevel Warning\ntests/contract_testcases/solana/error.sol:5:21-22"]
 	contracts -> contract

+ 2 - 2
tests/contract_testcases/solana/event.dot

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/event.sol" {
 	Foo [label="name:Foo\ntests/contract_testcases/solana/event.sol:3:7-10\nfield name:no ty:int256 indexed:no\nfield name:name ty:string indexed:no"]
-	contract [label="contract c\ntests/contract_testcases/solana/event.sol:4:1-11:2"]
+	contract [label="contract c\ntests/contract_testcases/solana/event.sol:5:1-11:2"]
 	foo [label="function foo\ncontract: c\ntests/contract_testcases/solana/event.sol:6:5-26\nsignature foo()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/event.sol:4:1-11:2"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/event.sol:5:1-11:2"]
 	diagnostic_7 [label="'a' not found\nlevel Error\ntests/contract_testcases/solana/event.sol:7:18-19"]
 	diagnostic_8 [label="'a' not found\nlevel Error\ntests/contract_testcases/solana/event.sol:8:24-25"]
 	diagnostic_9 [label="'b' not found\nlevel Error\ntests/contract_testcases/solana/event.sol:8:33-34"]

+ 6 - 6
tests/contract_testcases/solana/expressions/contract_compare.dot

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/expressions/contract_compare.sol" {
-	contract [label="contract c\ntests/contract_testcases/solana/expressions/contract_compare.sol:1:1-11:2"]
+	contract [label="contract c\ntests/contract_testcases/solana/expressions/contract_compare.sol:2:1-11:2"]
 	cmp [label="function cmp\ncontract: c\ntests/contract_testcases/solana/expressions/contract_compare.sol:3:2-53\nsignature cmp(bytes32,bytes32)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\ncontract d left\ncontract d right"]
 	returns [label="returns\nbool "]
@@ -10,14 +10,14 @@ strict digraph "tests/contract_testcases/solana/expressions/contract_compare.sol
 	cmp_9 [label="function cmp\ncontract: c\ntests/contract_testcases/solana/expressions/contract_compare.sol:7:2-53\nsignature cmp(bytes32,bytes32)\nvisibility public\nmutability nonpayable"]
 	parameters_10 [label="parameters\ncontract d left\ncontract e right"]
 	returns_11 [label="returns\nbool "]
-	contract_12 [label="contract d\ntests/contract_testcases/solana/expressions/contract_compare.sol:12:1-13:14"]
-	contract_13 [label="contract e\ntests/contract_testcases/solana/expressions/contract_compare.sol:13:14-14:14"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/expressions/contract_compare.sol:1:1-11:2"]
+	contract_12 [label="contract d\ntests/contract_testcases/solana/expressions/contract_compare.sol:13:1-14"]
+	contract_13 [label="contract e\ntests/contract_testcases/solana/expressions/contract_compare.sol:14:1-14"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/expressions/contract_compare.sol:2:1-11:2"]
 	diagnostic_16 [label="function 'cmp' overrides function in same contract\nlevel Error\ntests/contract_testcases/solana/expressions/contract_compare.sol:7:2-53"]
 	note [label="previous definition of 'cmp'\ntests/contract_testcases/solana/expressions/contract_compare.sol:3:2-53"]
 	diagnostic_18 [label="expression of type contract d not allowed\nlevel Error\ntests/contract_testcases/solana/expressions/contract_compare.sol:8:10-14"]
-	diagnostic_19 [label="found contract 'd'\nlevel Debug\ntests/contract_testcases/solana/expressions/contract_compare.sol:12:1-13:14"]
-	diagnostic_20 [label="found contract 'e'\nlevel Debug\ntests/contract_testcases/solana/expressions/contract_compare.sol:13:14-14:14"]
+	diagnostic_19 [label="found contract 'd'\nlevel Debug\ntests/contract_testcases/solana/expressions/contract_compare.sol:13:1-14"]
+	diagnostic_20 [label="found contract 'e'\nlevel Debug\ntests/contract_testcases/solana/expressions/contract_compare.sol:14:1-14"]
 	contracts -> contract
 	contract -> cmp [label="function"]
 	cmp -> parameters [label="parameters"]

+ 2 - 2
tests/contract_testcases/solana/expressions/slice.dot

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/expressions/slice.sol" {
-	contract [label="contract slice\ntests/contract_testcases/solana/expressions/slice.sol:1:1-9:2"]
+	contract [label="contract slice\ntests/contract_testcases/solana/expressions/slice.sol:2:1-9:2"]
 	foo [label="function foo\ncontract: slice\ntests/contract_testcases/solana/expressions/slice.sol:3:5-35\nsignature foo(bytes)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\nbytes foo"]
-	diagnostic [label="found contract 'slice'\nlevel Debug\ntests/contract_testcases/solana/expressions/slice.sol:1:1-9:2"]
+	diagnostic [label="found contract 'slice'\nlevel Debug\ntests/contract_testcases/solana/expressions/slice.sol:2:1-9:2"]
 	diagnostic_6 [label="declaration of 'foo' shadows function\nlevel Warning\ntests/contract_testcases/solana/expressions/slice.sol:3:24-27"]
 	note [label="previous declaration of function\ntests/contract_testcases/solana/expressions/slice.sol:3:14-17"]
 	diagnostic_8 [label="slice not supported yet\nlevel Error\ntests/contract_testcases/solana/expressions/slice.sol:4:20-27"]

+ 2 - 2
tests/contract_testcases/solana/immutable_function.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/immutable_function.sol" {
-	contract [label="contract t\ntests/contract_testcases/solana/immutable_function.sol:1:26-4:2"]
+	contract [label="contract t\ntests/contract_testcases/solana/immutable_function.sol:2:1-4:2"]
 	diagnostic [label="function cannot be declared 'immutable'\nlevel Error\ntests/contract_testcases/solana/immutable_function.sol:1:14-23"]
-	diagnostic_4 [label="found contract 't'\nlevel Debug\ntests/contract_testcases/solana/immutable_function.sol:1:26-4:2"]
+	diagnostic_4 [label="found contract 't'\nlevel Debug\ntests/contract_testcases/solana/immutable_function.sol:2:1-4:2"]
 	diagnostic_5 [label="function cannot be declared 'immutable'\nlevel Error\ntests/contract_testcases/solana/immutable_function.sol:3:18-27"]
 	contracts -> contract
 	diagnostics -> diagnostic [label="Error"]

+ 8 - 8
tests/contract_testcases/solana/immutable_function_type.dot

@@ -7,7 +7,7 @@ strict digraph "tests/contract_testcases/solana/immutable_function_type.sol" {
 	returns [label="returns\nuint256 "]
 	return [label="return\ntests/contract_testcases/solana/immutable_function_type.sol:3:49-57"]
 	number_literal [label="uint256 literal: 2\ntests/contract_testcases/solana/immutable_function_type.sol:3:56-57"]
-	contract_9 [label="contract d\ntests/contract_testcases/solana/immutable_function_type.sol:5:1-9:2"]
+	contract_9 [label="contract d\ntests/contract_testcases/solana/immutable_function_type.sol:6:1-9:2"]
 	var_10 [label="variable f\nvisibility private\nimmutable\ntests/contract_testcases/solana/immutable_function_type.sol:7:5-63"]
 	cast_11 [label="cast function() internal returns (uint256)\ntests/contract_testcases/solana/immutable_function_type.sol:7:62-63"]
 	internal_function_12 [label="function() internal pure returns (uint256)\nd.g\ntests/contract_testcases/solana/immutable_function_type.sol:7:62-63"]
@@ -15,7 +15,7 @@ strict digraph "tests/contract_testcases/solana/immutable_function_type.sol" {
 	returns_14 [label="returns\nuint256 "]
 	return_15 [label="return\ntests/contract_testcases/solana/immutable_function_type.sol:8:49-57"]
 	number_literal_16 [label="uint256 literal: 2\ntests/contract_testcases/solana/immutable_function_type.sol:8:56-57"]
-	contract_17 [label="contract e\ntests/contract_testcases/solana/immutable_function_type.sol:10:1-14:2"]
+	contract_17 [label="contract e\ntests/contract_testcases/solana/immutable_function_type.sol:11:1-14:2"]
 	var_18 [label="variable f\nvisibility private\nimmutable\ntests/contract_testcases/solana/immutable_function_type.sol:12:5-73"]
 	cast_19 [label="cast function() internal returns (uint256)\ntests/contract_testcases/solana/immutable_function_type.sol:12:72-73"]
 	internal_function_20 [label="function() internal pure returns (uint256)\ne.g\ntests/contract_testcases/solana/immutable_function_type.sol:12:72-73"]
@@ -23,7 +23,7 @@ strict digraph "tests/contract_testcases/solana/immutable_function_type.sol" {
 	returns_22 [label="returns\nuint256 "]
 	return_23 [label="return\ntests/contract_testcases/solana/immutable_function_type.sol:13:49-57"]
 	number_literal_24 [label="uint256 literal: 2\ntests/contract_testcases/solana/immutable_function_type.sol:13:56-57"]
-	contract_25 [label="contract b\ntests/contract_testcases/solana/immutable_function_type.sol:14:2-18:2"]
+	contract_25 [label="contract b\ntests/contract_testcases/solana/immutable_function_type.sol:15:1-18:2"]
 	var_26 [label="variable f\nvisibility private\ntests/contract_testcases/solana/immutable_function_type.sol:16:5-63"]
 	cast_27 [label="cast function() internal returns (uint256)\ntests/contract_testcases/solana/immutable_function_type.sol:16:62-63"]
 	internal_function_28 [label="function() internal pure returns (uint256)\nb.g\ntests/contract_testcases/solana/immutable_function_type.sol:16:62-63"]
@@ -31,16 +31,16 @@ strict digraph "tests/contract_testcases/solana/immutable_function_type.sol" {
 	returns_30 [label="returns\nuint256 "]
 	return_31 [label="return\ntests/contract_testcases/solana/immutable_function_type.sol:17:49-57"]
 	number_literal_32 [label="uint256 literal: 2\ntests/contract_testcases/solana/immutable_function_type.sol:17:56-57"]
-	contract_33 [label="contract a\ntests/contract_testcases/solana/immutable_function_type.sol:19:1-27:2"]
+	contract_33 [label="contract a\ntests/contract_testcases/solana/immutable_function_type.sol:20:1-27:2"]
 	x [label="function x\ncontract: a\ntests/contract_testcases/solana/immutable_function_type.sol:21:5-24\nsignature x()\nvisibility public\nmutability nonpayable"]
 	y [label="function y\ncontract: a\ntests/contract_testcases/solana/immutable_function_type.sol:24:5-24\nsignature y()\nvisibility public\nmutability nonpayable"]
 	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:1:1-4:2"]
-	diagnostic_38 [label="found contract 'd'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:5:1-9:2"]
-	diagnostic_39 [label="found contract 'e'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:10:1-14:2"]
+	diagnostic_38 [label="found contract 'd'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:6:1-9:2"]
+	diagnostic_39 [label="found contract 'e'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:11:1-14:2"]
 	diagnostic_40 [label="duplicate 'immutable' attribute\nlevel Error\ntests/contract_testcases/solana/immutable_function_type.sol:12:48-57"]
 	note [label="previous 'immutable' attribute\ntests/contract_testcases/solana/immutable_function_type.sol:12:58-67"]
-	diagnostic_42 [label="found contract 'b'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:14:2-18:2"]
-	diagnostic_43 [label="found contract 'a'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:19:1-27:2"]
+	diagnostic_42 [label="found contract 'b'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:15:1-18:2"]
+	diagnostic_43 [label="found contract 'a'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:20:1-27:2"]
 	diagnostic_44 [label="function type cannot have visibility 'private'\nlevel Error\ntests/contract_testcases/solana/immutable_function_type.sol:22:37-44"]
 	diagnostic_45 [label="function type cannot be 'immutable'\nlevel Error\ntests/contract_testcases/solana/immutable_function_type.sol:22:45-54"]
 	diagnostic_46 [label="function type cannot have visibility 'private'\nlevel Error\ntests/contract_testcases/solana/immutable_function_type.sol:25:22-29"]

+ 5 - 5
tests/contract_testcases/solana/import_contracts_via_object.dot

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/import_contracts_via_object.sol" {
 	S [label="name:S\ntests/contract_testcases/solana/simple.sol:3:8-9\nfield name:f1 ty:int64\nfield name:f2 ty:bool"]
-	inc [label="function inc\ntests/contract_testcases/solana/simple.sol:6:2-7:23\nsignature inc((int64,bool))\nvisibility internal\nmutability pure"]
+	inc [label="function inc\ntests/contract_testcases/solana/simple.sol:7:1-23\nsignature inc((int64,bool))\nvisibility internal\nmutability pure"]
 	parameters [label="parameters\nstruct S s"]
 	expr [label="expression\ntests/contract_testcases/solana/simple.sol:7:26-35"]
 	assign [label="assign\nvoid\ntests/contract_testcases/solana/simple.sol:7:26-35"]
@@ -11,18 +11,18 @@ strict digraph "tests/contract_testcases/solana/import_contracts_via_object.sol"
 	structmember_11 [label="struct member #0 int64\ntests/contract_testcases/solana/simple.sol:7:28-30"]
 	variable_12 [label="variable: s\nstruct S\ntests/contract_testcases/solana/simple.sol:7:26-27"]
 	number_literal [label="int64 literal: 1\ntests/contract_testcases/solana/simple.sol:7:34-35"]
-	contract [label="contract C\ntests/contract_testcases/solana/import_contracts_via_object.sol:2:1-11:2"]
+	contract [label="contract C\ntests/contract_testcases/solana/import_contracts_via_object.sol:3:1-11:2"]
 	base [label="base A\ntests/contract_testcases/solana/import_contracts_via_object.sol:3:15-20"]
 	using [label="library L"]
 	node_18 [label="constructor \ncontract: C\ntests/contract_testcases/solana/import_contracts_via_object.sol:5:2-23\nsignature ()\nvisibility public\nmutability nonpayable"]
 	foo [label="function foo\ncontract: C\ntests/contract_testcases/solana/import_contracts_via_object.sol:8:2-23\nsignature foo()\nvisibility public\nmutability nonpayable"]
 	contract_20 [label="contract A\ntests/contract_testcases/solana/simple.sol:1:1-14"]
-	contract_21 [label="contract L\ntests/contract_testcases/solana/simple.sol:1:14-2:13"]
-	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/import_contracts_via_object.sol:2:1-11:2"]
+	contract_21 [label="contract L\ntests/contract_testcases/solana/simple.sol:2:1-13"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/import_contracts_via_object.sol:3:1-11:2"]
 	diagnostic_24 [label="revert with custom error 'IMP.E' not supported yet\nlevel Error\ntests/contract_testcases/solana/import_contracts_via_object.sol:6:10-15"]
 	diagnostic_25 [label="revert with custom errors or named arguments not supported yet\nlevel Error\ntests/contract_testcases/solana/import_contracts_via_object.sol:9:3-25"]
 	diagnostic_26 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:1-14"]
-	diagnostic_27 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:14-2:13"]
+	diagnostic_27 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:2:1-13"]
 	structs -> S
 	free_functions -> inc [label="function"]
 	inc -> parameters [label="parameters"]

+ 1 - 1
tests/contract_testcases/solana/import_free_function.dot

@@ -18,7 +18,7 @@ strict digraph "tests/contract_testcases/solana/import_free_function.sol" {
 	number_literal_17 [label="int256 literal: 1\ntests/contract_testcases/solana/for_if_no_else.sol:4:11-12"]
 	return_18 [label="return\ntests/contract_testcases/solana/for_if_no_else.sol:6:2-10"]
 	number_literal_19 [label="int256 literal: 2\ntests/contract_testcases/solana/for_if_no_else.sol:6:9-10"]
-	bar [label="function bar\ntests/contract_testcases/solana/import_free_function.sol:5:1-6:16\nsignature bar()\nvisibility internal\nmutability nonpayable"]
+	bar [label="function bar\ntests/contract_testcases/solana/import_free_function.sol:6:1-16\nsignature bar()\nvisibility internal\nmutability nonpayable"]
 	var_decl_21 [label="variable decl int256 x\ntests/contract_testcases/solana/import_free_function.sol:7:2-15"]
 	call_internal_function [label="call internal function\ntests/contract_testcases/solana/import_free_function.sol:7:10-15"]
 	internal_function [label="function() internal returns (int256)\nfree function foo\ntests/contract_testcases/solana/import_free_function.sol:7:10-15"]

+ 2 - 2
tests/contract_testcases/solana/import_free_function_chain.dot

@@ -18,7 +18,7 @@ strict digraph "tests/contract_testcases/solana/import_free_function_chain.sol"
 	number_literal_17 [label="int256 literal: 1\ntests/contract_testcases/solana/for_if_no_else.sol:4:11-12"]
 	return_18 [label="return\ntests/contract_testcases/solana/for_if_no_else.sol:6:2-10"]
 	number_literal_19 [label="int256 literal: 2\ntests/contract_testcases/solana/for_if_no_else.sol:6:9-10"]
-	bar [label="function bar\ntests/contract_testcases/solana/import_free_function.sol:5:1-6:16\nsignature bar()\nvisibility internal\nmutability nonpayable"]
+	bar [label="function bar\ntests/contract_testcases/solana/import_free_function.sol:6:1-16\nsignature bar()\nvisibility internal\nmutability nonpayable"]
 	var_decl_21 [label="variable decl int256 x\ntests/contract_testcases/solana/import_free_function.sol:7:2-15"]
 	call_internal_function [label="call internal function\ntests/contract_testcases/solana/import_free_function.sol:7:10-15"]
 	internal_function [label="function() internal returns (int256)\nfree function foo\ntests/contract_testcases/solana/import_free_function.sol:7:10-15"]
@@ -37,7 +37,7 @@ strict digraph "tests/contract_testcases/solana/import_free_function_chain.sol"
 	variable_36 [label="variable: x\nint256\ntests/contract_testcases/solana/import_free_function.sol:10:2-3"]
 	call_internal_function_37 [label="call internal function\ntests/contract_testcases/solana/import_free_function.sol:10:6-15"]
 	internal_function_38 [label="function() internal returns (int256)\nfree function foo\ntests/contract_testcases/solana/import_free_function.sol:10:6-15"]
-	baz [label="function baz\ntests/contract_testcases/solana/import_free_function_chain.sol:3:1-4:16\nsignature baz()\nvisibility internal\nmutability nonpayable"]
+	baz [label="function baz\ntests/contract_testcases/solana/import_free_function_chain.sol:4:1-16\nsignature baz()\nvisibility internal\nmutability nonpayable"]
 	var_decl_40 [label="variable decl int256 x\ntests/contract_testcases/solana/import_free_function_chain.sol:5:2-19"]
 	call_internal_function_41 [label="call internal function\ntests/contract_testcases/solana/import_free_function_chain.sol:5:10-19"]
 	internal_function_42 [label="function() internal returns (int256)\nfree function foo\ntests/contract_testcases/solana/import_free_function_chain.sol:5:10-19"]

+ 3 - 3
tests/contract_testcases/solana/issues678.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/issues678.sol" {
 	Share [label="name:Share\ncontract: Shares\ntests/contract_testcases/solana/issues678.sol:7:12-17\nfield name:shareOwner ty:address payable\nfield name:amount ty:uint256"]
 	Transfer [label="name:Transfer\ncontract: 0\ntests/contract_testcases/solana/issues678.sol:5:11-19\nfield name:to ty:address indexed:no\nfield name:amount ty:uint256 indexed:no\nfield name:balance ty:uint256 indexed:no"]
-	contract [label="contract Shares\ntests/contract_testcases/solana/issues678.sol:3:1-56:2"]
+	contract [label="contract Shares\ntests/contract_testcases/solana/issues678.sol:4:1-56:2"]
 	var [label="variable _shares\nvisibility private\ntests/contract_testcases/solana/issues678.sol:12:5-28"]
 	node_7 [label="constructor \ncontract: Shares\ntests/contract_testcases/solana/issues678.sol:15:5-19\nsignature ()\nvisibility public\nmutability nonpayable"]
 	tags [label="notice: Create the shares object that gives the shares to every body"]
@@ -155,8 +155,8 @@ strict digraph "tests/contract_testcases/solana/issues678.sol" {
 	builtins_156 [label="builtin Balance\ntests/contract_testcases/solana/issues678.sol:53:42-63"]
 	cast_157 [label="cast address\ntests/contract_testcases/solana/issues678.sol:53:42-55"]
 	builtins_158 [label="builtin GetAddress\ntests/contract_testcases/solana/issues678.sol:53:50-54"]
-	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/issues678.sol:1:32-2:23"]
-	diagnostic_161 [label="found contract 'Shares'\nlevel Debug\ntests/contract_testcases/solana/issues678.sol:3:1-56:2"]
+	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/issues678.sol:2:1-23"]
+	diagnostic_161 [label="found contract 'Shares'\nlevel Debug\ntests/contract_testcases/solana/issues678.sol:4:1-56:2"]
 	structs -> Share
 	events -> Transfer
 	contracts -> contract

+ 4 - 4
tests/contract_testcases/solana/keep_on_resolving.dot

@@ -4,16 +4,16 @@ strict digraph "tests/contract_testcases/solana/keep_on_resolving.sol" {
 	GlobalFoo [label="name:GlobalFoo\ncontract: c\ntests/contract_testcases/solana/type_decl_broken.sol:7:9-18\nfield name:f1 ty:int256"]
 	GlobalFoo_5 [label="name:GlobalFoo ty:address payable\ntests/contract_testcases/solana/type_decl_broken.sol:1:1-34"]
 	Value [label="name:Value ty:uint128\ncontract: c\ntests/contract_testcases/solana/type_decl_broken.sol:9:2-23"]
-	f [label="function f\ntests/contract_testcases/solana/keep_on_resolving.sol:6:1-7:30\nsignature f((unresolved))\nvisibility internal\nmutability nonpayable"]
+	f [label="function f\ntests/contract_testcases/solana/keep_on_resolving.sol:7:1-30\nsignature f((unresolved))\nvisibility internal\nmutability nonpayable"]
 	parameters [label="parameters\nstruct S s"]
 	returns [label="returns\nint256 "]
 	return [label="return\ntests/contract_testcases/solana/keep_on_resolving.sol:8:2-13"]
 	load [label="load unresolved\ntests/contract_testcases/solana/keep_on_resolving.sol:8:2-13"]
 	structmember [label="struct member #0 unresolved\ntests/contract_testcases/solana/keep_on_resolving.sol:8:11-13"]
 	variable [label="variable: s\nstruct S\ntests/contract_testcases/solana/keep_on_resolving.sol:8:9-10"]
-	g [label="function g\ntests/contract_testcases/solana/keep_on_resolving.sol:10:1-11:17\nsignature g((unresolved))\nvisibility internal\nmutability nonpayable"]
+	g [label="function g\ntests/contract_testcases/solana/keep_on_resolving.sol:11:1-17\nsignature g((unresolved))\nvisibility internal\nmutability nonpayable"]
 	parameters_16 [label="parameters\nstruct S s"]
-	contract [label="contract c\ntests/contract_testcases/solana/type_decl_broken.sol:2:1-19:2"]
+	contract [label="contract c\ntests/contract_testcases/solana/type_decl_broken.sol:3:1-19:2"]
 	inc_and_wrap [label="function inc_and_wrap\ncontract: c\ntests/contract_testcases/solana/type_decl_broken.sol:12:2-56\nsignature inc_and_wrap(int128)\nvisibility public\nmutability nonpayable"]
 	parameters_20 [label="parameters\nint128 v"]
 	returns_21 [label="returns\nusertype c.Value "]
@@ -27,7 +27,7 @@ strict digraph "tests/contract_testcases/solana/keep_on_resolving.sol" {
 	number_literal [label="uint128 literal: 1\ntests/contract_testcases/solana/type_decl_broken.sol:17:28-29"]
 	diagnostic [label="type 'in' not found\nlevel Error\ntests/contract_testcases/solana/keep_on_resolving.sol:4:2-4"]
 	diagnostic_32 [label="expected 'struct S', found integer\nlevel Error\ntests/contract_testcases/solana/keep_on_resolving.sol:15:6-7"]
-	diagnostic_33 [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/type_decl_broken.sol:2:1-19:2"]
+	diagnostic_33 [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/type_decl_broken.sol:3:1-19:2"]
 	diagnostic_34 [label="foo is already defined as a struct\nlevel Error\ntests/contract_testcases/solana/type_decl_broken.sol:5:7-10"]
 	note [label="location of previous definition\ntests/contract_testcases/solana/type_decl_broken.sol:4:9-12"]
 	diagnostic_36 [label="'int256[2]' is not an elementary value type\nlevel Error\ntests/contract_testcases/solana/type_decl_broken.sol:5:14-20"]

+ 2 - 2
tests/contract_testcases/solana/mapping_deletion.dot

@@ -17,7 +17,7 @@ strict digraph "tests/contract_testcases/solana/mapping_deletion.sol" {
 	storage_load [label="storage load uint256\ntests/contract_testcases/solana/mapping_deletion.sol:8:9-15"]
 	storage_var_18 [label="storage variable\nsavedTest.b\nuint256 storage\ntests/contract_testcases/solana/mapping_deletion.sol:8:9-10"]
 	variable_19 [label="variable: f\nuint256\ntests/contract_testcases/solana/mapping_deletion.sol:8:14-15"]
-	contract_20 [label="contract DeleteTest\ntests/contract_testcases/solana/mapping_deletion.sol:11:1-40:2"]
+	contract_20 [label="contract DeleteTest\ntests/contract_testcases/solana/mapping_deletion.sol:12:1-40:2"]
 	var_21 [label="variable example\nvisibility internal\ntests/contract_testcases/solana/mapping_deletion.sol:18:5-41"]
 	var_22 [label="variable example2\nvisibility internal\ntests/contract_testcases/solana/mapping_deletion.sol:19:5-40"]
 	addData [label="function addData\ncontract: DeleteTest\ntests/contract_testcases/solana/mapping_deletion.sol:21:5-30\nsignature addData()\nvisibility public\nmutability nonpayable"]
@@ -62,7 +62,7 @@ strict digraph "tests/contract_testcases/solana/mapping_deletion.sol" {
 	variable_62 [label="variable: id\nuint256\ntests/contract_testcases/solana/mapping_deletion.sol:37:24-26"]
 	diagnostic [label="found contract 'savedTest'\nlevel Debug\ntests/contract_testcases/solana/mapping_deletion.sol:1:1-10:2"]
 	diagnostic_65 [label="storage variable 'b' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/mapping_deletion.sol:2:5-11"]
-	diagnostic_66 [label="found contract 'DeleteTest'\nlevel Debug\ntests/contract_testcases/solana/mapping_deletion.sol:11:1-40:2"]
+	diagnostic_66 [label="found contract 'DeleteTest'\nlevel Debug\ntests/contract_testcases/solana/mapping_deletion.sol:12:1-40:2"]
 	diagnostic_67 [label="storage variable 'example2' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/mapping_deletion.sol:19:5-40"]
 	structs -> data_struct
 	contracts -> contract

+ 21 - 21
tests/contract_testcases/solana/override.dot

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/override.sol" {
 	S [label="name:S\ntests/contract_testcases/solana/simple.sol:3:8-9\nfield name:f1 ty:int64\nfield name:f2 ty:bool"]
-	inc [label="function inc\ntests/contract_testcases/solana/simple.sol:6:2-7:23\nsignature inc((int64,bool))\nvisibility internal\nmutability pure"]
+	inc [label="function inc\ntests/contract_testcases/solana/simple.sol:7:1-23\nsignature inc((int64,bool))\nvisibility internal\nmutability pure"]
 	parameters [label="parameters\nstruct S s"]
 	expr [label="expression\ntests/contract_testcases/solana/simple.sol:7:26-35"]
 	assign [label="assign\nvoid\ntests/contract_testcases/solana/simple.sol:7:26-35"]
@@ -11,7 +11,7 @@ strict digraph "tests/contract_testcases/solana/override.sol" {
 	structmember_11 [label="struct member #0 int64\ntests/contract_testcases/solana/simple.sol:7:28-30"]
 	variable_12 [label="variable: s\nstruct S\ntests/contract_testcases/solana/simple.sol:7:26-27"]
 	number_literal [label="int64 literal: 1\ntests/contract_testcases/solana/simple.sol:7:34-35"]
-	contract [label="contract C\ntests/contract_testcases/solana/override.sol:4:1-7:2"]
+	contract [label="contract C\ntests/contract_testcases/solana/override.sol:5:1-7:2"]
 	base [label="base A\ntests/contract_testcases/solana/override.sol:5:15-20"]
 	var [label="variable meh\nvisibility public\ntests/contract_testcases/solana/override.sol:6:2-32"]
 	meh [label="function meh\ncontract: C\ntests/contract_testcases/solana/override.sol:6:29-32\nsignature meh()\nvisibility public\nmutability view\noverride A"]
@@ -19,13 +19,13 @@ strict digraph "tests/contract_testcases/solana/override.sol" {
 	return [label="return\nimplicit"]
 	storage_load [label="storage load int256\nimplicit"]
 	storage_var [label="storage variable\nC.meh\nint256 storage\nimplicit"]
-	contract_23 [label="contract A\ntests/contract_testcases/solana/override.sol:8:1-11:2"]
+	contract_23 [label="contract A\ntests/contract_testcases/solana/override.sol:9:1-11:2"]
 	foo [label="function foo\ncontract: A\ntests/contract_testcases/solana/override.sol:10:5-43\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
 	returns_25 [label="returns\nuint256 "]
-	contract_26 [label="contract B\ntests/contract_testcases/solana/override.sol:11:2-14:2"]
+	contract_26 [label="contract B\ntests/contract_testcases/solana/override.sol:12:1-14:2"]
 	foo_27 [label="function foo\ncontract: B\ntests/contract_testcases/solana/override.sol:13:5-43\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
 	returns_28 [label="returns\nuint256 "]
-	contract_29 [label="contract X\ntests/contract_testcases/solana/override.sol:14:2-17:2"]
+	contract_29 [label="contract X\ntests/contract_testcases/solana/override.sol:15:1-17:2"]
 	base_30 [label="base A\ntests/contract_testcases/solana/override.sol:15:15-16"]
 	base_31 [label="base B\ntests/contract_testcases/solana/override.sol:15:18-19"]
 	var_32 [label="variable foo\nvisibility public\ntests/contract_testcases/solana/override.sol:16:9-39"]
@@ -34,19 +34,19 @@ strict digraph "tests/contract_testcases/solana/override.sol" {
 	return_35 [label="return\nimplicit"]
 	storage_load_36 [label="storage load uint256\nimplicit"]
 	storage_var_37 [label="storage variable\nX.foo\nuint256 storage\nimplicit"]
-	contract_38 [label="contract Y\ntests/contract_testcases/solana/override.sol:17:2-19:2"]
+	contract_38 [label="contract Y\ntests/contract_testcases/solana/override.sol:18:1-19:2"]
 	base_39 [label="base X\ntests/contract_testcases/solana/override.sol:18:15-16"]
-	contract_40 [label="contract A2\ntests/contract_testcases/solana/override.sol:20:1-23:2"]
+	contract_40 [label="contract A2\ntests/contract_testcases/solana/override.sol:21:1-23:2"]
 	foo_41 [label="function foo\ncontract: A2\ntests/contract_testcases/solana/override.sol:22:5-51\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
 	returns_42 [label="returns\nuint256 "]
 	return_43 [label="return\ntests/contract_testcases/solana/override.sol:22:54-62"]
 	number_literal_44 [label="uint256 literal: 1\ntests/contract_testcases/solana/override.sol:22:61-62"]
-	contract_45 [label="contract B2\ntests/contract_testcases/solana/override.sol:23:2-26:2"]
+	contract_45 [label="contract B2\ntests/contract_testcases/solana/override.sol:24:1-26:2"]
 	foo_46 [label="function foo\ncontract: B2\ntests/contract_testcases/solana/override.sol:25:5-51\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
 	returns_47 [label="returns\nuint256 "]
 	return_48 [label="return\ntests/contract_testcases/solana/override.sol:25:54-62"]
 	number_literal_49 [label="uint256 literal: 2\ntests/contract_testcases/solana/override.sol:25:61-62"]
-	contract_50 [label="contract X2\ntests/contract_testcases/solana/override.sol:26:2-29:2"]
+	contract_50 [label="contract X2\ntests/contract_testcases/solana/override.sol:27:1-29:2"]
 	base_51 [label="base A2\ntests/contract_testcases/solana/override.sol:27:16-18"]
 	base_52 [label="base B2\ntests/contract_testcases/solana/override.sol:27:20-22"]
 	var_53 [label="variable foo\nvisibility public\ntests/contract_testcases/solana/override.sol:28:9-37"]
@@ -55,24 +55,24 @@ strict digraph "tests/contract_testcases/solana/override.sol" {
 	return_56 [label="return\nimplicit"]
 	storage_load_57 [label="storage load uint256\nimplicit"]
 	storage_var_58 [label="storage variable\nX2.foo\nuint256 storage\nimplicit"]
-	contract_59 [label="contract Y2\ntests/contract_testcases/solana/override.sol:29:2-31:2"]
+	contract_59 [label="contract Y2\ntests/contract_testcases/solana/override.sol:30:1-31:2"]
 	base_60 [label="base X2\ntests/contract_testcases/solana/override.sol:30:16-18"]
 	contract_61 [label="contract A\ntests/contract_testcases/solana/simple.sol:1:1-14"]
-	contract_62 [label="contract L\ntests/contract_testcases/solana/simple.sol:1:14-2:13"]
+	contract_62 [label="contract L\ntests/contract_testcases/solana/simple.sol:2:1-13"]
 	diagnostic [label="global variable has no bases contracts to override\nlevel Error\ntests/contract_testcases/solana/override.sol:3:14-22"]
-	diagnostic_65 [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/override.sol:4:1-7:2"]
+	diagnostic_65 [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/override.sol:5:1-7:2"]
 	diagnostic_66 [label="'meh' does not override anything\nlevel Error\ntests/contract_testcases/solana/override.sol:6:29-32"]
-	diagnostic_67 [label="found interface 'A'\nlevel Debug\ntests/contract_testcases/solana/override.sol:8:1-11:2"]
-	diagnostic_68 [label="found interface 'B'\nlevel Debug\ntests/contract_testcases/solana/override.sol:11:2-14:2"]
-	diagnostic_69 [label="found contract 'X'\nlevel Debug\ntests/contract_testcases/solana/override.sol:14:2-17:2"]
-	diagnostic_70 [label="found contract 'Y'\nlevel Debug\ntests/contract_testcases/solana/override.sol:17:2-19:2"]
-	diagnostic_71 [label="found abstract contract 'A2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:20:1-23:2"]
-	diagnostic_72 [label="found abstract contract 'B2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:23:2-26:2"]
-	diagnostic_73 [label="found contract 'X2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:26:2-29:2"]
+	diagnostic_67 [label="found interface 'A'\nlevel Debug\ntests/contract_testcases/solana/override.sol:9:1-11:2"]
+	diagnostic_68 [label="found interface 'B'\nlevel Debug\ntests/contract_testcases/solana/override.sol:12:1-14:2"]
+	diagnostic_69 [label="found contract 'X'\nlevel Debug\ntests/contract_testcases/solana/override.sol:15:1-17:2"]
+	diagnostic_70 [label="found contract 'Y'\nlevel Debug\ntests/contract_testcases/solana/override.sol:18:1-19:2"]
+	diagnostic_71 [label="found abstract contract 'A2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:21:1-23:2"]
+	diagnostic_72 [label="found abstract contract 'B2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:24:1-26:2"]
+	diagnostic_73 [label="found contract 'X2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:27:1-29:2"]
 	diagnostic_74 [label="function 'foo' missing overrides 'B2', specify 'override(B2,A2)'\nlevel Error\ntests/contract_testcases/solana/override.sol:28:21-33"]
-	diagnostic_75 [label="found contract 'Y2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:29:2-31:2"]
+	diagnostic_75 [label="found contract 'Y2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:30:1-31:2"]
 	diagnostic_76 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:1-14"]
-	diagnostic_77 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:14-2:13"]
+	diagnostic_77 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:2:1-13"]
 	structs -> S
 	free_functions -> inc [label="function"]
 	inc -> parameters [label="parameters"]

+ 2 - 2
tests/contract_testcases/solana/power.dot

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/power.sol" {
-	contract [label="contract AstExample\ntests/contract_testcases/solana/power.sol:2:1-7:2"]
+	contract [label="contract AstExample\ntests/contract_testcases/solana/power.sol:3:1-7:2"]
 	node_2 [label="constructor \ncontract: AstExample\ntests/contract_testcases/solana/power.sol:4:5-19\nsignature ()\nvisibility public\nmutability nonpayable"]
 	expr [label="expression\ntests/contract_testcases/solana/power.sol:5:9-20"]
 	power [label="power\nuint256\ntests/contract_testcases/solana/power.sol:5:9-20"]
@@ -8,7 +8,7 @@ strict digraph "tests/contract_testcases/solana/power.sol" {
 	number_literal_7 [label="uint256 literal: 2\ntests/contract_testcases/solana/power.sol:5:14-15"]
 	number_literal_8 [label="uint256 literal: 3\ntests/contract_testcases/solana/power.sol:5:19-20"]
 	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/power.sol:1:1-24"]
-	diagnostic_11 [label="found contract 'AstExample'\nlevel Debug\ntests/contract_testcases/solana/power.sol:2:1-7:2"]
+	diagnostic_11 [label="found contract 'AstExample'\nlevel Debug\ntests/contract_testcases/solana/power.sol:3:1-7:2"]
 	contracts -> contract
 	contract -> node_2 [label="constructor"]
 	node_2 -> expr [label="body"]

+ 8 - 8
tests/contract_testcases/solana/selectors-must-be-different.dot

@@ -3,7 +3,7 @@ strict digraph "tests/contract_testcases/solana/selectors-must-be-different.sol"
 	f1 [label="function f1\ncontract: c\ntests/contract_testcases/solana/selectors-must-be-different.sol:2:2-39\nsignature f1()\nvisibility public\nmutability nonpayable\nselector 01"]
 	f2 [label="function f2\ncontract: c\ntests/contract_testcases/solana/selectors-must-be-different.sol:4:2-39\nsignature f2()\nvisibility public\nmutability nonpayable\nselector 01"]
 	f3 [label="function f3\ncontract: c\ntests/contract_testcases/solana/selectors-must-be-different.sol:6:2-39\nsignature f3()\nvisibility public\nmutability nonpayable\nselector 01"]
-	contract_5 [label="contract d\ntests/contract_testcases/solana/selectors-must-be-different.sol:8:1-14:2"]
+	contract_5 [label="contract d\ntests/contract_testcases/solana/selectors-must-be-different.sol:9:1-14:2"]
 	var [label="variable c\nvisibility public\ntests/contract_testcases/solana/selectors-must-be-different.sol:10:2-14"]
 	c [label="function c\ncontract: d\ntests/contract_testcases/solana/selectors-must-be-different.sol:10:13-14\nsignature c()\nvisibility public\nmutability view"]
 	returns [label="returns\nint256 "]
@@ -11,13 +11,13 @@ strict digraph "tests/contract_testcases/solana/selectors-must-be-different.sol"
 	storage_load [label="storage load int256\nimplicit"]
 	storage_var [label="storage variable\nd.c\nint256 storage\nimplicit"]
 	f1_12 [label="function f1\ncontract: d\ntests/contract_testcases/solana/selectors-must-be-different.sol:13:2-45\nsignature f1()\nvisibility public\nmutability nonpayable\nselector c3da42b8"]
-	contract_13 [label="contract e\ntests/contract_testcases/solana/selectors-must-be-different.sol:15:1-19:2"]
+	contract_13 [label="contract e\ntests/contract_testcases/solana/selectors-must-be-different.sol:16:1-19:2"]
 	f1_14 [label="function f1\ncontract: e\ntests/contract_testcases/solana/selectors-must-be-different.sol:18:2-39\nsignature f1()\nvisibility public\nmutability nonpayable\nselector 01"]
-	contract_15 [label="contract f\ntests/contract_testcases/solana/selectors-must-be-different.sol:20:1-26:2"]
+	contract_15 [label="contract f\ntests/contract_testcases/solana/selectors-must-be-different.sol:21:1-26:2"]
 	f1_16 [label="function f1\ncontract: f\ntests/contract_testcases/solana/selectors-must-be-different.sol:23:2-45\nsignature f1()\nvisibility public\nmutability nonpayable\nselector 41424344"]
 	f2_17 [label="function f2\ncontract: f\ntests/contract_testcases/solana/selectors-must-be-different.sol:24:2-45\nsignature f2()\nvisibility public\nmutability nonpayable\nselector 41424344"]
 	f3_18 [label="function f3\ncontract: f\ntests/contract_testcases/solana/selectors-must-be-different.sol:25:2-22\nsignature f3()\nvisibility public\nmutability nonpayable"]
-	contract_19 [label="contract g\ntests/contract_testcases/solana/selectors-must-be-different.sol:27:1-32:2"]
+	contract_19 [label="contract g\ntests/contract_testcases/solana/selectors-must-be-different.sol:28:1-32:2"]
 	f1_20 [label="function f1\ncontract: g\ntests/contract_testcases/solana/selectors-must-be-different.sol:29:2-22\nsignature f1()\nvisibility public\nmutability nonpayable"]
 	f3_21 [label="function f3\ncontract: g\ntests/contract_testcases/solana/selectors-must-be-different.sol:31:2-45\nsignature f3()\nvisibility public\nmutability nonpayable\nselector c27fc305"]
 	diagnostic [label="found abstract contract 'c'\nlevel Debug\ntests/contract_testcases/solana/selectors-must-be-different.sol:1:1-7:2"]
@@ -25,17 +25,17 @@ strict digraph "tests/contract_testcases/solana/selectors-must-be-different.sol"
 	note [label="definition of function 'f1'\ntests/contract_testcases/solana/selectors-must-be-different.sol:2:2-39"]
 	diagnostic_26 [label="function 'f3' selector is the same as function 'f1'\nlevel Error\ntests/contract_testcases/solana/selectors-must-be-different.sol:6:2-39"]
 	note_27 [label="definition of function 'f1'\ntests/contract_testcases/solana/selectors-must-be-different.sol:2:2-39"]
-	diagnostic_28 [label="found contract 'd'\nlevel Debug\ntests/contract_testcases/solana/selectors-must-be-different.sol:8:1-14:2"]
+	diagnostic_28 [label="found contract 'd'\nlevel Debug\ntests/contract_testcases/solana/selectors-must-be-different.sol:9:1-14:2"]
 	diagnostic_29 [label="c is already defined as a contract name\nlevel Warning\ntests/contract_testcases/solana/selectors-must-be-different.sol:10:13-14"]
 	note_30 [label="location of previous definition\ntests/contract_testcases/solana/selectors-must-be-different.sol:1:1-7:2"]
 	diagnostic_31 [label="function 'f1' selector is the same as function 'c'\nlevel Error\ntests/contract_testcases/solana/selectors-must-be-different.sol:13:2-45"]
 	note_32 [label="definition of function 'c'\ntests/contract_testcases/solana/selectors-must-be-different.sol:10:13-14"]
-	diagnostic_33 [label="found contract 'e'\nlevel Debug\ntests/contract_testcases/solana/selectors-must-be-different.sol:15:1-19:2"]
+	diagnostic_33 [label="found contract 'e'\nlevel Debug\ntests/contract_testcases/solana/selectors-must-be-different.sol:16:1-19:2"]
 	diagnostic_34 [label="function 'f1' selector '01' must be 4 bytes rather than 1 bytes\nlevel Error\ntests/contract_testcases/solana/selectors-must-be-different.sol:18:2-39"]
-	diagnostic_35 [label="found contract 'f'\nlevel Debug\ntests/contract_testcases/solana/selectors-must-be-different.sol:20:1-26:2"]
+	diagnostic_35 [label="found contract 'f'\nlevel Debug\ntests/contract_testcases/solana/selectors-must-be-different.sol:21:1-26:2"]
 	diagnostic_36 [label="function 'f2' selector is the same as function 'f1'\nlevel Error\ntests/contract_testcases/solana/selectors-must-be-different.sol:24:2-45"]
 	note_37 [label="definition of function 'f1'\ntests/contract_testcases/solana/selectors-must-be-different.sol:23:2-45"]
-	diagnostic_38 [label="found contract 'g'\nlevel Debug\ntests/contract_testcases/solana/selectors-must-be-different.sol:27:1-32:2"]
+	diagnostic_38 [label="found contract 'g'\nlevel Debug\ntests/contract_testcases/solana/selectors-must-be-different.sol:28:1-32:2"]
 	diagnostic_39 [label="function 'f3' selector is the same as function 'f1'\nlevel Error\ntests/contract_testcases/solana/selectors-must-be-different.sol:31:2-45"]
 	note_40 [label="definition of function 'f1'\ntests/contract_testcases/solana/selectors-must-be-different.sol:29:2-22"]
 	contracts -> contract

+ 2 - 2
tests/contract_testcases/solana/shift_struct_member.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/shift_struct_member.sol" {
 	uq144x112 [label="name:uq144x112\ncontract: FixedPoint\ntests/contract_testcases/solana/shift_struct_member.sol:4:12-21\nfield name:_x ty:uint256"]
 	uq112x112 [label="name:uq112x112\ncontract: FixedPoint\ntests/contract_testcases/solana/shift_struct_member.sol:8:12-21\nfield name:_x ty:uint224"]
-	contract [label="contract FixedPoint\ntests/contract_testcases/solana/shift_struct_member.sol:1:66-21:2"]
+	contract [label="contract FixedPoint\ntests/contract_testcases/solana/shift_struct_member.sol:2:1-21:2"]
 	decode [label="function decode\ncontract: FixedPoint\ntests/contract_testcases/solana/shift_struct_member.sol:13:5-75\nsignature decode((uint224))\nvisibility internal\nmutability pure"]
 	parameters [label="parameters\nstruct FixedPoint.uq112x112 self"]
 	returns [label="returns\nuint112 "]
@@ -24,7 +24,7 @@ strict digraph "tests/contract_testcases/solana/shift_struct_member.sol" {
 	variable_24 [label="variable: self\nstruct FixedPoint.uq144x112\ntests/contract_testcases/solana/shift_struct_member.sol:19:24-28"]
 	zero_ext_25 [label="zero extend uint256\ntests/contract_testcases/solana/shift_struct_member.sol:19:24-38"]
 	number_literal_26 [label="uint8 literal: 112\ntests/contract_testcases/solana/shift_struct_member.sol:19:35-38"]
-	diagnostic [label="found library 'FixedPoint'\nlevel Debug\ntests/contract_testcases/solana/shift_struct_member.sol:1:66-21:2"]
+	diagnostic [label="found library 'FixedPoint'\nlevel Debug\ntests/contract_testcases/solana/shift_struct_member.sol:2:1-21:2"]
 	structs -> uq144x112
 	structs -> uq112x112
 	contracts -> contract

+ 3 - 3
tests/contract_testcases/solana/simple.dot

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/simple.sol" {
 	S [label="name:S\ntests/contract_testcases/solana/simple.sol:3:8-9\nfield name:f1 ty:int64\nfield name:f2 ty:bool"]
-	inc [label="function inc\ntests/contract_testcases/solana/simple.sol:6:2-7:23\nsignature inc((int64,bool))\nvisibility internal\nmutability pure"]
+	inc [label="function inc\ntests/contract_testcases/solana/simple.sol:7:1-23\nsignature inc((int64,bool))\nvisibility internal\nmutability pure"]
 	parameters [label="parameters\nstruct S s"]
 	expr [label="expression\ntests/contract_testcases/solana/simple.sol:7:26-35"]
 	assign [label="assign\nvoid\ntests/contract_testcases/solana/simple.sol:7:26-35"]
@@ -12,9 +12,9 @@ strict digraph "tests/contract_testcases/solana/simple.sol" {
 	variable_12 [label="variable: s\nstruct S\ntests/contract_testcases/solana/simple.sol:7:26-27"]
 	number_literal [label="int64 literal: 1\ntests/contract_testcases/solana/simple.sol:7:34-35"]
 	contract [label="contract A\ntests/contract_testcases/solana/simple.sol:1:1-14"]
-	contract_16 [label="contract L\ntests/contract_testcases/solana/simple.sol:1:14-2:13"]
+	contract_16 [label="contract L\ntests/contract_testcases/solana/simple.sol:2:1-13"]
 	diagnostic [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:1-14"]
-	diagnostic_19 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:14-2:13"]
+	diagnostic_19 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:2:1-13"]
 	structs -> S
 	free_functions -> inc [label="function"]
 	inc -> parameters [label="parameters"]

+ 3 - 3
tests/contract_testcases/solana/type_called_error.dot

@@ -1,13 +1,13 @@
 strict digraph "tests/contract_testcases/solana/type_called_error.sol" {
 	error [label="name:error\ntests/contract_testcases/solana/type_called_error.sol:1:8-13\nfield name:f1 ty:int256"]
-	member [label="function member\ntests/contract_testcases/solana/type_called_error.sol:2:1-3:44\nsignature member((int256))\nvisibility internal\nmutability pure"]
+	member [label="function member\ntests/contract_testcases/solana/type_called_error.sol:3:1-44\nsignature member((int256))\nvisibility internal\nmutability pure"]
 	parameters [label="parameters\nstruct error e"]
 	returns [label="returns\nint256 "]
 	return [label="return\ntests/contract_testcases/solana/type_called_error.sol:4:2-13"]
 	load [label="load int256\ntests/contract_testcases/solana/type_called_error.sol:4:2-13"]
 	structmember [label="struct member #0 int256\ntests/contract_testcases/solana/type_called_error.sol:4:11-13"]
 	variable [label="variable: e\nstruct error\ntests/contract_testcases/solana/type_called_error.sol:4:9-10"]
-	contract [label="contract c\ntests/contract_testcases/solana/type_called_error.sol:8:1-16:2"]
+	contract [label="contract c\ntests/contract_testcases/solana/type_called_error.sol:9:1-16:2"]
 	var [label="variable v1\nvisibility public\ntests/contract_testcases/solana/type_called_error.sol:10:2-17"]
 	v1 [label="function v1\ncontract: c\ntests/contract_testcases/solana/type_called_error.sol:10:15-17\nsignature v1()\nvisibility public\nmutability view"]
 	returns_14 [label="returns\nstruct error "]
@@ -23,7 +23,7 @@ strict digraph "tests/contract_testcases/solana/type_called_error.sol" {
 	variable_24 [label="variable: e\nstruct error\ntests/contract_testcases/solana/type_called_error.sol:13:3-4"]
 	return_25 [label="return\ntests/contract_testcases/solana/type_called_error.sol:14:3-11"]
 	variable_26 [label="variable: e\nstruct error\ntests/contract_testcases/solana/type_called_error.sol:14:10-11"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/type_called_error.sol:8:1-16:2"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/type_called_error.sol:9:1-16:2"]
 	structs -> error
 	free_functions -> member [label="function"]
 	member -> parameters [label="parameters"]

+ 3 - 3
tests/contract_testcases/solana/type_decl.dot

@@ -1,10 +1,10 @@
 strict digraph "tests/contract_testcases/solana/type_decl.sol" {
-	Addr [label="name:Addr ty:address payable\ntests/contract_testcases/solana/type_decl.sol:1:1-2:29"]
+	Addr [label="name:Addr ty:address payable\ntests/contract_testcases/solana/type_decl.sol:2:1-29"]
 	Binary [label="name:Binary ty:bool\ncontract: x\ntests/contract_testcases/solana/type_decl.sol:5:2-21"]
-	contract [label="contract x\ntests/contract_testcases/solana/type_decl.sol:3:1-8:2"]
+	contract [label="contract x\ntests/contract_testcases/solana/type_decl.sol:4:1-8:2"]
 	f [label="function f\ncontract: x\ntests/contract_testcases/solana/type_decl.sol:7:2-33\nsignature f(bytes32,bool)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\nusertype Addr \nusertype x.Binary "]
-	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/type_decl.sol:3:1-8:2"]
+	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/type_decl.sol:4:1-8:2"]
 	diagnostic_9 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/type_decl.sol:7:2-33"]
 	types -> Addr
 	types -> Binary

+ 2 - 2
tests/contract_testcases/solana/type_decl_broken.dot

@@ -3,7 +3,7 @@ strict digraph "tests/contract_testcases/solana/type_decl_broken.sol" {
 	GlobalFoo [label="name:GlobalFoo\ncontract: c\ntests/contract_testcases/solana/type_decl_broken.sol:7:9-18\nfield name:f1 ty:int256"]
 	GlobalFoo_4 [label="name:GlobalFoo ty:address payable\ntests/contract_testcases/solana/type_decl_broken.sol:1:1-34"]
 	Value [label="name:Value ty:uint128\ncontract: c\ntests/contract_testcases/solana/type_decl_broken.sol:9:2-23"]
-	contract [label="contract c\ntests/contract_testcases/solana/type_decl_broken.sol:2:1-19:2"]
+	contract [label="contract c\ntests/contract_testcases/solana/type_decl_broken.sol:3:1-19:2"]
 	inc_and_wrap [label="function inc_and_wrap\ncontract: c\ntests/contract_testcases/solana/type_decl_broken.sol:12:2-56\nsignature inc_and_wrap(int128)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\nint128 v"]
 	returns [label="returns\nusertype c.Value "]
@@ -15,7 +15,7 @@ strict digraph "tests/contract_testcases/solana/type_decl_broken.sol" {
 	builtins [label="builtin UserTypeUnwrap\ntests/contract_testcases/solana/type_decl_broken.sol:17:10-25"]
 	variable [label="variable: v\nusertype c.Value\ntests/contract_testcases/solana/type_decl_broken.sol:17:23-24"]
 	number_literal [label="uint128 literal: 1\ntests/contract_testcases/solana/type_decl_broken.sol:17:28-29"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/type_decl_broken.sol:2:1-19:2"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/type_decl_broken.sol:3:1-19:2"]
 	diagnostic_21 [label="foo is already defined as a struct\nlevel Error\ntests/contract_testcases/solana/type_decl_broken.sol:5:7-10"]
 	note [label="location of previous definition\ntests/contract_testcases/solana/type_decl_broken.sol:4:9-12"]
 	diagnostic_23 [label="'int256[2]' is not an elementary value type\nlevel Error\ntests/contract_testcases/solana/type_decl_broken.sol:5:14-20"]

+ 4 - 4
tests/contract_testcases/solana/type_decl_broken_more.dot

@@ -1,15 +1,15 @@
 strict digraph "tests/contract_testcases/solana/type_decl_broken_more.sol" {
-	Addr [label="name:Addr ty:address payable\ntests/contract_testcases/solana/type_decl.sol:1:1-2:29"]
+	Addr [label="name:Addr ty:address payable\ntests/contract_testcases/solana/type_decl.sol:2:1-29"]
 	Binary [label="name:Binary ty:bool\ncontract: x\ntests/contract_testcases/solana/type_decl.sol:5:2-21"]
-	bar [label="function bar\ntests/contract_testcases/solana/type_decl_broken_more.sol:4:1-5:24\nsignature bar(int256)\nvisibility internal\nmutability nonpayable"]
+	bar [label="function bar\ntests/contract_testcases/solana/type_decl_broken_more.sol:5:1-24\nsignature bar(int256)\nvisibility internal\nmutability nonpayable"]
 	parameters [label="parameters\nint256 Addr"]
-	contract [label="contract x\ntests/contract_testcases/solana/type_decl.sol:3:1-8:2"]
+	contract [label="contract x\ntests/contract_testcases/solana/type_decl.sol:4:1-8:2"]
 	f [label="function f\ncontract: x\ntests/contract_testcases/solana/type_decl.sol:7:2-33\nsignature f(bytes32,bool)\nvisibility public\nmutability nonpayable"]
 	parameters_9 [label="parameters\nusertype Addr \nusertype x.Binary "]
 	diagnostic [label="'Addr' is an user type\nlevel Error\ntests/contract_testcases/solana/type_decl_broken_more.sol:3:14-18"]
 	diagnostic_12 [label="declaration of 'Addr' shadows type\nlevel Warning\ntests/contract_testcases/solana/type_decl_broken_more.sol:5:18-22"]
 	note [label="previous declaration of type\ntests/contract_testcases/solana/type_decl.sol:2:6-10"]
-	diagnostic_14 [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/type_decl.sol:3:1-8:2"]
+	diagnostic_14 [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/type_decl.sol:4:1-8:2"]
 	diagnostic_15 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/type_decl.sol:7:2-33"]
 	types -> Addr
 	types -> Binary

+ 2 - 2
tests/contract_testcases/solana/type_decl_broken_used_as_event.dot

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/type_decl_broken_used_as_event.sol" {
 	X [label="name:X ty:int256\ntests/contract_testcases/solana/type_decl_broken_used_as_event.sol:1:1-14"]
-	contract [label="contract c\ntests/contract_testcases/solana/type_decl_broken_used_as_event.sol:2:1-7:2"]
+	contract [label="contract c\ntests/contract_testcases/solana/type_decl_broken_used_as_event.sol:3:1-7:2"]
 	f [label="function f\ncontract: c\ntests/contract_testcases/solana/type_decl_broken_used_as_event.sol:4:2-21\nsignature f()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/type_decl_broken_used_as_event.sol:2:1-7:2"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/type_decl_broken_used_as_event.sol:3:1-7:2"]
 	diagnostic_7 [label="'X' is an user type\nlevel Error\ntests/contract_testcases/solana/type_decl_broken_used_as_event.sol:5:8-9"]
 	types -> X
 	contracts -> contract

+ 5 - 5
tests/contract_testcases/solana/type_decl_import.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/type_decl_import.sol" {
-	Addr [label="name:Addr ty:address payable\ntests/contract_testcases/solana/type_decl.sol:1:1-2:29"]
+	Addr [label="name:Addr ty:address payable\ntests/contract_testcases/solana/type_decl.sol:2:1-29"]
 	Binary [label="name:Binary ty:bool\ncontract: x\ntests/contract_testcases/solana/type_decl.sol:5:2-21"]
-	contract [label="contract d\ntests/contract_testcases/solana/type_decl_import.sol:2:1-10:2"]
+	contract [label="contract d\ntests/contract_testcases/solana/type_decl_import.sol:3:1-10:2"]
 	f [label="function f\ncontract: d\ntests/contract_testcases/solana/type_decl_import.sol:4:2-28\nsignature f(bytes32)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\ncontract x c"]
 	var_decl [label="variable decl usertype Addr a\ntests/contract_testcases/solana/type_decl_import.sol:5:3-41"]
@@ -16,11 +16,11 @@ strict digraph "tests/contract_testcases/solana/type_decl_import.sol" {
 	variable [label="variable: c\ncontract x\ntests/contract_testcases/solana/type_decl_import.sol:8:3-4"]
 	variable_17 [label="variable: a\nusertype Addr\ntests/contract_testcases/solana/type_decl_import.sol:8:7-8"]
 	variable_18 [label="variable: b\nusertype x.Binary\ntests/contract_testcases/solana/type_decl_import.sol:8:10-11"]
-	contract_19 [label="contract x\ntests/contract_testcases/solana/type_decl.sol:3:1-8:2"]
+	contract_19 [label="contract x\ntests/contract_testcases/solana/type_decl.sol:4:1-8:2"]
 	f_20 [label="function f\ncontract: x\ntests/contract_testcases/solana/type_decl.sol:7:2-33\nsignature f(bytes32,bool)\nvisibility public\nmutability nonpayable"]
 	parameters_21 [label="parameters\nusertype Addr \nusertype x.Binary "]
-	diagnostic [label="found contract 'd'\nlevel Debug\ntests/contract_testcases/solana/type_decl_import.sol:2:1-10:2"]
-	diagnostic_24 [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/type_decl.sol:3:1-8:2"]
+	diagnostic [label="found contract 'd'\nlevel Debug\ntests/contract_testcases/solana/type_decl_import.sol:3:1-10:2"]
+	diagnostic_24 [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/type_decl.sol:4:1-8:2"]
 	diagnostic_25 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/type_decl.sol:7:2-33"]
 	types -> Addr
 	types -> Binary

+ 6 - 6
tests/contract_testcases/solana/using_import.dot

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/using_import.sol" {
 	S [label="name:S\ntests/contract_testcases/solana/simple.sol:3:8-9\nfield name:f1 ty:int64\nfield name:f2 ty:bool"]
-	inc [label="function inc\ntests/contract_testcases/solana/simple.sol:6:2-7:23\nsignature inc((int64,bool))\nvisibility internal\nmutability pure"]
+	inc [label="function inc\ntests/contract_testcases/solana/simple.sol:7:1-23\nsignature inc((int64,bool))\nvisibility internal\nmutability pure"]
 	parameters [label="parameters\nstruct S s"]
 	expr [label="expression\ntests/contract_testcases/solana/simple.sol:7:26-35"]
 	assign [label="assign\nvoid\ntests/contract_testcases/solana/simple.sol:7:26-35"]
@@ -11,7 +11,7 @@ strict digraph "tests/contract_testcases/solana/using_import.sol" {
 	structmember_11 [label="struct member #0 int64\ntests/contract_testcases/solana/simple.sol:7:28-30"]
 	variable_12 [label="variable: s\nstruct S\ntests/contract_testcases/solana/simple.sol:7:26-27"]
 	number_literal [label="int64 literal: 1\ntests/contract_testcases/solana/simple.sol:7:34-35"]
-	dec [label="function dec\ntests/contract_testcases/solana/using_import.sol:2:1-3:31\nsignature dec((int64,bool))\nvisibility internal\nmutability pure"]
+	dec [label="function dec\ntests/contract_testcases/solana/using_import.sol:3:1-31\nsignature dec((int64,bool))\nvisibility internal\nmutability pure"]
 	parameters_15 [label="parameters\nstruct S s"]
 	expr_16 [label="expression\ntests/contract_testcases/solana/using_import.sol:3:34-43"]
 	assign_17 [label="assign\nvoid\ntests/contract_testcases/solana/using_import.sol:3:34-43"]
@@ -22,7 +22,7 @@ strict digraph "tests/contract_testcases/solana/using_import.sol" {
 	structmember_22 [label="struct member #0 int64\ntests/contract_testcases/solana/using_import.sol:3:36-38"]
 	variable_23 [label="variable: s\nstruct S\ntests/contract_testcases/solana/using_import.sol:3:34-35"]
 	number_literal_24 [label="int64 literal: 1\ntests/contract_testcases/solana/using_import.sol:3:42-43"]
-	contract [label="contract c\ntests/contract_testcases/solana/using_import.sol:5:1-11:2"]
+	contract [label="contract c\ntests/contract_testcases/solana/using_import.sol:6:1-11:2"]
 	test [label="function test\ncontract: c\ntests/contract_testcases/solana/using_import.sol:7:2-35\nsignature test((int64,bool))\nvisibility public\nmutability nonpayable"]
 	parameters_28 [label="parameters\nstruct S s"]
 	expr_29 [label="expression\ntests/contract_testcases/solana/using_import.sol:8:3-10"]
@@ -34,11 +34,11 @@ strict digraph "tests/contract_testcases/solana/using_import.sol" {
 	internal_function_35 [label="function(struct S) internal pure returns (void)\nfree function dec\ntests/contract_testcases/solana/using_import.sol:9:3-10"]
 	variable_36 [label="variable: s\nstruct S\ntests/contract_testcases/solana/using_import.sol:9:3-4"]
 	contract_37 [label="contract A\ntests/contract_testcases/solana/simple.sol:1:1-14"]
-	contract_38 [label="contract L\ntests/contract_testcases/solana/simple.sol:1:14-2:13"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/using_import.sol:5:1-11:2"]
+	contract_38 [label="contract L\ntests/contract_testcases/solana/simple.sol:2:1-13"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/using_import.sol:6:1-11:2"]
 	diagnostic_41 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/using_import.sol:7:2-35"]
 	diagnostic_42 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:1-14"]
-	diagnostic_43 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:14-2:13"]
+	diagnostic_43 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:2:1-13"]
 	structs -> S
 	free_functions -> inc [label="function"]
 	inc -> parameters [label="parameters"]

+ 4 - 4
tests/contract_testcases/solana/using_list.dot

@@ -4,13 +4,13 @@ strict digraph "tests/contract_testcases/solana/using_list.sol" {
 	returns [label="returns\nuint256 "]
 	return [label="return\ntests/contract_testcases/solana/using_list.sol:2:5-13"]
 	variable [label="variable: x\nuint256\ntests/contract_testcases/solana/using_list.sol:2:12-13"]
-	zero [label="function zero\ntests/contract_testcases/solana/using_list.sol:4:1-5:40\nsignature zero(uint256)\nvisibility internal\nmutability pure"]
+	zero [label="function zero\ntests/contract_testcases/solana/using_list.sol:5:1-40\nsignature zero(uint256)\nvisibility internal\nmutability pure"]
 	parameters_7 [label="parameters\nuint256 "]
 	returns_8 [label="returns\nuint256 "]
 	return_9 [label="return\ntests/contract_testcases/solana/using_list.sol:6:5-13"]
 	number_literal [label="uint256 literal: 0\ntests/contract_testcases/solana/using_list.sol:6:12-13"]
-	contract [label="contract C\ntests/contract_testcases/solana/using_list.sol:8:1-19:2"]
-	using [label="using for uint256\nfunction id tests/contract_testcases/solana/using_list.sol:1:1-40\nfunction zero tests/contract_testcases/solana/using_list.sol:4:1-5:40"]
+	contract [label="contract C\ntests/contract_testcases/solana/using_list.sol:9:1-19:2"]
+	using [label="using for uint256\nfunction id tests/contract_testcases/solana/using_list.sol:1:1-40\nfunction zero tests/contract_testcases/solana/using_list.sol:5:1-40"]
 	f [label="function f\ncontract: C\ntests/contract_testcases/solana/using_list.sol:10:5-51\nsignature f(uint256)\nvisibility external\nmutability pure"]
 	parameters_15 [label="parameters\nuint256 z"]
 	returns_16 [label="returns\nuint256 "]
@@ -25,7 +25,7 @@ strict digraph "tests/contract_testcases/solana/using_list.sol" {
 	call_internal_function_25 [label="call internal function\ntests/contract_testcases/solana/using_list.sol:15:16-24"]
 	internal_function_26 [label="function(uint256) internal pure returns (uint256)\nfree function zero\ntests/contract_testcases/solana/using_list.sol:15:16-24"]
 	variable_27 [label="variable: z\nuint256\ntests/contract_testcases/solana/using_list.sol:15:16-17"]
-	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/using_list.sol:8:1-19:2"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/using_list.sol:9:1-19:2"]
 	free_functions -> id [label="function"]
 	id -> parameters [label="parameters"]
 	id -> returns [label="returns"]

+ 2 - 2
tests/contract_testcases/solana/using_literal.dot

@@ -6,14 +6,14 @@ strict digraph "tests/contract_testcases/solana/using_literal.sol" {
 	multiply [label="multiply\nint256\ntests/contract_testcases/solana/using_literal.sol:1:52-57"]
 	variable [label="variable: x\nint256\ntests/contract_testcases/solana/using_literal.sol:1:52-53"]
 	number_literal [label="int256 literal: 2\ntests/contract_testcases/solana/using_literal.sol:1:56-57"]
-	contract [label="contract C\ntests/contract_testcases/solana/using_literal.sol:4:1-9:2"]
+	contract [label="contract C\ntests/contract_testcases/solana/using_literal.sol:5:1-9:2"]
 	foo [label="function foo\ncontract: C\ntests/contract_testcases/solana/using_literal.sol:6:2-42\nsignature foo()\nvisibility public\nmutability pure"]
 	returns_11 [label="returns\nint256 "]
 	return_12 [label="return\ntests/contract_testcases/solana/using_literal.sol:7:3-21"]
 	call_internal_function [label="call internal function\ntests/contract_testcases/solana/using_literal.sol:7:10-21"]
 	internal_function [label="function(int256) internal pure returns (int256)\nfree function double\ntests/contract_testcases/solana/using_literal.sol:7:10-21"]
 	number_literal_15 [label="int256 literal: 42\ntests/contract_testcases/solana/using_literal.sol:7:10-12"]
-	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/using_literal.sol:4:1-9:2"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/using_literal.sol:5:1-9:2"]
 	free_functions -> double [label="function"]
 	double -> parameters [label="parameters"]
 	double -> returns [label="returns"]

+ 2 - 2
tests/contract_testcases/substrate/arrays/multi_dim.dot

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/substrate/arrays/multi_dim.sol" {
-	contract [label="contract c\ntests/contract_testcases/substrate/arrays/multi_dim.sol:1:52-8:2"]
+	contract [label="contract c\ntests/contract_testcases/substrate/arrays/multi_dim.sol:2:1-8:2"]
 	test [label="function test\ncontract: c\ntests/contract_testcases/substrate/arrays/multi_dim.sol:3:2-52\nsignature test()\nvisibility public\nmutability pure"]
 	returns [label="returns\nuint256 ret1"]
 	var_decl [label="variable decl uint256[3][] vec\ntests/contract_testcases/substrate/arrays/multi_dim.sol:4:3-19"]
@@ -17,7 +17,7 @@ strict digraph "tests/contract_testcases/substrate/arrays/multi_dim.sol" {
 	variable_16 [label="variable: vec\nuint256[3][]\ntests/contract_testcases/substrate/arrays/multi_dim.sol:6:10-13"]
 	number_literal_17 [label="uint32 literal: 1\ntests/contract_testcases/substrate/arrays/multi_dim.sol:6:14-15"]
 	number_literal_18 [label="uint32 literal: 1\ntests/contract_testcases/substrate/arrays/multi_dim.sol:6:17-18"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/substrate/arrays/multi_dim.sol:1:52-8:2"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/substrate/arrays/multi_dim.sol:2:1-8:2"]
 	contracts -> contract
 	contract -> test [label="function"]
 	test -> returns [label="returns"]

+ 2 - 2
tests/contract_testcases/substrate/arrays/push_array_literal.dot

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/substrate/arrays/push_array_literal.sol" {
-	contract [label="contract c\ntests/contract_testcases/substrate/arrays/push_array_literal.sol:1:52-8:2"]
+	contract [label="contract c\ntests/contract_testcases/substrate/arrays/push_array_literal.sol:2:1-8:2"]
 	var [label="variable s_vec\nvisibility internal\ntests/contract_testcases/substrate/arrays/push_array_literal.sol:3:2-20"]
 	test [label="function test\ncontract: c\ntests/contract_testcases/substrate/arrays/push_array_literal.sol:4:2-47\nsignature test()\nvisibility public\nmutability nonpayable"]
 	returns [label="returns\nuint256 ret1"]
@@ -17,7 +17,7 @@ strict digraph "tests/contract_testcases/substrate/arrays/push_array_literal.sol
 	storage_var_16 [label="storage variable\nc.s_vec\nuint256[3][] storage\ntests/contract_testcases/substrate/arrays/push_array_literal.sol:6:10-15"]
 	number_literal_17 [label="uint256 literal: 1\ntests/contract_testcases/substrate/arrays/push_array_literal.sol:6:16-17"]
 	number_literal_18 [label="uint256 literal: 1\ntests/contract_testcases/substrate/arrays/push_array_literal.sol:6:19-20"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/substrate/arrays/push_array_literal.sol:1:52-8:2"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/substrate/arrays/push_array_literal.sol:2:1-8:2"]
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> test [label="function"]

+ 3 - 3
tests/contract_testcases/substrate/contracts/contract_public_functions_01.dot

@@ -1,11 +1,11 @@
 strict digraph "tests/contract_testcases/substrate/contracts/contract_public_functions_01.sol" {
 	contract [label="contract a\ntests/contract_testcases/substrate/contracts/contract_public_functions_01.sol:1:1-3:2"]
 	foo [label="function foo\ncontract: a\ntests/contract_testcases/substrate/contracts/contract_public_functions_01.sol:2:5-32\nsignature foo()\nvisibility private\nmutability pure"]
-	contract_3 [label="contract b\ntests/contract_testcases/substrate/contracts/contract_public_functions_01.sol:4:1-7:2"]
+	contract_3 [label="contract b\ntests/contract_testcases/substrate/contracts/contract_public_functions_01.sol:5:1-7:2"]
 	foo_4 [label="function foo\ncontract: b\ntests/contract_testcases/substrate/contracts/contract_public_functions_01.sol:6:5-32\nsignature foo()\nvisibility private\nmutability pure"]
 	diagnostic [label="found abstract contract 'a'\nlevel Debug\ntests/contract_testcases/substrate/contracts/contract_public_functions_01.sol:1:1-3:2"]
-	diagnostic_7 [label="found contract 'b'\nlevel Debug\ntests/contract_testcases/substrate/contracts/contract_public_functions_01.sol:4:1-7:2"]
-	diagnostic_8 [label="contracts without public storage or functions are not allowed on Substrate. Consider declaring this contract abstract: 'abstract contract b'\nlevel Error\ntests/contract_testcases/substrate/contracts/contract_public_functions_01.sol:4:1-7:2"]
+	diagnostic_7 [label="found contract 'b'\nlevel Debug\ntests/contract_testcases/substrate/contracts/contract_public_functions_01.sol:5:1-7:2"]
+	diagnostic_8 [label="contracts without public storage or functions are not allowed on Substrate. Consider declaring this contract abstract: 'abstract contract b'\nlevel Error\ntests/contract_testcases/substrate/contracts/contract_public_functions_01.sol:5:1-7:2"]
 	contracts -> contract
 	contract -> foo [label="function"]
 	contracts -> contract_3

+ 2 - 2
tests/contract_testcases/substrate/contracts/contract_public_functions_02.dot

@@ -1,10 +1,10 @@
 strict digraph "tests/contract_testcases/substrate/contracts/contract_public_functions_02.sol" {
 	contract [label="contract a\ntests/contract_testcases/substrate/contracts/contract_public_functions_02.sol:1:1-3:2"]
 	node_2 [label="fallback \ncontract: a\ntests/contract_testcases/substrate/contracts/contract_public_functions_02.sol:2:5-24\nmutability nonpayable"]
-	contract_3 [label="contract b\ntests/contract_testcases/substrate/contracts/contract_public_functions_02.sol:4:1-7:2"]
+	contract_3 [label="contract b\ntests/contract_testcases/substrate/contracts/contract_public_functions_02.sol:5:1-7:2"]
 	node_4 [label="receive \ncontract: b\ntests/contract_testcases/substrate/contracts/contract_public_functions_02.sol:6:5-31\nmutability payable"]
 	diagnostic [label="found contract 'a'\nlevel Debug\ntests/contract_testcases/substrate/contracts/contract_public_functions_02.sol:1:1-3:2"]
-	diagnostic_7 [label="found contract 'b'\nlevel Debug\ntests/contract_testcases/substrate/contracts/contract_public_functions_02.sol:4:1-7:2"]
+	diagnostic_7 [label="found contract 'b'\nlevel Debug\ntests/contract_testcases/substrate/contracts/contract_public_functions_02.sol:5:1-7:2"]
 	contracts -> contract
 	contract -> node_2 [label="fallback"]
 	contracts -> contract_3

+ 5 - 5
tests/contract_testcases/substrate/contracts/contract_public_functions_03.dot

@@ -1,19 +1,19 @@
 strict digraph "tests/contract_testcases/substrate/contracts/contract_public_functions_03.sol" {
 	contract [label="contract a\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:1:1-3:2"]
 	var [label="variable foo\nvisibility private\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:2:5-24"]
-	contract_3 [label="contract b\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:4:1-7:2"]
+	contract_3 [label="contract b\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:5:1-7:2"]
 	var_4 [label="variable foo\nvisibility public\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:6:5-23"]
 	foo [label="function foo\ncontract: b\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:6:20-23\nsignature foo()\nvisibility public\nmutability view"]
 	returns [label="returns\nuint256 "]
 	return [label="return\nimplicit"]
 	storage_load [label="storage load uint256\nimplicit"]
 	storage_var [label="storage variable\nb.foo\nuint256 storage\nimplicit"]
-	contract_10 [label="contract c\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:8:1-11:2"]
+	contract_10 [label="contract c\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:9:1-11:2"]
 	var_11 [label="variable foo\nvisibility private\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:10:5-24"]
 	diagnostic [label="found abstract contract 'a'\nlevel Debug\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:1:1-3:2"]
-	diagnostic_14 [label="found contract 'b'\nlevel Debug\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:4:1-7:2"]
-	diagnostic_15 [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:8:1-11:2"]
-	diagnostic_16 [label="contracts without public storage or functions are not allowed on Substrate. Consider declaring this contract abstract: 'abstract contract c'\nlevel Error\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:8:1-11:2"]
+	diagnostic_14 [label="found contract 'b'\nlevel Debug\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:5:1-7:2"]
+	diagnostic_15 [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:9:1-11:2"]
+	diagnostic_16 [label="contracts without public storage or functions are not allowed on Substrate. Consider declaring this contract abstract: 'abstract contract c'\nlevel Error\ntests/contract_testcases/substrate/contracts/contract_public_functions_03.sol:9:1-11:2"]
 	contracts -> contract
 	contract -> var [label="variable"]
 	contracts -> contract_3

+ 6 - 6
tests/contract_testcases/substrate/inheritance/base_contract_access_via_name.dot

@@ -20,7 +20,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/base_contract_acc
 	assign [label="assign\nuint256 storage\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:8:9-18"]
 	storage_var_20 [label="storage variable\nBase.something\nuint256 storage\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:8:9-18"]
 	variable [label="variable: val\nuint256\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:8:21-24"]
-	contract_22 [label="contract A\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:11:1-18:2"]
+	contract_22 [label="contract A\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:12:1-18:2"]
 	a [label="function a\ncontract: A\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:13:5-24\nsignature a()\nvisibility public\nmutability nonpayable"]
 	if [label="if\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:14:9-16:10"]
 	equal [label="equal\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:14:13-26"]
@@ -30,13 +30,13 @@ strict digraph "tests/contract_testcases/substrate/inheritance/base_contract_acc
 	builtins [label="builtin Print\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:15:13-18"]
 	alloc_array [label="alloc array string\ninitializer: 6869\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:15:19-23"]
 	number_literal_31 [label="uint32 literal: 2\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:15:19-23"]
-	contract_32 [label="contract B\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:19:1-24:2"]
+	contract_32 [label="contract B\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:20:1-24:2"]
 	b [label="function b\ncontract: B\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:21:5-24\nsignature b()\nvisibility public\nmutability nonpayable"]
 	expr_34 [label="expression\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:22:9-20"]
 	call_internal_function [label="call internal function\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:22:9-20"]
 	internal_function [label="function(uint256) internal returns (void)\nBase.set\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:22:9-20"]
 	number_literal_37 [label="uint256 literal: 1\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:22:18-19"]
-	contract_38 [label="contract C\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:25:1-36:2"]
+	contract_38 [label="contract C\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:26:1-36:2"]
 	base [label="base Base\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:26:15-19"]
 	c [label="function c\ncontract: C\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:27:5-24\nsignature c()\nvisibility public\nmutability nonpayable"]
 	if_41 [label="if\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:28:9-30:10"]
@@ -56,10 +56,10 @@ strict digraph "tests/contract_testcases/substrate/inheritance/base_contract_acc
 	variable_55 [label="variable: val\nuint256\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:34:21-24"]
 	number_literal_56 [label="uint256 literal: 1024\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:34:27-31"]
 	diagnostic [label="found contract 'Base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:1:1-10:2"]
-	diagnostic_59 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:11:1-18:2"]
-	diagnostic_60 [label="found contract 'B'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:19:1-24:2"]
+	diagnostic_59 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:12:1-18:2"]
+	diagnostic_60 [label="found contract 'B'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:20:1-24:2"]
 	diagnostic_61 [label="function calls via contract name are only valid for base contracts\nlevel Error\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:22:9-20"]
-	diagnostic_62 [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:25:1-36:2"]
+	diagnostic_62 [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contract_access_via_name.sol:26:1-36:2"]
 	contracts -> contract
 	contract -> var [label="variable"]
 	var -> number_literal [label="initializer"]

+ 4 - 4
tests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.dot

@@ -7,13 +7,13 @@ strict digraph "tests/contract_testcases/substrate/inheritance/base_contracts_ac
 	assign [label="assign\nuint256 storage\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:5:9-18"]
 	storage_var [label="storage variable\nBase.something\nuint256 storage\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:5:9-18"]
 	variable [label="variable: val\nuint256\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:5:21-24"]
-	contract_9 [label="contract A\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:8:1-13:2"]
+	contract_9 [label="contract A\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:9:1-13:2"]
 	a [label="function a\ncontract: A\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:10:5-29\nsignature a()\nvisibility public\nmutability pure"]
 	expr_11 [label="expression\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:11:9-27"]
 	call_internal_function [label="call internal function\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:11:9-27"]
 	internal_function [label="function(uint256) internal pure returns (void)\nBase.set\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:11:9-27"]
 	number_literal [label="uint256 literal: 1\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:11:24-25"]
-	contract_15 [label="contract B\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:14:1-19:2"]
+	contract_15 [label="contract B\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:15:1-19:2"]
 	base [label="base Base\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:15:15-19"]
 	b [label="function b\ncontract: B\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:16:5-29\nsignature b()\nvisibility public\nmutability pure"]
 	expr_18 [label="expression\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:17:9-27"]
@@ -21,9 +21,9 @@ strict digraph "tests/contract_testcases/substrate/inheritance/base_contracts_ac
 	internal_function_20 [label="function(uint256) internal pure returns (void)\nBase.set\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:17:9-27"]
 	number_literal_21 [label="uint256 literal: 1\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:17:24-25"]
 	diagnostic [label="found contract 'Base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:1:1-7:2"]
-	diagnostic_24 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:8:1-13:2"]
+	diagnostic_24 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:9:1-13:2"]
 	diagnostic_25 [label="function calls via contract name are only valid for base contracts\nlevel Error\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:11:9-27"]
-	diagnostic_26 [label="found contract 'B'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:14:1-19:2"]
+	diagnostic_26 [label="found contract 'B'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contracts_access_named_args_via_name.sol:15:1-19:2"]
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> set [label="function"]

+ 8 - 8
tests/contract_testcases/substrate/libraries/using_07.dot

@@ -1,17 +1,17 @@
 strict digraph "tests/contract_testcases/substrate/libraries/using_07.sol" {
 	foo1 [label="function foo1\ntests/contract_testcases/substrate/libraries/using_07.sol:1:1-17\nsignature foo1()\nvisibility internal\nmutability nonpayable"]
-	foo2 [label="function foo2\ntests/contract_testcases/substrate/libraries/using_07.sol:1:19-2:20\nsignature foo2(int256)\nvisibility internal\nmutability nonpayable"]
+	foo2 [label="function foo2\ntests/contract_testcases/substrate/libraries/using_07.sol:2:1-20\nsignature foo2(int256)\nvisibility internal\nmutability nonpayable"]
 	parameters [label="parameters\nint256 "]
-	foo2_4 [label="function foo2\ntests/contract_testcases/substrate/libraries/using_07.sol:2:22-3:21\nsignature foo2(uint256)\nvisibility internal\nmutability nonpayable"]
+	foo2_4 [label="function foo2\ntests/contract_testcases/substrate/libraries/using_07.sol:3:1-21\nsignature foo2(uint256)\nvisibility internal\nmutability nonpayable"]
 	parameters_5 [label="parameters\nuint256 "]
-	foo3 [label="function foo3\ntests/contract_testcases/substrate/libraries/using_07.sol:3:23-4:35\nsignature foo3(int256)\nvisibility internal\nmutability nonpayable"]
+	foo3 [label="function foo3\ntests/contract_testcases/substrate/libraries/using_07.sol:4:1-35\nsignature foo3(int256)\nvisibility internal\nmutability nonpayable"]
 	parameters_7 [label="parameters\nint256 v"]
 	returns [label="returns\nint256 "]
 	return [label="return\ntests/contract_testcases/substrate/libraries/using_07.sol:5:2-14"]
 	multiply [label="multiply\nint256\ntests/contract_testcases/substrate/libraries/using_07.sol:5:9-14"]
 	variable [label="variable: v\nint256\ntests/contract_testcases/substrate/libraries/using_07.sol:5:9-10"]
 	number_literal [label="int256 literal: 3\ntests/contract_testcases/substrate/libraries/using_07.sol:5:13-14"]
-	foo4 [label="function foo4\ntests/contract_testcases/substrate/libraries/using_07.sol:6:2-7:42\nsignature foo4(int256,int256)\nvisibility internal\nmutability nonpayable"]
+	foo4 [label="function foo4\ntests/contract_testcases/substrate/libraries/using_07.sol:7:1-42\nsignature foo4(int256,int256)\nvisibility internal\nmutability nonpayable"]
 	parameters_14 [label="parameters\nint256 v\nint256 b"]
 	returns_15 [label="returns\nint256 "]
 	return_16 [label="return\ntests/contract_testcases/substrate/libraries/using_07.sol:8:2-18"]
@@ -20,10 +20,10 @@ strict digraph "tests/contract_testcases/substrate/libraries/using_07.sol" {
 	variable_19 [label="variable: v\nint256\ntests/contract_testcases/substrate/libraries/using_07.sol:8:9-10"]
 	number_literal_20 [label="int256 literal: 3\ntests/contract_testcases/substrate/libraries/using_07.sol:8:13-14"]
 	variable_21 [label="variable: b\nint256\ntests/contract_testcases/substrate/libraries/using_07.sol:8:17-18"]
-	contract [label="contract C\ntests/contract_testcases/substrate/libraries/using_07.sol:10:1-22:2"]
+	contract [label="contract C\ntests/contract_testcases/substrate/libraries/using_07.sol:11:1-22:2"]
 	using [label="using for int256"]
 	using_26 [label="using for uint256"]
-	using_27 [label="using for int256\nfunction foo3 tests/contract_testcases/substrate/libraries/using_07.sol:3:23-4:35\nfunction foo4 tests/contract_testcases/substrate/libraries/using_07.sol:6:2-7:42"]
+	using_27 [label="using for int256\nfunction foo3 tests/contract_testcases/substrate/libraries/using_07.sol:4:1-35\nfunction foo4 tests/contract_testcases/substrate/libraries/using_07.sol:7:1-42"]
 	test [label="function test\ncontract: C\ntests/contract_testcases/substrate/libraries/using_07.sol:17:2-29\nsignature test(int256)\nvisibility public\nmutability nonpayable"]
 	parameters_29 [label="parameters\nint256 c"]
 	var_decl [label="variable decl int256 a\ntests/contract_testcases/substrate/libraries/using_07.sol:18:3-19"]
@@ -35,13 +35,13 @@ strict digraph "tests/contract_testcases/substrate/libraries/using_07.sol" {
 	internal_function_36 [label="function(int256,int256) internal returns (void)\nfree function foo4\ntests/contract_testcases/substrate/libraries/using_07.sol:20:3-12"]
 	variable_37 [label="variable: a\nint256\ntests/contract_testcases/substrate/libraries/using_07.sol:20:3-4"]
 	number_literal_38 [label="int256 literal: 1\ntests/contract_testcases/substrate/libraries/using_07.sol:20:10-11"]
-	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/substrate/libraries/using_07.sol:10:1-22:2"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/substrate/libraries/using_07.sol:11:1-22:2"]
 	diagnostic_41 [label="'foo1' has no arguments, at least one argument required\nlevel Error\ntests/contract_testcases/substrate/libraries/using_07.sol:12:9-13"]
 	note [label="definition of 'foo1'\ntests/contract_testcases/substrate/libraries/using_07.sol:1:10-14"]
 	diagnostic_43 [label="'global' on using within contract not permitted\nlevel Error\ntests/contract_testcases/substrate/libraries/using_07.sol:12:23-29"]
 	diagnostic_44 [label="'foo2' is an overloaded function\nlevel Error\ntests/contract_testcases/substrate/libraries/using_07.sol:13:9-13"]
 	note_45 [label="definition of 'foo2'\ntests/contract_testcases/substrate/libraries/using_07.sol:2:10-14"]
-	note_46 [label="definition of 'foo2'\ntests/contract_testcases/substrate/libraries/using_07.sol:2:22-3:21"]
+	note_46 [label="definition of 'foo2'\ntests/contract_testcases/substrate/libraries/using_07.sol:3:1-21"]
 	diagnostic_47 [label="'feh' not expected, did you mean 'global'?\nlevel Error\ntests/contract_testcases/substrate/libraries/using_07.sol:13:21-24"]
 	diagnostic_48 [label="function cannot be used since first argument is 'int256' rather than the required 'uint256'\nlevel Error\ntests/contract_testcases/substrate/libraries/using_07.sol:14:9-13"]
 	note_49 [label="definition of 'foo3'\ntests/contract_testcases/substrate/libraries/using_07.sol:4:10-14"]

+ 5 - 5
tests/contract_testcases/substrate/libraries/using_08.dot

@@ -2,25 +2,25 @@ strict digraph "tests/contract_testcases/substrate/libraries/using_08.sol" {
 	S [label="name:S\ntests/contract_testcases/substrate/libraries/using_08.sol:2:8-9\nfield name:f1 ty:int256"]
 	foo [label="function foo\ntests/contract_testcases/substrate/libraries/using_08.sol:1:1-19\nsignature foo(int256)\nvisibility internal\nmutability nonpayable"]
 	parameters [label="parameters\nint256 "]
-	bar [label="function bar\ntests/contract_testcases/substrate/libraries/using_08.sol:2:21-3:24\nsignature bar((int256))\nvisibility internal\nmutability nonpayable"]
+	bar [label="function bar\ntests/contract_testcases/substrate/libraries/using_08.sol:3:1-24\nsignature bar((int256))\nvisibility internal\nmutability nonpayable"]
 	parameters_6 [label="parameters\nstruct S "]
-	test [label="function test\ntests/contract_testcases/substrate/libraries/using_08.sol:9:1-10:22\nsignature test(int256)\nvisibility internal\nmutability nonpayable"]
+	test [label="function test\ntests/contract_testcases/substrate/libraries/using_08.sol:10:1-22\nsignature test(int256)\nvisibility internal\nmutability nonpayable"]
 	parameters_8 [label="parameters\nint256 a"]
 	expr [label="expression\ntests/contract_testcases/substrate/libraries/using_08.sol:11:2-9"]
 	call_internal_function [label="call internal function\ntests/contract_testcases/substrate/libraries/using_08.sol:11:2-9"]
 	internal_function [label="function(int256) internal returns (void)\nfree function foo\ntests/contract_testcases/substrate/libraries/using_08.sol:11:2-9"]
 	variable [label="variable: a\nint256\ntests/contract_testcases/substrate/libraries/using_08.sol:11:2-3"]
-	contract [label="contract c\ntests/contract_testcases/substrate/libraries/using_08.sol:13:1-18:2"]
+	contract [label="contract c\ntests/contract_testcases/substrate/libraries/using_08.sol:14:1-18:2"]
 	f [label="function f\ncontract: c\ntests/contract_testcases/substrate/libraries/using_08.sol:15:2-31\nsignature f((int256))\nvisibility public\nmutability nonpayable"]
 	parameters_16 [label="parameters\nstruct S s"]
 	expr_17 [label="expression\ntests/contract_testcases/substrate/libraries/using_08.sol:16:3-10"]
 	call_internal_function_18 [label="call internal function\ntests/contract_testcases/substrate/libraries/using_08.sol:16:3-10"]
 	internal_function_19 [label="function(struct S) internal returns (void)\nfree function bar\ntests/contract_testcases/substrate/libraries/using_08.sol:16:3-10"]
 	variable_20 [label="variable: s\nstruct S\ntests/contract_testcases/substrate/libraries/using_08.sol:16:3-4"]
-	diagnostic [label="using must be bound to specific type, '*' cannot be used on file scope\nlevel Error\ntests/contract_testcases/substrate/libraries/using_08.sol:4:1-5:18"]
+	diagnostic [label="using must be bound to specific type, '*' cannot be used on file scope\nlevel Error\ntests/contract_testcases/substrate/libraries/using_08.sol:5:1-18"]
 	diagnostic_23 [label="'global' only permitted on user defined types\nlevel Error\ntests/contract_testcases/substrate/libraries/using_08.sol:6:21-27"]
 	diagnostic_24 [label="'meh' not expected, did you mean 'global'?\nlevel Error\ntests/contract_testcases/substrate/libraries/using_08.sol:8:19-22"]
-	diagnostic_25 [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/substrate/libraries/using_08.sol:13:1-18:2"]
+	diagnostic_25 [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/substrate/libraries/using_08.sol:14:1-18:2"]
 	structs -> S
 	free_functions -> foo [label="function"]
 	foo -> parameters [label="parameters"]

+ 5 - 5
tests/contract_testcases/substrate/libraries/using_09.dot

@@ -2,15 +2,15 @@ strict digraph "tests/contract_testcases/substrate/libraries/using_09.sol" {
 	S [label="name:S\ntests/contract_testcases/substrate/libraries/using_09.sol:2:8-9\nfield name:f1 ty:int256"]
 	foo [label="function foo\ntests/contract_testcases/substrate/libraries/using_09.sol:1:1-19\nsignature foo(int256)\nvisibility internal\nmutability nonpayable"]
 	parameters [label="parameters\nint256 "]
-	bar [label="function bar\ntests/contract_testcases/substrate/libraries/using_09.sol:2:21-3:24\nsignature bar((int256))\nvisibility internal\nmutability nonpayable"]
+	bar [label="function bar\ntests/contract_testcases/substrate/libraries/using_09.sol:3:1-24\nsignature bar((int256))\nvisibility internal\nmutability nonpayable"]
 	parameters_6 [label="parameters\nstruct S "]
-	test [label="function test\ntests/contract_testcases/substrate/libraries/using_09.sol:7:1-8:22\nsignature test(int256)\nvisibility internal\nmutability nonpayable"]
+	test [label="function test\ntests/contract_testcases/substrate/libraries/using_09.sol:8:1-22\nsignature test(int256)\nvisibility internal\nmutability nonpayable"]
 	parameters_8 [label="parameters\nint256 a"]
 	expr [label="expression\ntests/contract_testcases/substrate/libraries/using_09.sol:9:2-9"]
 	call_internal_function [label="call internal function\ntests/contract_testcases/substrate/libraries/using_09.sol:9:2-9"]
 	internal_function [label="function(int256) internal returns (void)\nfree function foo\ntests/contract_testcases/substrate/libraries/using_09.sol:9:2-9"]
 	variable [label="variable: a\nint256\ntests/contract_testcases/substrate/libraries/using_09.sol:9:2-3"]
-	contract [label="contract c\ntests/contract_testcases/substrate/libraries/using_09.sol:11:1-16:2"]
+	contract [label="contract c\ntests/contract_testcases/substrate/libraries/using_09.sol:12:1-16:2"]
 	f [label="function f\ncontract: c\ntests/contract_testcases/substrate/libraries/using_09.sol:13:2-31\nsignature f((int256))\nvisibility public\nmutability nonpayable"]
 	parameters_16 [label="parameters\nstruct S s"]
 	expr_17 [label="expression\ntests/contract_testcases/substrate/libraries/using_09.sol:14:3-10"]
@@ -18,8 +18,8 @@ strict digraph "tests/contract_testcases/substrate/libraries/using_09.sol" {
 	internal_function_19 [label="function(struct S) internal returns (void)\nfree function bar\ntests/contract_testcases/substrate/libraries/using_09.sol:14:3-10"]
 	variable_20 [label="variable: s\nstruct S\ntests/contract_testcases/substrate/libraries/using_09.sol:14:3-4"]
 	diagnostic [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/substrate/libraries/using_09.sol:1:1-19"]
-	diagnostic_23 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/substrate/libraries/using_09.sol:2:21-3:24"]
-	diagnostic_24 [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/substrate/libraries/using_09.sol:11:1-16:2"]
+	diagnostic_23 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/substrate/libraries/using_09.sol:3:1-24"]
+	diagnostic_24 [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/substrate/libraries/using_09.sol:12:1-16:2"]
 	structs -> S
 	free_functions -> foo [label="function"]
 	foo -> parameters [label="parameters"]

+ 8 - 8
tests/contract_testcases/substrate/selector_override_inherited.dot

@@ -1,26 +1,26 @@
 strict digraph "tests/contract_testcases/substrate/selector_override_inherited.sol" {
 	contract [label="contract base\ntests/contract_testcases/substrate/selector_override_inherited.sol:1:1-3:2"]
 	func [label="function func\ncontract: base\ntests/contract_testcases/substrate/selector_override_inherited.sol:2:2-55\nsignature func()\nvisibility public\nmutability nonpayable\nvirtual\nselector abcdef01"]
-	contract_3 [label="contract child\ntests/contract_testcases/substrate/selector_override_inherited.sol:4:1-7:2"]
+	contract_3 [label="contract child\ntests/contract_testcases/substrate/selector_override_inherited.sol:5:1-7:2"]
 	base [label="base base\ntests/contract_testcases/substrate/selector_override_inherited.sol:5:19-23"]
 	func_5 [label="function func\ncontract: child\ntests/contract_testcases/substrate/selector_override_inherited.sol:6:2-56\nsignature func()\nvisibility public\nmutability nonpayable\noverride\nselector abcdef02"]
-	contract_6 [label="contract child2\ntests/contract_testcases/substrate/selector_override_inherited.sol:8:1-11:2"]
+	contract_6 [label="contract child2\ntests/contract_testcases/substrate/selector_override_inherited.sol:9:1-11:2"]
 	base_7 [label="base base\ntests/contract_testcases/substrate/selector_override_inherited.sol:9:20-24"]
 	func_8 [label="function func\ncontract: child2\ntests/contract_testcases/substrate/selector_override_inherited.sol:10:2-33\nsignature func()\nvisibility public\nmutability nonpayable\noverride"]
-	contract_9 [label="contract base2\ntests/contract_testcases/substrate/selector_override_inherited.sol:12:1-15:2"]
+	contract_9 [label="contract base2\ntests/contract_testcases/substrate/selector_override_inherited.sol:13:1-15:2"]
 	func_10 [label="function func\ncontract: base2\ntests/contract_testcases/substrate/selector_override_inherited.sol:14:2-32\nsignature func()\nvisibility public\nmutability nonpayable\nvirtual"]
-	contract_11 [label="contract child3\ntests/contract_testcases/substrate/selector_override_inherited.sol:16:1-19:2"]
+	contract_11 [label="contract child3\ntests/contract_testcases/substrate/selector_override_inherited.sol:17:1-19:2"]
 	base_12 [label="base base2\ntests/contract_testcases/substrate/selector_override_inherited.sol:17:20-25"]
 	func_13 [label="function func\ncontract: child3\ntests/contract_testcases/substrate/selector_override_inherited.sol:18:2-56\nsignature func()\nvisibility public\nmutability nonpayable\noverride\nselector abcdef02"]
 	diagnostic [label="found contract 'base'\nlevel Debug\ntests/contract_testcases/substrate/selector_override_inherited.sol:1:1-3:2"]
-	diagnostic_16 [label="found contract 'child'\nlevel Debug\ntests/contract_testcases/substrate/selector_override_inherited.sol:4:1-7:2"]
+	diagnostic_16 [label="found contract 'child'\nlevel Debug\ntests/contract_testcases/substrate/selector_override_inherited.sol:5:1-7:2"]
 	diagnostic_17 [label="selector 'abcdef02' of function 'func' different from base selector 'abcdef01'\nlevel Error\ntests/contract_testcases/substrate/selector_override_inherited.sol:6:2-56"]
 	note [label="location of base function\ntests/contract_testcases/substrate/selector_override_inherited.sol:2:2-55"]
-	diagnostic_19 [label="found contract 'child2'\nlevel Debug\ntests/contract_testcases/substrate/selector_override_inherited.sol:8:1-11:2"]
+	diagnostic_19 [label="found contract 'child2'\nlevel Debug\ntests/contract_testcases/substrate/selector_override_inherited.sol:9:1-11:2"]
 	diagnostic_20 [label="selector of function 'func' must match base selector 'abcdef01'\nlevel Error\ntests/contract_testcases/substrate/selector_override_inherited.sol:10:2-33"]
 	note_21 [label="location of base function\ntests/contract_testcases/substrate/selector_override_inherited.sol:2:2-55"]
-	diagnostic_22 [label="found contract 'base2'\nlevel Debug\ntests/contract_testcases/substrate/selector_override_inherited.sol:12:1-15:2"]
-	diagnostic_23 [label="found contract 'child3'\nlevel Debug\ntests/contract_testcases/substrate/selector_override_inherited.sol:16:1-19:2"]
+	diagnostic_22 [label="found contract 'base2'\nlevel Debug\ntests/contract_testcases/substrate/selector_override_inherited.sol:13:1-15:2"]
+	diagnostic_23 [label="found contract 'child3'\nlevel Debug\ntests/contract_testcases/substrate/selector_override_inherited.sol:17:1-19:2"]
 	diagnostic_24 [label="base function needs same selector as selector 'abcdef02' of function 'func'\nlevel Error\ntests/contract_testcases/substrate/selector_override_inherited.sol:18:2-56"]
 	note_25 [label="location of base function\ntests/contract_testcases/substrate/selector_override_inherited.sol:14:2-32"]
 	contracts -> contract

+ 1 - 1
tests/contract_testcases/substrate/tags/contract_03.dot

@@ -1,4 +1,4 @@
 strict digraph "tests/contract_testcases/substrate/tags/contract_03.sol" {
-	diagnostic [label="end of file found in comment\nlevel Error\ntests/contract_testcases/substrate/tags/contract_03.sol:1:1-4"]
+	diagnostic [label="end of file found in comment\nlevel Error\ntests/contract_testcases/substrate/tags/contract_03.sol:1:1-2:1"]
 	diagnostics -> diagnostic [label="Error"]
 }

+ 1 - 1
vscode/src/test/suite/extension.test.ts

@@ -16,7 +16,7 @@ suite('Extension Test Suite', function () {
     await testdiagnos(diagnosdoc1, [
       {
         message: `unrecognised token 'aa', expected ";", "="`,
-        range: toRange(4, 0, 5, 2),
+        range: toRange(5, 0, 5, 2),
         severity: vscode.DiagnosticSeverity.Error,
         source: 'solidity',
       },