فهرست منبع

Fix right side of the Loc of ContractDefinition (#863)

Fix right side of the Loc of ContractDefinition

Signed-off-by: Julian Popescu <hi@julian.dev>
Julian Popescu 3 سال پیش
والد
کامیت
805e4ba097
100فایلهای تغییر یافته به همراه301 افزوده شده و 299 حذف شده
  1. 1 1
      .gitignore
  2. 1 0
      solang-parser/Cargo.toml
  3. 2 2
      solang-parser/src/solidity.lalrpop
  4. 5 4
      solang-parser/src/test.rs
  5. 2 2
      tests/contract_testcases/ewasm/call/call.dot
  6. 2 2
      tests/contract_testcases/ewasm/call/call_01.dot
  7. 2 2
      tests/contract_testcases/ewasm/call/call_02.dot
  8. 12 12
      tests/contract_testcases/ewasm/comment_tests.dot
  9. 2 2
      tests/contract_testcases/ewasm/dead_storage_different_types.dot
  10. 8 8
      tests/contract_testcases/ewasm/interface_inheritance.dot
  11. 4 4
      tests/contract_testcases/ewasm/llvm_type.dot
  12. 2 2
      tests/contract_testcases/ewasm/public_internal_function.dot
  13. 2 2
      tests/contract_testcases/ewasm/public_mapping.dot
  14. 2 2
      tests/contract_testcases/ewasm/rubixi.dot
  15. 4 4
      tests/contract_testcases/ewasm/standalone_call.dot
  16. 4 4
      tests/contract_testcases/solana/abstract_interface.dot
  17. 2 2
      tests/contract_testcases/solana/accessor/constant.dot
  18. 2 2
      tests/contract_testcases/solana/accessor/constant_01.dot
  19. 2 2
      tests/contract_testcases/solana/account_info.dot
  20. 2 2
      tests/contract_testcases/solana/account_meta.dot
  21. 2 2
      tests/contract_testcases/solana/address_cast.dot
  22. 2 2
      tests/contract_testcases/solana/address_member_call.dot
  23. 2 2
      tests/contract_testcases/solana/asm_reserved_words.dot
  24. 2 2
      tests/contract_testcases/solana/assign_array_in_array.dot
  25. 4 4
      tests/contract_testcases/solana/call/abi_encode_call.dot
  26. 4 4
      tests/contract_testcases/solana/call/call_args_three_ways.dot
  27. 2 2
      tests/contract_testcases/solana/call/calltys.dot
  28. 2 2
      tests/contract_testcases/solana/call/calltys_01.dot
  29. 2 2
      tests/contract_testcases/solana/call/calltys_02.dot
  30. 2 2
      tests/contract_testcases/solana/comment.dot
  31. 2 2
      tests/contract_testcases/solana/comment_tests.dot
  32. 4 4
      tests/contract_testcases/solana/constant/not_constant.dot
  33. 4 4
      tests/contract_testcases/solana/constant/not_constant_01.dot
  34. 4 4
      tests/contract_testcases/solana/contract_var_base_function_init.dot
  35. 4 4
      tests/contract_testcases/solana/create_contract/base_contract.dot
  36. 6 6
      tests/contract_testcases/solana/create_contract/base_contract_01.dot
  37. 6 6
      tests/contract_testcases/solana/create_contract/base_contract_02.dot
  38. 4 4
      tests/contract_testcases/solana/create_contract/syntax.dot
  39. 4 4
      tests/contract_testcases/solana/create_contract/syntax_01.dot
  40. 2 2
      tests/contract_testcases/solana/destructure_assign_struct_member.dot
  41. 4 4
      tests/contract_testcases/solana/destructure_assign_struct_member_2.dot
  42. 2 2
      tests/contract_testcases/solana/doccomments_everywhere.dot
  43. 2 2
      tests/contract_testcases/solana/error.dot
  44. 2 2
      tests/contract_testcases/solana/event.dot
  45. 2 2
      tests/contract_testcases/solana/expressions/bytes32_0.dot
  46. 2 2
      tests/contract_testcases/solana/expressions/bytes32_0_01.dot
  47. 2 2
      tests/contract_testcases/solana/expressions/bytes32_0_02.dot
  48. 2 2
      tests/contract_testcases/solana/expressions/const_in_type.dot
  49. 6 6
      tests/contract_testcases/solana/expressions/contract_compare.dot
  50. 4 4
      tests/contract_testcases/solana/expressions/contract_no_init.dot
  51. 2 2
      tests/contract_testcases/solana/expressions/interfaceid.dot
  52. 2 2
      tests/contract_testcases/solana/expressions/pushpop.dot
  53. 2 2
      tests/contract_testcases/solana/expressions/pushpop_01.dot
  54. 4 4
      tests/contract_testcases/solana/expressions/selector_in_free_function.dot
  55. 5 5
      tests/contract_testcases/solana/expressions/selector_in_free_function_01.dot
  56. 4 4
      tests/contract_testcases/solana/expressions/selector_in_free_function_02.dot
  57. 2 2
      tests/contract_testcases/solana/expressions/slice.dot
  58. 2 2
      tests/contract_testcases/solana/expressions/tx.dot
  59. 2 2
      tests/contract_testcases/solana/expressions/tx_01.dot
  60. 2 2
      tests/contract_testcases/solana/garbage_function_args.dot
  61. 2 2
      tests/contract_testcases/solana/hash/constants_hash_tests.dot
  62. 2 2
      tests/contract_testcases/solana/hash/constants_hash_tests_01.dot
  63. 2 2
      tests/contract_testcases/solana/immutable_function.dot
  64. 10 10
      tests/contract_testcases/solana/immutable_function_type.dot
  65. 6 6
      tests/contract_testcases/solana/import_contracts_via_object.dot
  66. 2 2
      tests/contract_testcases/solana/issues678.dot
  67. 2 2
      tests/contract_testcases/solana/large_exponent.dot
  68. 2 2
      tests/contract_testcases/solana/negative_exponent.dot
  69. 2 2
      tests/contract_testcases/solana/now.dot
  70. 22 22
      tests/contract_testcases/solana/override.dot
  71. 2 2
      tests/contract_testcases/solana/power.dot
  72. 2 2
      tests/contract_testcases/solana/rational/rational.dot
  73. 2 2
      tests/contract_testcases/solana/returns/return_err.dot
  74. 2 2
      tests/contract_testcases/solana/returns/return_err_01.dot
  75. 2 2
      tests/contract_testcases/solana/returns/return_err_02.dot
  76. 2 2
      tests/contract_testcases/solana/returns/return_err_03.dot
  77. 2 2
      tests/contract_testcases/solana/returns/return_err_04.dot
  78. 2 2
      tests/contract_testcases/solana/shift_struct_member.dot
  79. 4 4
      tests/contract_testcases/solana/simple.dot
  80. 2 2
      tests/contract_testcases/solana/tags.dot
  81. 2 2
      tests/contract_testcases/solana/type_called_error.dot
  82. 2 2
      tests/contract_testcases/solana/type_decl.dot
  83. 1 1
      tests/contract_testcases/solana/type_decl_broken.dot
  84. 2 2
      tests/contract_testcases/solana/type_decl_broken_more.dot
  85. 2 2
      tests/contract_testcases/solana/type_decl_broken_used_as_event.dot
  86. 4 4
      tests/contract_testcases/solana/type_decl_import.dot
  87. 6 6
      tests/contract_testcases/solana/using_import.dot
  88. 2 2
      tests/contract_testcases/solana/using_list.dot
  89. 2 2
      tests/contract_testcases/solana/using_literal.dot
  90. 2 2
      tests/contract_testcases/solana/yul/function_cal_cond.dot
  91. 2 2
      tests/contract_testcases/solana/yul/parse.dot
  92. 2 2
      tests/contract_testcases/solana/yul/return_in_asm.dot
  93. 2 2
      tests/contract_testcases/solana/yul/yul_switch.dot
  94. 2 2
      tests/contract_testcases/substrate/account_info.dot
  95. 2 2
      tests/contract_testcases/substrate/arrays/array_dimensions.dot
  96. 2 2
      tests/contract_testcases/substrate/arrays/array_dimensions_01.dot
  97. 2 2
      tests/contract_testcases/substrate/arrays/array_dimensions_02.dot
  98. 2 2
      tests/contract_testcases/substrate/arrays/array_dimensions_03.dot
  99. 2 2
      tests/contract_testcases/substrate/arrays/array_dimensions_04.dot
  100. 2 2
      tests/contract_testcases/substrate/arrays/data_locations.dot

+ 1 - 1
.gitignore

@@ -2,4 +2,4 @@
 Cargo.lock
 Cargo.lock
 /target
 /target
 **/*.rs.bk
 **/*.rs.bk
-
+bundle.ll

+ 1 - 0
solang-parser/Cargo.toml

@@ -22,3 +22,4 @@ itertools = "0.10"
 [dev-dependencies]
 [dev-dependencies]
 walkdir = "2.3.2"
 walkdir = "2.3.2"
 regex = "1.5.5"
 regex = "1.5.5"
+pretty_assertions = "1.2"

+ 2 - 2
solang-parser/src/solidity.lalrpop

@@ -188,8 +188,8 @@ Base: Base = {
 }
 }
 
 
 ContractDefinition: Box<ContractDefinition> = {
 ContractDefinition: Box<ContractDefinition> = {
-    <l:@L> <ty:ContractTy> <name:SolIdentifier> <base:Bases> <r:@R>
-    "{" <parts:(<ContractPart>)*> "}" => {
+    <l:@L> <ty:ContractTy> <name:SolIdentifier> <base:Bases>
+    "{" <parts:(<ContractPart>)*> "}" <r:@R> => {
         Box::new(ContractDefinition{loc: Loc::File(file_no, l, r), ty, name, base, parts})
         Box::new(ContractDefinition{loc: Loc::File(file_no, l, r), ty, name, base, parts})
     }
     }
 }
 }

+ 5 - 4
solang-parser/src/test.rs

@@ -1,6 +1,7 @@
 use crate::lexer::Lexer;
 use crate::lexer::Lexer;
 use crate::pt::*;
 use crate::pt::*;
 use crate::solidity;
 use crate::solidity;
+use pretty_assertions::assert_eq;
 use std::sync::mpsc;
 use std::sync::mpsc;
 use std::time::Duration;
 use std::time::Duration;
 use std::{fs, path::Path, thread};
 use std::{fs, path::Path, thread};
@@ -55,7 +56,7 @@ fn parse_test() {
         SourceUnitPart::DocComment(DocComment{ loc: Loc::File(0,34,51), ty: CommentType::Line, comment: " @description Foo".to_string()}),
         SourceUnitPart::DocComment(DocComment{ loc: Loc::File(0,34,51), ty: CommentType::Line, comment: " @description Foo".to_string()}),
         SourceUnitPart::DocComment(DocComment{ loc: Loc::File(0,71,75), ty: CommentType::Line, comment: " Bar".to_string()}),
         SourceUnitPart::DocComment(DocComment{ loc: Loc::File(0,71,75), ty: CommentType::Line, comment: " Bar".to_string()}),
         SourceUnitPart::ContractDefinition(Box::new(ContractDefinition {
         SourceUnitPart::ContractDefinition(Box::new(ContractDefinition {
-            loc: Loc::File(0, 92, 105),
+            loc: Loc::File(0, 92, 702),
             ty: ContractTy::Contract(Loc::File(0, 92, 100)),
             ty: ContractTy::Contract(Loc::File(0, 92, 100)),
             name: Identifier {
             name: Identifier {
                 loc: Loc::File(0, 101, 104),
                 loc: Loc::File(0, 101, 104),
@@ -336,7 +337,7 @@ fn parse_error_test() {
             ],
             ],
         })),
         })),
         SourceUnitPart::ContractDefinition(Box::new(ContractDefinition {
         SourceUnitPart::ContractDefinition(Box::new(ContractDefinition {
-            loc: Loc::File(0, 69, 88),
+            loc: Loc::File(0, 69, 438),
             ty: ContractTy::Contract(Loc::File(0, 69, 77)),
             ty: ContractTy::Contract(Loc::File(0, 69, 77)),
             name: Identifier {
             name: Identifier {
                 loc: Loc::File(0, 78, 87),
                 loc: Loc::File(0, 78, 87),
@@ -879,7 +880,7 @@ fn parse_revert_test() {
 
 
     let expected_parse_tree = SourceUnit(vec![SourceUnitPart::ContractDefinition(Box::new(
     let expected_parse_tree = SourceUnit(vec![SourceUnitPart::ContractDefinition(Box::new(
         ContractDefinition {
         ContractDefinition {
-            loc: Loc::File(0, 9, 28),
+            loc: Loc::File(0, 9, 150),
             ty: ContractTy::Contract(Loc::File(0, 9, 17)),
             ty: ContractTy::Contract(Loc::File(0, 9, 17)),
             name: Identifier {
             name: Identifier {
                 loc: Loc::File(0, 18, 27),
                 loc: Loc::File(0, 18, 27),
@@ -968,7 +969,7 @@ fn parse_user_defined_value_type() {
             ty: Expression::Type(Loc::File(0, 25, 32), Type::Uint(256)),
             ty: Expression::Type(Loc::File(0, 25, 32), Type::Uint(256)),
         })),
         })),
         SourceUnitPart::ContractDefinition(Box::new(ContractDefinition {
         SourceUnitPart::ContractDefinition(Box::new(ContractDefinition {
-            loc: Loc::File(0, 42, 61),
+            loc: Loc::File(0, 42, 109),
             ty: ContractTy::Contract(Loc::File(0, 42, 50)),
             ty: ContractTy::Contract(Loc::File(0, 42, 50)),
             name: Identifier {
             name: Identifier {
                 loc: Loc::File(0, 51, 60),
                 loc: Loc::File(0, 51, 60),

+ 2 - 2
tests/contract_testcases/ewasm/call/call.dot

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

+ 2 - 2
tests/contract_testcases/ewasm/call/call_01.dot

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

+ 2 - 2
tests/contract_testcases/ewasm/call/call_02.dot

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

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

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

+ 2 - 2
tests/contract_testcases/ewasm/dead_storage_different_types.dot

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

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

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

+ 4 - 4
tests/contract_testcases/ewasm/llvm_type.dot

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/ewasm/llvm_type.sol" {
 strict digraph "tests/contract_testcases/ewasm/llvm_type.sol" {
 	OwnershipTransferred [label="name:OwnershipTransferred\ncontract: 1\ntests/contract_testcases/ewasm/llvm_type.sol:14:16-36\nfield name:previousOwner ty:address indexed:yes\nfield name:newOwner ty:address indexed:yes"]
 	OwnershipTransferred [label="name:OwnershipTransferred\ncontract: 1\ntests/contract_testcases/ewasm/llvm_type.sol:14:16-36\nfield name:previousOwner ty:address indexed:yes\nfield name:newOwner ty:address indexed:yes"]
-	contract [label="contract Context\ntests/contract_testcases/ewasm/llvm_type.sol:1:1-30"]
+	contract [label="contract Context\ntests/contract_testcases/ewasm/llvm_type.sol:1:1-9:2"]
 	_msgSender [label="function _msgSender\ncontract: Context\ntests/contract_testcases/ewasm/llvm_type.sol:2:9-85\nsignature _msgSender()\nvisibility internal\nmutability view\nvirtual"]
 	_msgSender [label="function _msgSender\ncontract: Context\ntests/contract_testcases/ewasm/llvm_type.sol:2:9-85\nsignature _msgSender()\nvisibility internal\nmutability view\nvirtual"]
 	returns [label="returns\naddress payable "]
 	returns [label="returns\naddress payable "]
 	return [label="return\ntests/contract_testcases/ewasm/llvm_type.sol:3:17-44"]
 	return [label="return\ntests/contract_testcases/ewasm/llvm_type.sol:3:17-44"]
@@ -11,7 +11,7 @@ strict digraph "tests/contract_testcases/ewasm/llvm_type.sol" {
 	builtins_11 [label="builtin GetAddress\ntests/contract_testcases/ewasm/llvm_type.sol:6:17-21"]
 	builtins_11 [label="builtin GetAddress\ntests/contract_testcases/ewasm/llvm_type.sol:6:17-21"]
 	return_12 [label="return\ntests/contract_testcases/ewasm/llvm_type.sol:7:17-33"]
 	return_12 [label="return\ntests/contract_testcases/ewasm/llvm_type.sol:7:17-33"]
 	builtins_13 [label="builtin Calldata\ntests/contract_testcases/ewasm/llvm_type.sol:7:25-33"]
 	builtins_13 [label="builtin Calldata\ntests/contract_testcases/ewasm/llvm_type.sol:7:25-33"]
-	contract_14 [label="contract Ownable\ntests/contract_testcases/ewasm/llvm_type.sol:10:1-11:31"]
+	contract_14 [label="contract Ownable\ntests/contract_testcases/ewasm/llvm_type.sol:10:1-43:2"]
 	base [label="base Context\ntests/contract_testcases/ewasm/llvm_type.sol:11:24-31"]
 	base [label="base Context\ntests/contract_testcases/ewasm/llvm_type.sol:11:24-31"]
 	var [label="variable _owner\nvisibility private\ntests/contract_testcases/ewasm/llvm_type.sol:12:9-33"]
 	var [label="variable _owner\nvisibility private\ntests/contract_testcases/ewasm/llvm_type.sol:12:9-33"]
 	node_17 [label="constructor \ncontract: Ownable\ntests/contract_testcases/ewasm/llvm_type.sol:15:9-26\nsignature ()\nvisibility public\nmutability nonpayable"]
 	node_17 [label="constructor \ncontract: Ownable\ntests/contract_testcases/ewasm/llvm_type.sol:15:9-26\nsignature ()\nvisibility public\nmutability nonpayable"]
@@ -75,8 +75,8 @@ strict digraph "tests/contract_testcases/ewasm/llvm_type.sol" {
 	return_75 [label="return\ntests/contract_testcases/ewasm/llvm_type.sol:41:17-40"]
 	return_75 [label="return\ntests/contract_testcases/ewasm/llvm_type.sol:41:17-40"]
 	zero_ext [label="zero extend uint256\ntests/contract_testcases/ewasm/llvm_type.sol:41:17-40"]
 	zero_ext [label="zero extend uint256\ntests/contract_testcases/ewasm/llvm_type.sol:41:17-40"]
 	builtins_77 [label="builtin Timestamp\ntests/contract_testcases/ewasm/llvm_type.sol:41:25-40"]
 	builtins_77 [label="builtin Timestamp\ntests/contract_testcases/ewasm/llvm_type.sol:41:25-40"]
-	diagnostic [label="found abstract contract 'Context'\nlevel Debug\ntests/contract_testcases/ewasm/llvm_type.sol:1:1-30"]
-	diagnostic_80 [label="found contract 'Ownable'\nlevel Debug\ntests/contract_testcases/ewasm/llvm_type.sol:10:1-11:31"]
+	diagnostic [label="found abstract contract 'Context'\nlevel Debug\ntests/contract_testcases/ewasm/llvm_type.sol:1:1-9:2"]
+	diagnostic_80 [label="found contract 'Ownable'\nlevel Debug\ntests/contract_testcases/ewasm/llvm_type.sol:10:1-43:2"]
 	events -> OwnershipTransferred
 	events -> OwnershipTransferred
 	contracts -> contract
 	contracts -> contract
 	contract -> _msgSender [label="function"]
 	contract -> _msgSender [label="function"]

+ 2 - 2
tests/contract_testcases/ewasm/public_internal_function.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/ewasm/public_internal_function.sol" {
 strict digraph "tests/contract_testcases/ewasm/public_internal_function.sol" {
 	A [label="name:A\ncontract: foo\ntests/contract_testcases/ewasm/public_internal_function.sol:2:12-13\nfield name:a ty:function() internal"]
 	A [label="name:A\ncontract: foo\ntests/contract_testcases/ewasm/public_internal_function.sol:2:12-13\nfield name:a ty:function() internal"]
-	contract [label="contract foo\ntests/contract_testcases/ewasm/public_internal_function.sol:1:1-14"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/ewasm/public_internal_function.sol:1:1-14"]
+	contract [label="contract foo\ntests/contract_testcases/ewasm/public_internal_function.sol:1:1-7:2"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/ewasm/public_internal_function.sol:1:1-7:2"]
 	diagnostic_7 [label="variable of type internal function cannot be 'public'\nlevel Error\ntests/contract_testcases/ewasm/public_internal_function.sol:6:5-8"]
 	diagnostic_7 [label="variable of type internal function cannot be 'public'\nlevel Error\ntests/contract_testcases/ewasm/public_internal_function.sol:6:5-8"]
 	structs -> A
 	structs -> A
 	contracts -> contract
 	contracts -> contract

+ 2 - 2
tests/contract_testcases/ewasm/public_mapping.dot

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/ewasm/public_mapping.sol" {
 strict digraph "tests/contract_testcases/ewasm/public_mapping.sol" {
 	A [label="name:A\ncontract: foo\ntests/contract_testcases/ewasm/public_mapping.sol:2:12-13\nfield name:a ty:mapping(uint64 => uint64)"]
 	A [label="name:A\ncontract: foo\ntests/contract_testcases/ewasm/public_mapping.sol:2:12-13\nfield name:a ty:mapping(uint64 => uint64)"]
-	contract [label="contract foo\ntests/contract_testcases/ewasm/public_mapping.sol:1:1-14"]
+	contract [label="contract foo\ntests/contract_testcases/ewasm/public_mapping.sol:1:1-7:2"]
 	var [label="variable map\nvisibility public\ntests/contract_testcases/ewasm/public_mapping.sol:6:5-19"]
 	var [label="variable map\nvisibility public\ntests/contract_testcases/ewasm/public_mapping.sol:6:5-19"]
 	map [label="function map\ncontract: foo\ntests/contract_testcases/ewasm/public_mapping.sol:6:16-19\nsignature map(uint256)\nvisibility public\nmutability view"]
 	map [label="function map\ncontract: foo\ntests/contract_testcases/ewasm/public_mapping.sol:6:16-19\nsignature map(uint256)\nvisibility public\nmutability view"]
 	parameters [label="parameters\nuint256 "]
 	parameters [label="parameters\nuint256 "]
@@ -10,7 +10,7 @@ strict digraph "tests/contract_testcases/ewasm/public_mapping.sol" {
 	subscript [label="subscript struct foo.A[] storage\nimplicit"]
 	subscript [label="subscript struct foo.A[] storage\nimplicit"]
 	storage_var [label="storage variable\nfoo.map\nstruct foo.A[] storage\nimplicit"]
 	storage_var [label="storage variable\nfoo.map\nstruct foo.A[] storage\nimplicit"]
 	variable [label="variable: \nuint256\nimplicit"]
 	variable [label="variable: \nuint256\nimplicit"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/ewasm/public_mapping.sol:1:1-14"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/ewasm/public_mapping.sol:1:1-7:2"]
 	diagnostic_15 [label="mapping in a struct variable cannot be public\nlevel Error\ntests/contract_testcases/ewasm/public_mapping.sol:6:5-19"]
 	diagnostic_15 [label="mapping in a struct variable cannot be public\nlevel Error\ntests/contract_testcases/ewasm/public_mapping.sol:6:5-19"]
 	structs -> A
 	structs -> A
 	contracts -> contract
 	contracts -> contract

+ 2 - 2
tests/contract_testcases/ewasm/rubixi.dot

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	Participant [label="name:Participant\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:25:17-28\nfield name:etherAddress ty:address\nfield name:payout ty:uint256"]
 	Participant [label="name:Participant\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:25:17-28\nfield name:etherAddress ty:address\nfield name:payout ty:uint256"]
-	contract [label="contract Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:4:2-18"]
+	contract [label="contract Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:4:2-156:3"]
 	var [label="variable balance\nvisibility private\ntests/contract_testcases/ewasm/rubixi.sol:7:10-34"]
 	var [label="variable balance\nvisibility private\ntests/contract_testcases/ewasm/rubixi.sol:7:10-34"]
 	number_literal [label="uint256 literal: 0\ntests/contract_testcases/ewasm/rubixi.sol:7:33-34"]
 	number_literal [label="uint256 literal: 0\ntests/contract_testcases/ewasm/rubixi.sol:7:33-34"]
 	var_6 [label="variable collectedFees\nvisibility private\ntests/contract_testcases/ewasm/rubixi.sol:8:10-40"]
 	var_6 [label="variable collectedFees\nvisibility private\ntests/contract_testcases/ewasm/rubixi.sol:8:10-40"]
@@ -383,7 +383,7 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	variable_383 [label="variable: orderInPyramid\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:153:48-62"]
 	variable_383 [label="variable: orderInPyramid\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:153:48-62"]
 	number_literal_384 [label="uint256 literal: 1000000000000000000\ntests/contract_testcases/ewasm/rubixi.sol:153:73-80"]
 	number_literal_384 [label="uint256 literal: 1000000000000000000\ntests/contract_testcases/ewasm/rubixi.sol:153:73-80"]
 	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/ewasm/rubixi.sol:2:2-25"]
 	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/ewasm/rubixi.sol:2:2-25"]
-	diagnostic_387 [label="found contract 'Rubixi'\nlevel Debug\ntests/contract_testcases/ewasm/rubixi.sol:4:2-18"]
+	diagnostic_387 [label="found contract 'Rubixi'\nlevel Debug\ntests/contract_testcases/ewasm/rubixi.sol:4:2-156:3"]
 	diagnostic_388 [label="local variable 'payoutToSend' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/ewasm/rubixi.sol:67:31-43"]
 	diagnostic_388 [label="local variable 'payoutToSend' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/ewasm/rubixi.sol:67:31-43"]
 	diagnostic_389 [label="return variable 'Address' has never been assigned\nlevel Warning\ntests/contract_testcases/ewasm/rubixi.sol:150:87-94"]
 	diagnostic_389 [label="return variable 'Address' has never been assigned\nlevel Warning\ntests/contract_testcases/ewasm/rubixi.sol:150:87-94"]
 	structs -> Participant
 	structs -> Participant

+ 4 - 4
tests/contract_testcases/ewasm/standalone_call.dot

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

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

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/abstract_interface.sol" {
 strict digraph "tests/contract_testcases/solana/abstract_interface.sol" {
-	contract [label="contract A\ntests/contract_testcases/solana/abstract_interface.sol:1:1-21"]
+	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"]
 	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 "]
 	parameters [label="parameters\nint256 "]
-	contract_5 [label="contract C\ntests/contract_testcases/solana/abstract_interface.sol:3:2-4:12"]
+	contract_5 [label="contract C\ntests/contract_testcases/solana/abstract_interface.sol:3:2-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"]
 	t [label="function t\ncontract: C\ntests/contract_testcases/solana/abstract_interface.sol:5:2-24\nsignature t(bytes32)\nvisibility public\nmutability nonpayable"]
 	parameters_7 [label="parameters\ncontract A a"]
 	parameters_7 [label="parameters\ncontract A a"]
 	expr [label="expression\ntests/contract_testcases/solana/abstract_interface.sol:6:3-9"]
 	expr [label="expression\ntests/contract_testcases/solana/abstract_interface.sol:6:3-9"]
@@ -10,8 +10,8 @@ strict digraph "tests/contract_testcases/solana/abstract_interface.sol" {
 	external_function [label="function(int256) external returns (void)\nA.v\ntests/contract_testcases/solana/abstract_interface.sol:6:3-9"]
 	external_function [label="function(int256) external returns (void)\nA.v\ntests/contract_testcases/solana/abstract_interface.sol:6:3-9"]
 	variable [label="variable: a\ncontract A\ntests/contract_testcases/solana/abstract_interface.sol:6:3-4"]
 	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"]
 	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-21"]
-	diagnostic_15 [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/abstract_interface.sol:3:2-4:12"]
+	diagnostic [label="found abstract contract 'A'\nlevel Debug\ntests/contract_testcases/solana/abstract_interface.sol:1:1-3:2"]
+	diagnostic_15 [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/abstract_interface.sol:3:2-8:2"]
 	contracts -> contract
 	contracts -> contract
 	contract -> v [label="function"]
 	contract -> v [label="function"]
 	v -> parameters [label="parameters"]
 	v -> parameters [label="parameters"]

+ 2 - 2
tests/contract_testcases/solana/accessor/constant.dot

@@ -1,11 +1,11 @@
 strict digraph "tests/contract_testcases/solana/accessor/constant.sol" {
 strict digraph "tests/contract_testcases/solana/accessor/constant.sol" {
-	contract [label="contract x\ntests/contract_testcases/solana/accessor/constant.sol:2:9-20"]
+	contract [label="contract x\ntests/contract_testcases/solana/accessor/constant.sol:2:9-4:10"]
 	var [label="variable z\nvisibility public\nconstant\ntests/contract_testcases/solana/accessor/constant.sol:3:13-53"]
 	var [label="variable z\nvisibility public\nconstant\ntests/contract_testcases/solana/accessor/constant.sol:3:13-53"]
 	z [label="function z\ncontract: x\ntests/contract_testcases/solana/accessor/constant.sol:3:37-38\nsignature z()\nvisibility public\nmutability view"]
 	z [label="function z\ncontract: x\ntests/contract_testcases/solana/accessor/constant.sol:3:37-38\nsignature z()\nvisibility public\nmutability view"]
 	returns [label="returns\nbytes32 "]
 	returns [label="returns\nbytes32 "]
 	return [label="return\nimplicit"]
 	return [label="return\nimplicit"]
 	constant [label="constant variable\nx.z\nbytes32\nimplicit"]
 	constant [label="constant variable\nx.z\nbytes32\nimplicit"]
-	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/accessor/constant.sol:2:9-20"]
+	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/accessor/constant.sol:2:9-4:10"]
 	diagnostic_10 [label="cannot call function in constant expression\nlevel Error\ntests/contract_testcases/solana/accessor/constant.sol:3:41-53"]
 	diagnostic_10 [label="cannot call function in constant expression\nlevel Error\ntests/contract_testcases/solana/accessor/constant.sol:3:41-53"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]

+ 2 - 2
tests/contract_testcases/solana/accessor/constant_01.dot

@@ -1,12 +1,12 @@
 strict digraph "tests/contract_testcases/solana/accessor/constant_01.sol" {
 strict digraph "tests/contract_testcases/solana/accessor/constant_01.sol" {
-	contract [label="contract x\ntests/contract_testcases/solana/accessor/constant_01.sol:2:9-20"]
+	contract [label="contract x\ntests/contract_testcases/solana/accessor/constant_01.sol:2:9-5:10"]
 	var [label="variable foo\nvisibility internal\ntests/contract_testcases/solana/accessor/constant_01.sol:3:13-22"]
 	var [label="variable foo\nvisibility internal\ntests/contract_testcases/solana/accessor/constant_01.sol:3:13-22"]
 	var_4 [label="variable z\nvisibility public\nconstant\ntests/contract_testcases/solana/accessor/constant_01.sol:4:13-55"]
 	var_4 [label="variable z\nvisibility public\nconstant\ntests/contract_testcases/solana/accessor/constant_01.sol:4:13-55"]
 	z [label="function z\ncontract: x\ntests/contract_testcases/solana/accessor/constant_01.sol:4:37-38\nsignature z()\nvisibility public\nmutability view"]
 	z [label="function z\ncontract: x\ntests/contract_testcases/solana/accessor/constant_01.sol:4:37-38\nsignature z()\nvisibility public\nmutability view"]
 	returns [label="returns\nbytes32 "]
 	returns [label="returns\nbytes32 "]
 	return [label="return\nimplicit"]
 	return [label="return\nimplicit"]
 	constant [label="constant variable\nx.z\nbytes32\nimplicit"]
 	constant [label="constant variable\nx.z\nbytes32\nimplicit"]
-	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/accessor/constant_01.sol:2:9-20"]
+	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/accessor/constant_01.sol:2:9-5:10"]
 	diagnostic_11 [label="cannot read contract variable 'foo' in constant expression\nlevel Error\ntests/contract_testcases/solana/accessor/constant_01.sol:4:51-54"]
 	diagnostic_11 [label="cannot read contract variable 'foo' in constant expression\nlevel Error\ntests/contract_testcases/solana/accessor/constant_01.sol:4:51-54"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]

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

@@ -1,11 +1,11 @@
 strict digraph "tests/contract_testcases/solana/account_info.sol" {
 strict digraph "tests/contract_testcases/solana/account_info.sol" {
-	contract [label="contract c\ntests/contract_testcases/solana/account_info.sol:2:1-3:12"]
+	contract [label="contract c\ntests/contract_testcases/solana/account_info.sol:2: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"]
 	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"]
 	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"]
 	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 "]
 	parameters [label="parameters\nstruct AccountInfo "]
 	returns [label="returns\nstruct AccountInfo "]
 	returns [label="returns\nstruct AccountInfo "]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/account_info.sol:2:1-3:12"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/account_info.sol:2:1-24:2"]
 	diagnostic_10 [label="variable cannot be of builtin type 'struct AccountInfo'\nlevel Error\ntests/contract_testcases/solana/account_info.sol:4:2-13"]
 	diagnostic_10 [label="variable cannot be of builtin type 'struct AccountInfo'\nlevel Error\ntests/contract_testcases/solana/account_info.sol:4:2-13"]
 	diagnostic_11 [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="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_12 [label="return type 'struct AccountInfo' not allowed in public or external functions\nlevel Error\ntests/contract_testcases/solana/account_info.sol:6:44-55"]
 	diagnostic_12 [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" {
 strict digraph "tests/contract_testcases/solana/account_meta.sol" {
-	contract [label="contract spl\ntests/contract_testcases/solana/account_meta.sol:2:1-3:14"]
+	contract [label="contract spl\ntests/contract_testcases/solana/account_meta.sol:2: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"]
 	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 "]
 	returns [label="returns\nbool \naddress "]
 	var_decl [label="variable decl struct AccountMeta meta\ntests/contract_testcases/solana/account_meta.sol:5:3-75"]
 	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_46 [label="subscript struct AccountMeta[2]\ntests/contract_testcases/solana/account_meta.sol:15:32-39"]
 	subscript_46 [label="subscript struct AccountMeta[2]\ntests/contract_testcases/solana/account_meta.sol:15:32-39"]
 	variable_47 [label="variable: meta\nstruct AccountMeta[2]\ntests/contract_testcases/solana/account_meta.sol:15:32-36"]
 	variable_47 [label="variable: meta\nstruct AccountMeta[2]\ntests/contract_testcases/solana/account_meta.sol:15:32-36"]
 	number_literal_48 [label="uint32 literal: 0\ntests/contract_testcases/solana/account_meta.sol:15:37-38"]
 	number_literal_48 [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-3:14"]
+	diagnostic [label="found contract 'spl'\nlevel Debug\ntests/contract_testcases/solana/account_meta.sol:2:1-18:2"]
 	diagnostic_51 [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:4:2-47"]
 	diagnostic_52 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/account_meta.sol:9:2-56"]
 	diagnostic_52 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/account_meta.sol:9:2-56"]
 	contracts -> contract
 	contracts -> contract

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

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/address_cast.sol" {
 strict digraph "tests/contract_testcases/solana/address_cast.sol" {
-	contract [label="contract c\ntests/contract_testcases/solana/address_cast.sol:1:1-12"]
+	contract [label="contract c\ntests/contract_testcases/solana/address_cast.sol:1:1-8:2"]
 	foo [label="function foo\ncontract: c\ntests/contract_testcases/solana/address_cast.sol:2:2-23\nsignature foo()\nvisibility public\nmutability nonpayable"]
 	foo [label="function foo\ncontract: c\ntests/contract_testcases/solana/address_cast.sol:2:2-23\nsignature foo()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/address_cast.sol:1:1-12"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/address_cast.sol:1:1-8:2"]
 	diagnostic_6 [label="expression is not assignable\nlevel Error\ntests/contract_testcases/solana/address_cast.sol:6:3-13"]
 	diagnostic_6 [label="expression is not assignable\nlevel Error\ntests/contract_testcases/solana/address_cast.sol:6:3-13"]
 	contracts -> contract
 	contracts -> contract
 	contract -> foo [label="function"]
 	contract -> foo [label="function"]

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

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/address_member_call.sol" {
 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"]
 	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-4:21"]
+	contract [label="contract MyContract\ntests/contract_testcases/solana/address_member_call.sol:3:1-45:2"]
 	send [label="function send\ncontract: MyContract\ntests/contract_testcases/solana/address_member_call.sol:13:5-17:23\nsignature send(bytes32[],uint64[],string)\nvisibility external\nmutability payable"]
 	send [label="function send\ncontract: MyContract\ntests/contract_testcases/solana/address_member_call.sol:13:5-17:23\nsignature send(bytes32[],uint64[],string)\nvisibility external\nmutability payable"]
 	parameters [label="parameters\naddress[] _receivers\nuint64[] _amounts\nstring _payment"]
 	parameters [label="parameters\naddress[] _receivers\nuint64[] _amounts\nstring _payment"]
 	expr [label="expression\ntests/contract_testcases/solana/address_member_call.sol:18:9-21:10"]
 	expr [label="expression\ntests/contract_testcases/solana/address_member_call.sol:18:9-21:10"]
@@ -81,7 +81,7 @@ strict digraph "tests/contract_testcases/solana/address_member_call.sol" {
 	variable_82 [label="variable: _amounts\nuint64[]\ntests/contract_testcases/solana/address_member_call.sol:41:13-21"]
 	variable_82 [label="variable: _amounts\nuint64[]\ntests/contract_testcases/solana/address_member_call.sol:41:13-21"]
 	variable_83 [label="variable: _payment\nstring\ntests/contract_testcases/solana/address_member_call.sol:42:13-21"]
 	variable_83 [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 [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/address_member_call.sol:1:32-2:24"]
-	diagnostic_86 [label="found contract 'MyContract'\nlevel Debug\ntests/contract_testcases/solana/address_member_call.sol:3:1-4:21"]
+	diagnostic_86 [label="found contract 'MyContract'\nlevel Debug\ntests/contract_testcases/solana/address_member_call.sol:3:1-45:2"]
 	events -> Receipt
 	events -> Receipt
 	contracts -> contract
 	contracts -> contract
 	contract -> send [label="function"]
 	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" {
 strict digraph "tests/contract_testcases/solana/asm_reserved_words.sol" {
-	contract [label="contract default\ntests/contract_testcases/solana/asm_reserved_words.sol:1:1-2:18"]
+	contract [label="contract default\ntests/contract_testcases/solana/asm_reserved_words.sol:1: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"]
 	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"]
 	parameters [label="parameters\nbool case"]
 	returns [label="returns\nbool "]
 	returns [label="returns\nbool "]
 	return [label="return\ntests/contract_testcases/solana/asm_reserved_words.sol:4:3-15"]
 	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"]
 	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"]
 	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-2:18"]
+	diagnostic [label="found contract 'default'\nlevel Debug\ntests/contract_testcases/solana/asm_reserved_words.sol:1:1-6:2"]
 	contracts -> contract
 	contracts -> contract
 	contract -> switch [label="function"]
 	contract -> switch [label="function"]
 	switch -> parameters [label="parameters"]
 	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" {
 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]"]
 	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[]"]
 	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-2:12"]
+	contract [label="contract C\ntests/contract_testcases/solana/assign_array_in_array.sol:1:60-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"]
 	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"]
 	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"]
 	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"]
 	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"]
 	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"]
 	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-2:12"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/assign_array_in_array.sol:1:60-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_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_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"]
 	diagnostic_47 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/assign_array_in_array.sol:8:2-27"]

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

@@ -1,14 +1,14 @@
 strict digraph "tests/contract_testcases/solana/call/abi_encode_call.sol" {
 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-26"]
+	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"]
 	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"]
 	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_5 [label="contract other\ntests/contract_testcases/solana/call/abi_encode_call.sol:10:1-11:16"]
+	contract_5 [label="contract other\ntests/contract_testcases/solana/call/abi_encode_call.sol:10: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"]
 	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"]
 	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-26"]
+	diagnostic [label="found contract 'abi_encode_call'\nlevel Debug\ntests/contract_testcases/solana/call/abi_encode_call.sol:1:1-9:2"]
 	diagnostic_10 [label="function takes 2 arguments, 1 provided\nlevel Error\ntests/contract_testcases/solana/call/abi_encode_call.sol:3:20-48"]
 	diagnostic_10 [label="function takes 2 arguments, 1 provided\nlevel Error\ntests/contract_testcases/solana/call/abi_encode_call.sol:3:20-48"]
 	diagnostic_11 [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="conversion from bool to int256 not possible\nlevel Error\ntests/contract_testcases/solana/call/abi_encode_call.sol:7:49-53"]
-	diagnostic_12 [label="found contract 'other'\nlevel Debug\ntests/contract_testcases/solana/call/abi_encode_call.sol:10:1-11:16"]
+	diagnostic_12 [label="found contract 'other'\nlevel Debug\ntests/contract_testcases/solana/call/abi_encode_call.sol:10:1-13:2"]
 	diagnostic_13 [label="declaration of 'foo' shadows function\nlevel Warning\ntests/contract_testcases/solana/call/abi_encode_call.sol:12:22-25"]
 	diagnostic_13 [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"]
 	note [label="previous declaration of function\ntests/contract_testcases/solana/call/abi_encode_call.sol:12:14-17"]
 	contracts -> contract
 	contracts -> contract

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/call/call_args_three_ways.sol" {
 strict digraph "tests/contract_testcases/solana/call/call_args_three_ways.sol" {
-	contract [label="contract C\ntests/contract_testcases/solana/call/call_args_three_ways.sol:1:1-12"]
+	contract [label="contract C\ntests/contract_testcases/solana/call/call_args_three_ways.sol:1:1-14:2"]
 	f [label="function f\ncontract: C\ntests/contract_testcases/solana/call/call_args_three_ways.sol:2:2-21\nsignature f()\nvisibility public\nmutability nonpayable"]
 	f [label="function f\ncontract: C\ntests/contract_testcases/solana/call/call_args_three_ways.sol:2:2-21\nsignature f()\nvisibility public\nmutability nonpayable"]
 	var_decl [label="variable decl contract D d\ntests/contract_testcases/solana/call/call_args_three_ways.sol:4:3-28"]
 	var_decl [label="variable decl contract D d\ntests/contract_testcases/solana/call/call_args_three_ways.sol:4:3-28"]
 	constructor [label="constructor contract D\ntests/contract_testcases/solana/call/call_args_three_ways.sol:4:9-28"]
 	constructor [label="constructor contract D\ntests/contract_testcases/solana/call/call_args_three_ways.sol:4:9-28"]
@@ -27,14 +27,14 @@ strict digraph "tests/contract_testcases/solana/call/call_args_three_ways.sol" {
 	external_function_27 [label="function() external payable returns (void)\nD.func\ntests/contract_testcases/solana/call/call_args_three_ways.sol:12:3-23"]
 	external_function_27 [label="function() external payable returns (void)\nD.func\ntests/contract_testcases/solana/call/call_args_three_ways.sol:12:3-23"]
 	variable_28 [label="variable: d\ncontract D\ntests/contract_testcases/solana/call/call_args_three_ways.sol:12:4-5"]
 	variable_28 [label="variable: d\ncontract D\ntests/contract_testcases/solana/call/call_args_three_ways.sol:12:4-5"]
 	number_literal_29 [label="uint64 literal: 1\ntests/contract_testcases/solana/call/call_args_three_ways.sol:12:18-19"]
 	number_literal_29 [label="uint64 literal: 1\ntests/contract_testcases/solana/call/call_args_three_ways.sol:12:18-19"]
-	contract_30 [label="contract D\ntests/contract_testcases/solana/call/call_args_three_ways.sol:15:1-16:12"]
+	contract_30 [label="contract D\ntests/contract_testcases/solana/call/call_args_three_ways.sol:15:1-19:2"]
 	node_31 [label="constructor \ncontract: D\ntests/contract_testcases/solana/call/call_args_three_ways.sol:17:2-23\nsignature ()\nvisibility public\nmutability payable"]
 	node_31 [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"]
 	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-12"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/call/call_args_three_ways.sol:1:1-14:2"]
 	diagnostic_35 [label="local variable 'd' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/call/call_args_three_ways.sol:4:5-6"]
 	diagnostic_35 [label="local variable 'd' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/call/call_args_three_ways.sol:4:5-6"]
 	diagnostic_36 [label="local variable 'dd' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/call/call_args_three_ways.sol:5:5-7"]
 	diagnostic_36 [label="local variable 'dd' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/call/call_args_three_ways.sol:5:5-7"]
 	diagnostic_37 [label="local variable 'ddd' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/call/call_args_three_ways.sol:6:5-8"]
 	diagnostic_37 [label="local variable 'ddd' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/call/call_args_three_ways.sol:6:5-8"]
-	diagnostic_38 [label="found contract 'D'\nlevel Debug\ntests/contract_testcases/solana/call/call_args_three_ways.sol:15:1-16:12"]
+	diagnostic_38 [label="found contract 'D'\nlevel Debug\ntests/contract_testcases/solana/call/call_args_three_ways.sol:15:1-19:2"]
 	contracts -> contract
 	contracts -> contract
 	contract -> f [label="function"]
 	contract -> f [label="function"]
 	f -> var_decl [label="body"]
 	f -> var_decl [label="body"]

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

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/call/calltys.sol" {
 strict digraph "tests/contract_testcases/solana/call/calltys.sol" {
-	contract [label="contract main\ntests/contract_testcases/solana/call/calltys.sol:2:9-23"]
+	contract [label="contract main\ntests/contract_testcases/solana/call/calltys.sol:2:9-8:10"]
 	test [label="function test\ncontract: main\ntests/contract_testcases/solana/call/calltys.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
 	test [label="function test\ncontract: main\ntests/contract_testcases/solana/call/calltys.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'main'\nlevel Debug\ntests/contract_testcases/solana/call/calltys.sol:2:9-23"]
+	diagnostic [label="found contract 'main'\nlevel Debug\ntests/contract_testcases/solana/call/calltys.sol:2:9-8:10"]
 	diagnostic_6 [label="method 'staticcall' does not exist\nlevel Error\ntests/contract_testcases/solana/call/calltys.sol:6:19-29"]
 	diagnostic_6 [label="method 'staticcall' does not exist\nlevel Error\ntests/contract_testcases/solana/call/calltys.sol:6:19-29"]
 	contracts -> contract
 	contracts -> contract
 	contract -> test [label="function"]
 	contract -> test [label="function"]

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

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/call/calltys_01.sol" {
 strict digraph "tests/contract_testcases/solana/call/calltys_01.sol" {
-	contract [label="contract main\ntests/contract_testcases/solana/call/calltys_01.sol:2:9-23"]
+	contract [label="contract main\ntests/contract_testcases/solana/call/calltys_01.sol:2:9-8:10"]
 	test [label="function test\ncontract: main\ntests/contract_testcases/solana/call/calltys_01.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
 	test [label="function test\ncontract: main\ntests/contract_testcases/solana/call/calltys_01.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'main'\nlevel Debug\ntests/contract_testcases/solana/call/calltys_01.sol:2:9-23"]
+	diagnostic [label="found contract 'main'\nlevel Debug\ntests/contract_testcases/solana/call/calltys_01.sol:2:9-8:10"]
 	diagnostic_6 [label="method 'delegatecall' does not exist\nlevel Error\ntests/contract_testcases/solana/call/calltys_01.sol:6:19-31"]
 	diagnostic_6 [label="method 'delegatecall' does not exist\nlevel Error\ntests/contract_testcases/solana/call/calltys_01.sol:6:19-31"]
 	contracts -> contract
 	contracts -> contract
 	contract -> test [label="function"]
 	contract -> test [label="function"]

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

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/call/calltys_02.sol" {
 strict digraph "tests/contract_testcases/solana/call/calltys_02.sol" {
-	contract [label="contract main\ntests/contract_testcases/solana/call/calltys_02.sol:2:9-23"]
+	contract [label="contract main\ntests/contract_testcases/solana/call/calltys_02.sol:2:9-8:10"]
 	test [label="function test\ncontract: main\ntests/contract_testcases/solana/call/calltys_02.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
 	test [label="function test\ncontract: main\ntests/contract_testcases/solana/call/calltys_02.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'main'\nlevel Debug\ntests/contract_testcases/solana/call/calltys_02.sol:2:9-23"]
+	diagnostic [label="found contract 'main'\nlevel Debug\ntests/contract_testcases/solana/call/calltys_02.sol:2:9-8:10"]
 	diagnostic_6 [label="'gas' not permitted for external calls or constructors on solana\nlevel Error\ntests/contract_testcases/solana/call/calltys_02.sol:6:51-57"]
 	diagnostic_6 [label="'gas' not permitted for external calls or constructors on solana\nlevel Error\ntests/contract_testcases/solana/call/calltys_02.sol:6:51-57"]
 	contracts -> contract
 	contracts -> contract
 	contract -> test [label="function"]
 	contract -> test [label="function"]

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

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

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/comment_tests.sol" {
 strict digraph "tests/contract_testcases/solana/comment_tests.sol" {
-	contract [label="contract Splitter\ntests/contract_testcases/solana/comment_tests.sol:1:1-19"]
+	contract [label="contract Splitter\ntests/contract_testcases/solana/comment_tests.sol:1:1-3:2"]
 	var [label="variable hello\nvisibility public\ntests/contract_testcases/solana/comment_tests.sol:2:5-40"]
 	var [label="variable hello\nvisibility public\ntests/contract_testcases/solana/comment_tests.sol:2:5-40"]
 	alloc_array [label="alloc array string\ninitializer: 48656c6c6f20776f726421\ntests/contract_testcases/solana/comment_tests.sol:2:27-40"]
 	alloc_array [label="alloc array string\ninitializer: 48656c6c6f20776f726421\ntests/contract_testcases/solana/comment_tests.sol:2:27-40"]
 	number_literal [label="uint32 literal: 11\ntests/contract_testcases/solana/comment_tests.sol:2:27-40"]
 	number_literal [label="uint32 literal: 11\ntests/contract_testcases/solana/comment_tests.sol:2:27-40"]
@@ -8,7 +8,7 @@ strict digraph "tests/contract_testcases/solana/comment_tests.sol" {
 	return [label="return\nimplicit"]
 	return [label="return\nimplicit"]
 	storage_load [label="storage load string\nimplicit"]
 	storage_load [label="storage load string\nimplicit"]
 	storage_var [label="storage variable\nSplitter.hello\nstring storage\nimplicit"]
 	storage_var [label="storage variable\nSplitter.hello\nstring storage\nimplicit"]
-	diagnostic [label="found contract 'Splitter'\nlevel Debug\ntests/contract_testcases/solana/comment_tests.sol:1:1-19"]
+	diagnostic [label="found contract 'Splitter'\nlevel Debug\ntests/contract_testcases/solana/comment_tests.sol:1:1-3:2"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]
 	var -> alloc_array [label="initializer"]
 	var -> alloc_array [label="initializer"]

+ 4 - 4
tests/contract_testcases/solana/constant/not_constant.dot

@@ -1,16 +1,16 @@
 strict digraph "tests/contract_testcases/solana/constant/not_constant.sol" {
 strict digraph "tests/contract_testcases/solana/constant/not_constant.sol" {
-	contract [label="contract C\ntests/contract_testcases/solana/constant/not_constant.sol:2:9-20"]
+	contract [label="contract C\ntests/contract_testcases/solana/constant/not_constant.sol:2:9-4:10"]
 	var [label="variable STATIC\nvisibility public\nconstant\ntests/contract_testcases/solana/constant/not_constant.sol:3:13-48"]
 	var [label="variable STATIC\nvisibility public\nconstant\ntests/contract_testcases/solana/constant/not_constant.sol:3:13-48"]
 	number_literal [label="uint256 literal: 42\ntests/contract_testcases/solana/constant/not_constant.sol:3:46-48"]
 	number_literal [label="uint256 literal: 42\ntests/contract_testcases/solana/constant/not_constant.sol:3:46-48"]
 	STATIC [label="function STATIC\ncontract: C\ntests/contract_testcases/solana/constant/not_constant.sol:3:37-43\nsignature STATIC()\nvisibility public\nmutability view"]
 	STATIC [label="function STATIC\ncontract: C\ntests/contract_testcases/solana/constant/not_constant.sol:3:37-43\nsignature STATIC()\nvisibility public\nmutability view"]
 	returns [label="returns\nuint256 "]
 	returns [label="returns\nuint256 "]
 	return [label="return\nimplicit"]
 	return [label="return\nimplicit"]
 	constant [label="constant variable\nC.STATIC\nuint256\nimplicit"]
 	constant [label="constant variable\nC.STATIC\nuint256\nimplicit"]
-	contract_9 [label="contract foo\ntests/contract_testcases/solana/constant/not_constant.sol:6:9-22"]
+	contract_9 [label="contract foo\ntests/contract_testcases/solana/constant/not_constant.sol:6:9-11:10"]
 	f [label="function f\ncontract: foo\ntests/contract_testcases/solana/constant/not_constant.sol:7:13-47\nsignature f()\nvisibility public\nmutability nonpayable"]
 	f [label="function f\ncontract: foo\ntests/contract_testcases/solana/constant/not_constant.sol:7:13-47\nsignature f()\nvisibility public\nmutability nonpayable"]
 	returns_11 [label="returns\nuint256 "]
 	returns_11 [label="returns\nuint256 "]
-	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/constant/not_constant.sol:2:9-20"]
-	diagnostic_14 [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/constant/not_constant.sol:6:9-22"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/constant/not_constant.sol:2:9-4:10"]
+	diagnostic_14 [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/constant/not_constant.sol:6:9-11:10"]
 	diagnostic_15 [label="'C' is a contract\nlevel Error\ntests/contract_testcases/solana/constant/not_constant.sol:8:26-27"]
 	diagnostic_15 [label="'C' is a contract\nlevel Error\ntests/contract_testcases/solana/constant/not_constant.sol:8:26-27"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]

+ 4 - 4
tests/contract_testcases/solana/constant/not_constant_01.dot

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/constant/not_constant_01.sol" {
 strict digraph "tests/contract_testcases/solana/constant/not_constant_01.sol" {
-	contract [label="contract C\ntests/contract_testcases/solana/constant/not_constant_01.sol:2:9-20"]
+	contract [label="contract C\ntests/contract_testcases/solana/constant/not_constant_01.sol:2:9-4:10"]
 	var [label="variable NOT_CONSTANT\nvisibility public\ntests/contract_testcases/solana/constant/not_constant_01.sol:3:13-45"]
 	var [label="variable NOT_CONSTANT\nvisibility public\ntests/contract_testcases/solana/constant/not_constant_01.sol:3:13-45"]
 	number_literal [label="uint256 literal: 42\ntests/contract_testcases/solana/constant/not_constant_01.sol:3:43-45"]
 	number_literal [label="uint256 literal: 42\ntests/contract_testcases/solana/constant/not_constant_01.sol:3:43-45"]
 	NOT_CONSTANT [label="function NOT_CONSTANT\ncontract: C\ntests/contract_testcases/solana/constant/not_constant_01.sol:3:28-40\nsignature NOT_CONSTANT()\nvisibility public\nmutability view"]
 	NOT_CONSTANT [label="function NOT_CONSTANT\ncontract: C\ntests/contract_testcases/solana/constant/not_constant_01.sol:3:28-40\nsignature NOT_CONSTANT()\nvisibility public\nmutability view"]
@@ -7,11 +7,11 @@ strict digraph "tests/contract_testcases/solana/constant/not_constant_01.sol" {
 	return [label="return\nimplicit"]
 	return [label="return\nimplicit"]
 	storage_load [label="storage load uint256\nimplicit"]
 	storage_load [label="storage load uint256\nimplicit"]
 	storage_var [label="storage variable\nC.NOT_CONSTANT\nuint256 storage\nimplicit"]
 	storage_var [label="storage variable\nC.NOT_CONSTANT\nuint256 storage\nimplicit"]
-	contract_10 [label="contract foo\ntests/contract_testcases/solana/constant/not_constant_01.sol:6:9-22"]
+	contract_10 [label="contract foo\ntests/contract_testcases/solana/constant/not_constant_01.sol:6:9-11:10"]
 	f [label="function f\ncontract: foo\ntests/contract_testcases/solana/constant/not_constant_01.sol:7:13-47\nsignature f()\nvisibility public\nmutability nonpayable"]
 	f [label="function f\ncontract: foo\ntests/contract_testcases/solana/constant/not_constant_01.sol:7:13-47\nsignature f()\nvisibility public\nmutability nonpayable"]
 	returns_12 [label="returns\nuint256 "]
 	returns_12 [label="returns\nuint256 "]
-	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/constant/not_constant_01.sol:2:9-20"]
-	diagnostic_15 [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/constant/not_constant_01.sol:6:9-22"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/constant/not_constant_01.sol:2:9-4:10"]
+	diagnostic_15 [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/constant/not_constant_01.sol:6:9-11:10"]
 	diagnostic_16 [label="need instance of contract 'C' to get variable value 'NOT_CONSTANT'\nlevel Error\ntests/contract_testcases/solana/constant/not_constant_01.sol:8:26-40"]
 	diagnostic_16 [label="need instance of contract 'C' to get variable value 'NOT_CONSTANT'\nlevel Error\ntests/contract_testcases/solana/constant/not_constant_01.sol:8:26-40"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/contract_var_base_function_init.sol" {
 strict digraph "tests/contract_testcases/solana/contract_var_base_function_init.sol" {
-	contract [label="contract b\ntests/contract_testcases/solana/contract_var_base_function_init.sol:1:1-12"]
+	contract [label="contract b\ntests/contract_testcases/solana/contract_var_base_function_init.sol:1:1-5:2"]
 	testPtr [label="function testPtr\ncontract: b\ntests/contract_testcases/solana/contract_var_base_function_init.sol:2:5-54\nsignature testPtr(int256)\nvisibility public\nmutability pure"]
 	testPtr [label="function testPtr\ncontract: b\ntests/contract_testcases/solana/contract_var_base_function_init.sol:2:5-54\nsignature testPtr(int256)\nvisibility public\nmutability pure"]
 	parameters [label="parameters\nint256 a"]
 	parameters [label="parameters\nint256 a"]
 	returns [label="returns\nint256 "]
 	returns [label="returns\nint256 "]
@@ -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"]
 	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"]
 	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"]
 	number_literal [label="int256 literal: 2\ntests/contract_testcases/solana/contract_var_base_function_init.sol:3:18-19"]
-	contract_10 [label="contract testing\ntests/contract_testcases/solana/contract_var_base_function_init.sol:6:1-7:22"]
+	contract_10 [label="contract testing\ntests/contract_testcases/solana/contract_var_base_function_init.sol:6:1-10:2"]
 	base [label="base b\ntests/contract_testcases/solana/contract_var_base_function_init.sol:7:21-22"]
 	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"]
 	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"]
 	cast [label="cast function(int256) external pure returns (int256)\ntests/contract_testcases/solana/contract_var_base_function_init.sol:8:55-67"]
@@ -16,8 +16,8 @@ strict digraph "tests/contract_testcases/solana/contract_var_base_function_init.
 	var_16 [label="variable sgPtr\nvisibility internal\ntests/contract_testcases/solana/contract_var_base_function_init.sol:9:5-62"]
 	var_16 [label="variable sgPtr\nvisibility internal\ntests/contract_testcases/solana/contract_var_base_function_init.sol:9:5-62"]
 	cast_17 [label="cast function(int256) internal pure returns (int256)\ntests/contract_testcases/solana/contract_var_base_function_init.sol:9:55-62"]
 	cast_17 [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"]
 	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-12"]
-	diagnostic_21 [label="found contract 'testing'\nlevel Debug\ntests/contract_testcases/solana/contract_var_base_function_init.sol:6:1-7:22"]
+	diagnostic [label="found contract 'b'\nlevel Debug\ntests/contract_testcases/solana/contract_var_base_function_init.sol:1:1-5:2"]
+	diagnostic_21 [label="found contract 'testing'\nlevel Debug\ntests/contract_testcases/solana/contract_var_base_function_init.sol:6:1-10:2"]
 	diagnostic_22 [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 'sfPtr' has been assigned, but never read\nlevel Warning\ntests/contract_testcases/solana/contract_var_base_function_init.sol:8:5-67"]
 	diagnostic_23 [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"]
 	diagnostic_23 [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
 	contracts -> contract

+ 4 - 4
tests/contract_testcases/solana/create_contract/base_contract.dot

@@ -1,11 +1,11 @@
 strict digraph "tests/contract_testcases/solana/create_contract/base_contract.sol" {
 strict digraph "tests/contract_testcases/solana/create_contract/base_contract.sol" {
 	MathError [label="name: MathError\ncontract: Math\ntests/contract_testcases/solana/create_contract/base_contract.sol:3:13-5:14\nvalue: NO_ERROR"]
 	MathError [label="name: MathError\ncontract: Math\ntests/contract_testcases/solana/create_contract/base_contract.sol:3:13-5:14\nvalue: NO_ERROR"]
 	WithMath [label="name:WithMath\ncontract: IsMath\ntests/contract_testcases/solana/create_contract/base_contract.sol:9:20-28\nfield name:math ty:enum Math.MathError"]
 	WithMath [label="name:WithMath\ncontract: IsMath\ntests/contract_testcases/solana/create_contract/base_contract.sol:9:20-28\nfield name:math ty:enum Math.MathError"]
-	contract [label="contract Math\ntests/contract_testcases/solana/create_contract/base_contract.sol:2:9-23"]
-	contract_7 [label="contract IsMath\ntests/contract_testcases/solana/create_contract/base_contract.sol:8:9-32"]
+	contract [label="contract Math\ntests/contract_testcases/solana/create_contract/base_contract.sol:2:9-6:10"]
+	contract_7 [label="contract IsMath\ntests/contract_testcases/solana/create_contract/base_contract.sol:8:9-12:10"]
 	base [label="base Math\ntests/contract_testcases/solana/create_contract/base_contract.sol:8:28-32"]
 	base [label="base Math\ntests/contract_testcases/solana/create_contract/base_contract.sol:8:28-32"]
-	diagnostic [label="found contract 'Math'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract.sol:2:9-23"]
-	diagnostic_11 [label="found contract 'IsMath'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract.sol:8:9-32"]
+	diagnostic [label="found contract 'Math'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract.sol:2:9-6:10"]
+	diagnostic_11 [label="found contract 'IsMath'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract.sol:8:9-12:10"]
 	enums -> MathError
 	enums -> MathError
 	structs -> WithMath
 	structs -> WithMath
 	contracts -> contract
 	contracts -> contract

+ 6 - 6
tests/contract_testcases/solana/create_contract/base_contract_01.dot

@@ -2,14 +2,14 @@ strict digraph "tests/contract_testcases/solana/create_contract/base_contract_01
 	LogicError [label="name: LogicError\ncontract: Logic\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:3:13-5:14\nvalue: LE_ERROR"]
 	LogicError [label="name: LogicError\ncontract: Logic\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:3:13-5:14\nvalue: LE_ERROR"]
 	MathError [label="name: MathError\ncontract: Math\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:8:13-10:14\nvalue: NO_ERROR"]
 	MathError [label="name: MathError\ncontract: Math\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:8:13-10:14\nvalue: NO_ERROR"]
 	WithMath [label="name:WithMath\ncontract: IsMath\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:14:20-28\nfield name:math ty:enum Math.MathError\nfield name:logic ty:enum Logic.LogicError"]
 	WithMath [label="name:WithMath\ncontract: IsMath\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:14:20-28\nfield name:math ty:enum Math.MathError\nfield name:logic ty:enum Logic.LogicError"]
-	contract [label="contract Logic\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:2:9-24"]
-	contract_8 [label="contract Math\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:7:9-31"]
+	contract [label="contract Logic\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:2:9-6:10"]
+	contract_8 [label="contract Math\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:7:9-11:10"]
 	base [label="base Logic\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:7:26-31"]
 	base [label="base Logic\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:7:26-31"]
-	contract_10 [label="contract IsMath\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:13:9-32"]
+	contract_10 [label="contract IsMath\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:13:9-18:10"]
 	base_11 [label="base Math\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:13:28-32"]
 	base_11 [label="base Math\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:13:28-32"]
-	diagnostic [label="found contract 'Logic'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:2:9-24"]
-	diagnostic_14 [label="found contract 'Math'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:7:9-31"]
-	diagnostic_15 [label="found contract 'IsMath'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:13:9-32"]
+	diagnostic [label="found contract 'Logic'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:2:9-6:10"]
+	diagnostic_14 [label="found contract 'Math'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:7:9-11:10"]
+	diagnostic_15 [label="found contract 'IsMath'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract_01.sol:13:9-18:10"]
 	enums -> LogicError
 	enums -> LogicError
 	enums -> MathError
 	enums -> MathError
 	structs -> WithMath
 	structs -> WithMath

+ 6 - 6
tests/contract_testcases/solana/create_contract/base_contract_02.dot

@@ -1,14 +1,14 @@
 strict digraph "tests/contract_testcases/solana/create_contract/base_contract_02.sol" {
 strict digraph "tests/contract_testcases/solana/create_contract/base_contract_02.sol" {
 	LogicFields [label="name:LogicFields\ncontract: Logic\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:3:20-31\nfield name:logia ty:uint256"]
 	LogicFields [label="name:LogicFields\ncontract: Logic\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:3:20-31\nfield name:logia ty:uint256"]
 	WithMath [label="name:WithMath\ncontract: IsMath\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:11:20-28\nfield name:logia ty:struct Logic.LogicFields"]
 	WithMath [label="name:WithMath\ncontract: IsMath\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:11:20-28\nfield name:logia ty:struct Logic.LogicFields"]
-	contract [label="contract Logic\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:2:9-24"]
-	contract_6 [label="contract Math\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:7:9-31"]
+	contract [label="contract Logic\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:2:9-6:10"]
+	contract_6 [label="contract Math\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:7:9-8:10"]
 	base [label="base Logic\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:7:26-31"]
 	base [label="base Logic\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:7:26-31"]
-	contract_8 [label="contract IsMath\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:10:9-32"]
+	contract_8 [label="contract IsMath\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:10:9-14:10"]
 	base_9 [label="base Math\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:10:28-32"]
 	base_9 [label="base Math\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:10:28-32"]
-	diagnostic [label="found contract 'Logic'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:2:9-24"]
-	diagnostic_12 [label="found contract 'Math'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:7:9-31"]
-	diagnostic_13 [label="found contract 'IsMath'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:10:9-32"]
+	diagnostic [label="found contract 'Logic'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:2:9-6:10"]
+	diagnostic_12 [label="found contract 'Math'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:7:9-8:10"]
+	diagnostic_13 [label="found contract 'IsMath'\nlevel Debug\ntests/contract_testcases/solana/create_contract/base_contract_02.sol:10:9-14:10"]
 	structs -> LogicFields
 	structs -> LogicFields
 	structs -> WithMath
 	structs -> WithMath
 	contracts -> contract
 	contracts -> contract

+ 4 - 4
tests/contract_testcases/solana/create_contract/syntax.dot

@@ -1,10 +1,10 @@
 strict digraph "tests/contract_testcases/solana/create_contract/syntax.sol" {
 strict digraph "tests/contract_testcases/solana/create_contract/syntax.sol" {
-	contract [label="contract y\ntests/contract_testcases/solana/create_contract/syntax.sol:2:9-20"]
+	contract [label="contract y\ntests/contract_testcases/solana/create_contract/syntax.sol:2:9-6:10"]
 	f [label="function f\ncontract: y\ntests/contract_testcases/solana/create_contract/syntax.sol:3:13-32\nsignature f()\nvisibility public\nmutability nonpayable"]
 	f [label="function f\ncontract: y\ntests/contract_testcases/solana/create_contract/syntax.sol:3:13-32\nsignature f()\nvisibility public\nmutability nonpayable"]
-	contract_4 [label="contract x\ntests/contract_testcases/solana/create_contract/syntax.sol:7:9-20"]
-	diagnostic [label="found contract 'y'\nlevel Debug\ntests/contract_testcases/solana/create_contract/syntax.sol:2:9-20"]
+	contract_4 [label="contract x\ntests/contract_testcases/solana/create_contract/syntax.sol:7:9-22"]
+	diagnostic [label="found contract 'y'\nlevel Debug\ntests/contract_testcases/solana/create_contract/syntax.sol:2:9-6:10"]
 	diagnostic_7 [label="'gas' not permitted for external calls or constructors on solana\nlevel Error\ntests/contract_testcases/solana/create_contract/syntax.sol:4:29-37"]
 	diagnostic_7 [label="'gas' not permitted for external calls or constructors on solana\nlevel Error\ntests/contract_testcases/solana/create_contract/syntax.sol:4:29-37"]
-	diagnostic_8 [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/create_contract/syntax.sol:7:9-20"]
+	diagnostic_8 [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/create_contract/syntax.sol:7:9-22"]
 	contracts -> contract
 	contracts -> contract
 	contract -> f [label="function"]
 	contract -> f [label="function"]
 	contracts -> contract_4
 	contracts -> contract_4

+ 4 - 4
tests/contract_testcases/solana/create_contract/syntax_01.dot

@@ -1,10 +1,10 @@
 strict digraph "tests/contract_testcases/solana/create_contract/syntax_01.sol" {
 strict digraph "tests/contract_testcases/solana/create_contract/syntax_01.sol" {
-	contract [label="contract y\ntests/contract_testcases/solana/create_contract/syntax_01.sol:2:9-20"]
+	contract [label="contract y\ntests/contract_testcases/solana/create_contract/syntax_01.sol:2:9-6:10"]
 	f [label="function f\ncontract: y\ntests/contract_testcases/solana/create_contract/syntax_01.sol:3:13-32\nsignature f()\nvisibility public\nmutability nonpayable"]
 	f [label="function f\ncontract: y\ntests/contract_testcases/solana/create_contract/syntax_01.sol:3:13-32\nsignature f()\nvisibility public\nmutability nonpayable"]
-	contract_4 [label="contract x\ntests/contract_testcases/solana/create_contract/syntax_01.sol:7:9-20"]
-	diagnostic [label="found contract 'y'\nlevel Debug\ntests/contract_testcases/solana/create_contract/syntax_01.sol:2:9-20"]
+	contract_4 [label="contract x\ntests/contract_testcases/solana/create_contract/syntax_01.sol:7:9-22"]
+	diagnostic [label="found contract 'y'\nlevel Debug\ntests/contract_testcases/solana/create_contract/syntax_01.sol:2:9-6:10"]
 	diagnostic_7 [label="'salt' not permitted for external calls or constructors on solana\nlevel Error\ntests/contract_testcases/solana/create_contract/syntax_01.sol:4:29-38"]
 	diagnostic_7 [label="'salt' not permitted for external calls or constructors on solana\nlevel Error\ntests/contract_testcases/solana/create_contract/syntax_01.sol:4:29-38"]
-	diagnostic_8 [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/create_contract/syntax_01.sol:7:9-20"]
+	diagnostic_8 [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/create_contract/syntax_01.sol:7:9-22"]
 	contracts -> contract
 	contracts -> contract
 	contract -> f [label="function"]
 	contract -> f [label="function"]
 	contracts -> contract_4
 	contracts -> contract_4

+ 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" {
 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"]
 	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:57-2:23"]
+	contract [label="contract TestContract\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:1:57-15:2"]
 	var [label="variable Hashes\nvisibility internal\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:8:5-39"]
 	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"]
 	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"]
 	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"]
 	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"]
 	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"]
 	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:57-2:23"]
+	diagnostic [label="found contract 'TestContract'\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:1:57-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"]
 	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
 	structs -> Data
 	contracts -> contract
 	contracts -> contract

+ 4 - 4
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" {
 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"]
 	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-4:26"]
+	contract [label="contract IUniswapV2Pair\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:3: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"]
 	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"]
 	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-9:19"]
+	contract_6 [label="contract Contract\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:8: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"]
 	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"]
 	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"]
 	var_decl [label="variable decl uint256 size\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:17:2-15"]
@@ -30,8 +30,8 @@ strict digraph "tests/contract_testcases/solana/destructure_assign_struct_member
 	variable_30 [label="variable: _tokens\naddress[]\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:22:58-65"]
 	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"]
 	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:57-2:23"]
 	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:1:57-2:23"]
-	diagnostic_34 [label="found interface 'IUniswapV2Pair'\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:3:1-4:26"]
-	diagnostic_35 [label="found contract 'Contract'\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member_2.sol:8:1-9:19"]
+	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_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_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"]
 	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
 	structs -> Struct1

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

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/doccomments_everywhere.sol" {
 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"]
 	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-5:19"]
+	contract [label="contract Property\ntests/contract_testcases/solana/doccomments_everywhere.sol:4:107-99:2"]
 	tags [label="author: Max Campbell (https://github.com/maxall41), RafaCypherpunk (https://github.com/RafaCypherpunk)"]
 	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 [label="variable pricePerShare_\nvisibility public\ntests/contract_testcases/solana/doccomments_everywhere.sol:9:3-52"]
 	var_7 [label="variable valueLocked_\nvisibility public\ntests/contract_testcases/solana/doccomments_everywhere.sol:10:3-50"]
 	var_7 [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"]
 	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_128 [label="parameters\nuint256 shares_\nuint256 _id"]
 	parameters_128 [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 [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/doccomments_everywhere.sol:1:1-24"]
-	diagnostic_131 [label="found contract 'Property'\nlevel Debug\ntests/contract_testcases/solana/doccomments_everywhere.sol:4:107-5:19"]
+	diagnostic_131 [label="found contract 'Property'\nlevel Debug\ntests/contract_testcases/solana/doccomments_everywhere.sol:4:107-99:2"]
 	diagnostic_132 [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:6:22-30"]
 	diagnostic_133 [label="'Counters' not found\nlevel Error\ntests/contract_testcases/solana/doccomments_everywhere.sol:7:3-11"]
 	diagnostic_133 [label="'Counters' not found\nlevel Error\ntests/contract_testcases/solana/doccomments_everywhere.sol:7:3-11"]
 	diagnostic_134 [label="'ERC1155' not found\nlevel Error\ntests/contract_testcases/solana/doccomments_everywhere.sol:17:17-24"]
 	diagnostic_134 [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" {
 strict digraph "tests/contract_testcases/solana/error.sol" {
-	contract [label="contract error\ntests/contract_testcases/solana/error.sol:1:1-2:16"]
+	contract [label="contract error\ntests/contract_testcases/solana/error.sol:1: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"]
 	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"]
 	parameters [label="parameters\ncontract error x"]
-	diagnostic [label="found contract 'error'\nlevel Debug\ntests/contract_testcases/solana/error.sol:1:1-2:16"]
+	diagnostic [label="found contract 'error'\nlevel Debug\ntests/contract_testcases/solana/error.sol:1:1-8:2"]
 	diagnostic_7 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/error.sol:5:2-30"]
 	diagnostic_7 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/error.sol:5:2-30"]
 	diagnostic_8 [label="function parameter 'x' has never been read\nlevel Warning\ntests/contract_testcases/solana/error.sol:5:21-22"]
 	diagnostic_8 [label="function parameter 'x' has never been read\nlevel Warning\ntests/contract_testcases/solana/error.sol:5:21-22"]
 	contracts -> contract
 	contracts -> contract

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

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/event.sol" {
 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"]
 	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-5:12"]
+	contract [label="contract c\ntests/contract_testcases/solana/event.sol:4:1-11:2"]
 	foo [label="function foo\ncontract: c\ntests/contract_testcases/solana/event.sol:6:5-26\nsignature foo()\nvisibility public\nmutability nonpayable"]
 	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-5:12"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/event.sol:4:1-11:2"]
 	diagnostic_8 [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:7:18-19"]
 	diagnostic_9 [label="'b' not found\nlevel Error\ntests/contract_testcases/solana/event.sol:7:21-22"]
 	diagnostic_9 [label="'b' not found\nlevel Error\ntests/contract_testcases/solana/event.sol:7:21-22"]
 	diagnostic_10 [label="'a' not found\nlevel Error\ntests/contract_testcases/solana/event.sol:8:24-25"]
 	diagnostic_10 [label="'a' not found\nlevel Error\ntests/contract_testcases/solana/event.sol:8:24-25"]

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/expressions/bytes32_0.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/bytes32_0.sol" {
-	contract [label="contract x\ntests/contract_testcases/solana/expressions/bytes32_0.sol:2:9-20"]
+	contract [label="contract x\ntests/contract_testcases/solana/expressions/bytes32_0.sol:2:9-14:10"]
 	b32 [label="function b32\ncontract: x\ntests/contract_testcases/solana/expressions/bytes32_0.sol:3:13-59\nsignature b32()\nvisibility public\nmutability pure"]
 	b32 [label="function b32\ncontract: x\ntests/contract_testcases/solana/expressions/bytes32_0.sol:3:13-59\nsignature b32()\nvisibility public\nmutability pure"]
 	returns [label="returns\nbytes32 r"]
 	returns [label="returns\nbytes32 r"]
 	expr [label="expression\ntests/contract_testcases/solana/expressions/bytes32_0.sol:4:17-31"]
 	expr [label="expression\ntests/contract_testcases/solana/expressions/bytes32_0.sol:4:17-31"]
@@ -18,7 +18,7 @@ strict digraph "tests/contract_testcases/solana/expressions/bytes32_0.sol" {
 	assign_18 [label="assign\nbytes3\ntests/contract_testcases/solana/expressions/bytes32_0.sol:12:17-37"]
 	assign_18 [label="assign\nbytes3\ntests/contract_testcases/solana/expressions/bytes32_0.sol:12:17-37"]
 	variable_19 [label="variable: r\nbytes3\ntests/contract_testcases/solana/expressions/bytes32_0.sol:12:17-18"]
 	variable_19 [label="variable: r\nbytes3\ntests/contract_testcases/solana/expressions/bytes32_0.sol:12:17-18"]
 	number_literal_20 [label="bytes3 literal: 74291\ntests/contract_testcases/solana/expressions/bytes32_0.sol:12:21-37"]
 	number_literal_20 [label="bytes3 literal: 74291\ntests/contract_testcases/solana/expressions/bytes32_0.sol:12:21-37"]
-	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/expressions/bytes32_0.sol:2:9-20"]
+	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/expressions/bytes32_0.sol:2:9-14:10"]
 	contracts -> contract
 	contracts -> contract
 	contract -> b32 [label="function"]
 	contract -> b32 [label="function"]
 	b32 -> returns [label="returns"]
 	b32 -> returns [label="returns"]

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

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/expressions/bytes32_0_01.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/bytes32_0_01.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/expressions/bytes32_0_01.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/expressions/bytes32_0_01.sol:2:9-6:10"]
 	b32 [label="function b32\ncontract: foo\ntests/contract_testcases/solana/expressions/bytes32_0_01.sol:3:13-59\nsignature b32()\nvisibility public\nmutability pure"]
 	b32 [label="function b32\ncontract: foo\ntests/contract_testcases/solana/expressions/bytes32_0_01.sol:3:13-59\nsignature b32()\nvisibility public\nmutability pure"]
 	returns [label="returns\nbytes32 r"]
 	returns [label="returns\nbytes32 r"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/bytes32_0_01.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/bytes32_0_01.sol:2:9-6:10"]
 	diagnostic_7 [label="number of 2 bytes cannot be converted to type 'bytes32'\nlevel Error\ntests/contract_testcases/solana/expressions/bytes32_0_01.sol:4:21-36"]
 	diagnostic_7 [label="number of 2 bytes cannot be converted to type 'bytes32'\nlevel Error\ntests/contract_testcases/solana/expressions/bytes32_0_01.sol:4:21-36"]
 	contracts -> contract
 	contracts -> contract
 	contract -> b32 [label="function"]
 	contract -> b32 [label="function"]

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/expressions/bytes32_0_02.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/bytes32_0_02.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:2:9-14:10"]
 	var [label="variable x\nvisibility public\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:3:13-36"]
 	var [label="variable x\nvisibility public\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:3:13-36"]
 	number_literal [label="bytes32 literal: 0\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:3:32-36"]
 	number_literal [label="bytes32 literal: 0\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:3:32-36"]
 	var_5 [label="variable y\nvisibility public\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:4:13-42"]
 	var_5 [label="variable y\nvisibility public\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:4:13-42"]
@@ -37,7 +37,7 @@ strict digraph "tests/contract_testcases/solana/expressions/bytes32_0_02.sol" {
 	storage_var_37 [label="storage variable\nfoo.z3\nbytes3 storage\nimplicit"]
 	storage_var_37 [label="storage variable\nfoo.z3\nbytes3 storage\nimplicit"]
 	b32 [label="function b32\ncontract: foo\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:11:13-59\nsignature b32()\nvisibility public\nmutability pure"]
 	b32 [label="function b32\ncontract: foo\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:11:13-59\nsignature b32()\nvisibility public\nmutability pure"]
 	returns_39 [label="returns\nbytes32 r"]
 	returns_39 [label="returns\nbytes32 r"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:2:9-14:10"]
 	diagnostic_42 [label="negative number cannot be converted to type 'bytes32'\nlevel Error\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:12:21-32"]
 	diagnostic_42 [label="negative number cannot be converted to type 'bytes32'\nlevel Error\ntests/contract_testcases/solana/expressions/bytes32_0_02.sol:12:21-32"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/expressions/const_in_type.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/const_in_type.sol" {
-	contract [label="contract x\ntests/contract_testcases/solana/expressions/const_in_type.sol:2:9-20"]
+	contract [label="contract x\ntests/contract_testcases/solana/expressions/const_in_type.sol:2:9-6:10"]
 	var [label="variable Y\nvisibility public\nconstant\ntests/contract_testcases/solana/expressions/const_in_type.sol:3:13-40"]
 	var [label="variable Y\nvisibility public\nconstant\ntests/contract_testcases/solana/expressions/const_in_type.sol:3:13-40"]
 	number_literal [label="uint256 literal: 24\ntests/contract_testcases/solana/expressions/const_in_type.sol:3:38-40"]
 	number_literal [label="uint256 literal: 24\ntests/contract_testcases/solana/expressions/const_in_type.sol:3:38-40"]
 	Y [label="function Y\ncontract: x\ntests/contract_testcases/solana/expressions/const_in_type.sol:3:34-35\nsignature Y()\nvisibility public\nmutability view"]
 	Y [label="function Y\ncontract: x\ntests/contract_testcases/solana/expressions/const_in_type.sol:3:34-35\nsignature Y()\nvisibility public\nmutability view"]
@@ -8,7 +8,7 @@ strict digraph "tests/contract_testcases/solana/expressions/const_in_type.sol" {
 	constant [label="constant variable\nx.Y\nuint256\nimplicit"]
 	constant [label="constant variable\nx.Y\nuint256\nimplicit"]
 	node_9 [label="constructor \ncontract: x\ntests/contract_testcases/solana/expressions/const_in_type.sol:5:13-48\nsignature (bytes32[24])\nvisibility public\nmutability nonpayable"]
 	node_9 [label="constructor \ncontract: x\ntests/contract_testcases/solana/expressions/const_in_type.sol:5:13-48\nsignature (bytes32[24])\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\nbytes32[24] foo"]
 	parameters [label="parameters\nbytes32[24] foo"]
-	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/expressions/const_in_type.sol:2:9-20"]
+	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/expressions/const_in_type.sol:2:9-6:10"]
 	diagnostic_13 [label="function parameter 'foo' has never been read\nlevel Warning\ntests/contract_testcases/solana/expressions/const_in_type.sol:5:43-46"]
 	diagnostic_13 [label="function parameter 'foo' has never been read\nlevel Warning\ntests/contract_testcases/solana/expressions/const_in_type.sol:5:43-46"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]

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

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

+ 4 - 4
tests/contract_testcases/solana/expressions/contract_no_init.dot

@@ -1,12 +1,12 @@
 strict digraph "tests/contract_testcases/solana/expressions/contract_no_init.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/contract_no_init.sol" {
-	contract [label="contract other\ntests/contract_testcases/solana/expressions/contract_no_init.sol:2:9-24"]
+	contract [label="contract other\ntests/contract_testcases/solana/expressions/contract_no_init.sol:2:9-4:10"]
 	var [label="variable a\nvisibility public\ntests/contract_testcases/solana/expressions/contract_no_init.sol:3:13-25"]
 	var [label="variable a\nvisibility public\ntests/contract_testcases/solana/expressions/contract_no_init.sol:3:13-25"]
 	a [label="function a\ncontract: other\ntests/contract_testcases/solana/expressions/contract_no_init.sol:3:24-25\nsignature a()\nvisibility public\nmutability view"]
 	a [label="function a\ncontract: other\ntests/contract_testcases/solana/expressions/contract_no_init.sol:3:24-25\nsignature a()\nvisibility public\nmutability view"]
 	returns [label="returns\nint256 "]
 	returns [label="returns\nint256 "]
 	return [label="return\nimplicit"]
 	return [label="return\nimplicit"]
 	storage_load [label="storage load int256\nimplicit"]
 	storage_load [label="storage load int256\nimplicit"]
 	storage_var [label="storage variable\nother.a\nint256 storage\nimplicit"]
 	storage_var [label="storage variable\nother.a\nint256 storage\nimplicit"]
-	contract_9 [label="contract testing\ntests/contract_testcases/solana/expressions/contract_no_init.sol:6:9-26"]
+	contract_9 [label="contract testing\ntests/contract_testcases/solana/expressions/contract_no_init.sol:6:9-16:10"]
 	test [label="function test\ncontract: testing\ntests/contract_testcases/solana/expressions/contract_no_init.sol:7:13-54\nsignature test(int256)\nvisibility public\nmutability nonpayable"]
 	test [label="function test\ncontract: testing\ntests/contract_testcases/solana/expressions/contract_no_init.sol:7:13-54\nsignature test(int256)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\nint256 x"]
 	parameters [label="parameters\nint256 x"]
 	returns_12 [label="returns\nint256 "]
 	returns_12 [label="returns\nint256 "]
@@ -26,8 +26,8 @@ strict digraph "tests/contract_testcases/solana/expressions/contract_no_init.sol
 	call_external_function [label="call external function\ntests/contract_testcases/solana/expressions/contract_no_init.sol:14:24-29"]
 	call_external_function [label="call external function\ntests/contract_testcases/solana/expressions/contract_no_init.sol:14:24-29"]
 	external_function [label="function() external view returns (int256)\nother.a\ntests/contract_testcases/solana/expressions/contract_no_init.sol:14:24-29"]
 	external_function [label="function() external view returns (int256)\nother.a\ntests/contract_testcases/solana/expressions/contract_no_init.sol:14:24-29"]
 	variable_28 [label="variable: o\ncontract other\ntests/contract_testcases/solana/expressions/contract_no_init.sol:14:24-25"]
 	variable_28 [label="variable: o\ncontract other\ntests/contract_testcases/solana/expressions/contract_no_init.sol:14:24-25"]
-	diagnostic [label="found contract 'other'\nlevel Debug\ntests/contract_testcases/solana/expressions/contract_no_init.sol:2:9-24"]
-	diagnostic_31 [label="found contract 'testing'\nlevel Debug\ntests/contract_testcases/solana/expressions/contract_no_init.sol:6:9-26"]
+	diagnostic [label="found contract 'other'\nlevel Debug\ntests/contract_testcases/solana/expressions/contract_no_init.sol:2:9-4:10"]
+	diagnostic_31 [label="found contract 'testing'\nlevel Debug\ntests/contract_testcases/solana/expressions/contract_no_init.sol:6:9-16:10"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]
 	contract -> a [label="function"]
 	contract -> a [label="function"]

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

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/expressions/interfaceid.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/interfaceid.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/expressions/interfaceid.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/expressions/interfaceid.sol:2:9-6:10"]
 	get [label="function get\ncontract: foo\ntests/contract_testcases/solana/expressions/interfaceid.sol:3:13-51\nsignature get()\nvisibility public\nmutability nonpayable"]
 	get [label="function get\ncontract: foo\ntests/contract_testcases/solana/expressions/interfaceid.sol:3:13-51\nsignature get()\nvisibility public\nmutability nonpayable"]
 	returns [label="returns\nbytes4 "]
 	returns [label="returns\nbytes4 "]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/interfaceid.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/interfaceid.sol:2:9-6:10"]
 	diagnostic_7 [label="type(…).interfaceId is permitted on interface, not contract foo\nlevel Error\ntests/contract_testcases/solana/expressions/interfaceid.sol:4:24-45"]
 	diagnostic_7 [label="type(…).interfaceId is permitted on interface, not contract foo\nlevel Error\ntests/contract_testcases/solana/expressions/interfaceid.sol:4:24-45"]
 	contracts -> contract
 	contracts -> contract
 	contract -> get [label="function"]
 	contract -> get [label="function"]

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

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/expressions/pushpop.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/pushpop.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/expressions/pushpop.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/expressions/pushpop.sol:2:9-8:10"]
 	test [label="function test\ncontract: foo\ntests/contract_testcases/solana/expressions/pushpop.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
 	test [label="function test\ncontract: foo\ntests/contract_testcases/solana/expressions/pushpop.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/pushpop.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/pushpop.sol:2:9-8:10"]
 	diagnostic_6 [label="'push()' not supported on 'bytes' on target solana\nlevel Error\ntests/contract_testcases/solana/expressions/pushpop.sol:6:19-23"]
 	diagnostic_6 [label="'push()' not supported on 'bytes' on target solana\nlevel Error\ntests/contract_testcases/solana/expressions/pushpop.sol:6:19-23"]
 	contracts -> contract
 	contracts -> contract
 	contract -> test [label="function"]
 	contract -> test [label="function"]

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

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/expressions/pushpop_01.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/pushpop_01.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/expressions/pushpop_01.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/expressions/pushpop_01.sol:2:9-8:10"]
 	test [label="function test\ncontract: foo\ntests/contract_testcases/solana/expressions/pushpop_01.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
 	test [label="function test\ncontract: foo\ntests/contract_testcases/solana/expressions/pushpop_01.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/pushpop_01.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/pushpop_01.sol:2:9-8:10"]
 	diagnostic_6 [label="'pop()' not supported on 'bytes' on target solana\nlevel Error\ntests/contract_testcases/solana/expressions/pushpop_01.sol:6:19-22"]
 	diagnostic_6 [label="'pop()' not supported on 'bytes' on target solana\nlevel Error\ntests/contract_testcases/solana/expressions/pushpop_01.sol:6:19-22"]
 	contracts -> contract
 	contracts -> contract
 	contract -> test [label="function"]
 	contract -> test [label="function"]

+ 4 - 4
tests/contract_testcases/solana/expressions/selector_in_free_function.dot

@@ -1,11 +1,11 @@
 strict digraph "tests/contract_testcases/solana/expressions/selector_in_free_function.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/selector_in_free_function.sol" {
-	contract [label="contract I\ntests/contract_testcases/solana/expressions/selector_in_free_function.sol:2:9-21"]
+	contract [label="contract I\ntests/contract_testcases/solana/expressions/selector_in_free_function.sol:2:9-4:10"]
 	X [label="function X\ncontract: I\ntests/contract_testcases/solana/expressions/selector_in_free_function.sol:3:13-39\nsignature X(bytes)\nvisibility external\nmutability nonpayable\nvirtual"]
 	X [label="function X\ncontract: I\ntests/contract_testcases/solana/expressions/selector_in_free_function.sol:3:13-39\nsignature X(bytes)\nvisibility external\nmutability nonpayable\nvirtual"]
 	parameters [label="parameters\nbytes "]
 	parameters [label="parameters\nbytes "]
-	contract_5 [label="contract foo\ntests/contract_testcases/solana/expressions/selector_in_free_function.sol:10:9-22"]
-	diagnostic [label="found interface 'I'\nlevel Debug\ntests/contract_testcases/solana/expressions/selector_in_free_function.sol:2:9-21"]
+	contract_5 [label="contract foo\ntests/contract_testcases/solana/expressions/selector_in_free_function.sol:10:9-24"]
+	diagnostic [label="found interface 'I'\nlevel Debug\ntests/contract_testcases/solana/expressions/selector_in_free_function.sol:2:9-4:10"]
 	diagnostic_8 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/expressions/selector_in_free_function.sol:6:9-38"]
 	diagnostic_8 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/expressions/selector_in_free_function.sol:6:9-38"]
-	diagnostic_9 [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/selector_in_free_function.sol:10:9-22"]
+	diagnostic_9 [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/selector_in_free_function.sol:10:9-24"]
 	contracts -> contract
 	contracts -> contract
 	contract -> X [label="function"]
 	contract -> X [label="function"]
 	X -> parameters [label="parameters"]
 	X -> parameters [label="parameters"]

+ 5 - 5
tests/contract_testcases/solana/expressions/selector_in_free_function_01.dot

@@ -1,17 +1,17 @@
 strict digraph "tests/contract_testcases/solana/expressions/selector_in_free_function_01.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/selector_in_free_function_01.sol" {
-	contract [label="contract I\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:2:9-21"]
+	contract [label="contract I\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:2:9-4:10"]
 	X [label="function X\ncontract: I\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:3:13-39\nsignature X(bytes)\nvisibility external\nmutability nonpayable\nvirtual"]
 	X [label="function X\ncontract: I\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:3:13-39\nsignature X(bytes)\nvisibility external\nmutability nonpayable\nvirtual"]
 	parameters [label="parameters\nbytes "]
 	parameters [label="parameters\nbytes "]
-	contract_5 [label="contract X\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:6:9-20"]
+	contract_5 [label="contract X\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:6:9-10:10"]
 	x [label="function x\ncontract: X\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:7:13-49\nsignature x()\nvisibility public\nmutability nonpayable"]
 	x [label="function x\ncontract: X\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:7:13-49\nsignature x()\nvisibility public\nmutability nonpayable"]
 	returns [label="returns\nbytes4 "]
 	returns [label="returns\nbytes4 "]
 	return [label="return\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:8:17-36"]
 	return [label="return\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:8:17-36"]
 	builtins [label="builtin FunctionSelector\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:8:24-27"]
 	builtins [label="builtin FunctionSelector\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:8:24-27"]
 	internal_function [label="function(bytes) internal returns (void)\nI.X\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:8:24-25"]
 	internal_function [label="function(bytes) internal returns (void)\nI.X\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:8:24-25"]
-	diagnostic [label="found interface 'I'\nlevel Debug\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:2:9-21"]
+	diagnostic [label="found interface 'I'\nlevel Debug\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:2:9-4:10"]
 	diagnostic_13 [label="X is already defined as a contract name\nlevel Warning\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:3:22-23"]
 	diagnostic_13 [label="X is already defined as a contract name\nlevel Warning\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:3:22-23"]
-	note [label="location of previous definition\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:6:9-20"]
-	diagnostic_15 [label="found contract 'X'\nlevel Debug\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:6:9-20"]
+	note [label="location of previous definition\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:6:9-10:10"]
+	diagnostic_15 [label="found contract 'X'\nlevel Debug\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:6:9-10:10"]
 	diagnostic_16 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:7:13-49"]
 	diagnostic_16 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/expressions/selector_in_free_function_01.sol:7:13-49"]
 	contracts -> contract
 	contracts -> contract
 	contract -> X [label="function"]
 	contract -> X [label="function"]

+ 4 - 4
tests/contract_testcases/solana/expressions/selector_in_free_function_02.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/expressions/selector_in_free_function_02.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/selector_in_free_function_02.sol" {
-	contract [label="contract I\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:2:9-20"]
+	contract [label="contract I\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:2:9-4:10"]
 	X [label="function X\ncontract: I\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:3:13-34\nsignature X()\nvisibility external\nmutability nonpayable"]
 	X [label="function X\ncontract: I\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:3:13-34\nsignature X()\nvisibility external\nmutability nonpayable"]
-	contract_4 [label="contract foo\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:6:9-22"]
+	contract_4 [label="contract foo\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:6:9-10:10"]
 	f [label="function f\ncontract: foo\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:7:13-52\nsignature f(bytes32)\nvisibility public\nmutability nonpayable"]
 	f [label="function f\ncontract: foo\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:7:13-52\nsignature f(bytes32)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\ncontract I t"]
 	parameters [label="parameters\ncontract I t"]
 	returns [label="returns\nbytes4 "]
 	returns [label="returns\nbytes4 "]
@@ -9,9 +9,9 @@ strict digraph "tests/contract_testcases/solana/expressions/selector_in_free_fun
 	builtins [label="builtin FunctionSelector\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:8:24-27"]
 	builtins [label="builtin FunctionSelector\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:8:24-27"]
 	external_function [label="function() external\nI.X\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:8:26-27"]
 	external_function [label="function() external\nI.X\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:8:26-27"]
 	variable [label="variable: t\ncontract I\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:8:24-25"]
 	variable [label="variable: t\ncontract I\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:8:24-25"]
-	diagnostic [label="found contract 'I'\nlevel Debug\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:2:9-20"]
+	diagnostic [label="found contract 'I'\nlevel Debug\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:2:9-4:10"]
 	diagnostic_14 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:3:13-34"]
 	diagnostic_14 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:3:13-34"]
-	diagnostic_15 [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:6:9-22"]
+	diagnostic_15 [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:6:9-10:10"]
 	diagnostic_16 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:7:13-52"]
 	diagnostic_16 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:7:13-52"]
 	diagnostic_17 [label="function parameter 't' has never been read\nlevel Warning\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:7:26-27"]
 	diagnostic_17 [label="function parameter 't' has never been read\nlevel Warning\ntests/contract_testcases/solana/expressions/selector_in_free_function_02.sol:7:26-27"]
 	contracts -> contract
 	contracts -> contract

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

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/expressions/slice.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/slice.sol" {
-	contract [label="contract slice\ntests/contract_testcases/solana/expressions/slice.sol:1:1-2:16"]
+	contract [label="contract slice\ntests/contract_testcases/solana/expressions/slice.sol:1: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"]
 	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"]
 	parameters [label="parameters\nbytes foo"]
-	diagnostic [label="found contract 'slice'\nlevel Debug\ntests/contract_testcases/solana/expressions/slice.sol:1:1-2:16"]
+	diagnostic [label="found contract 'slice'\nlevel Debug\ntests/contract_testcases/solana/expressions/slice.sol:1:1-9:2"]
 	diagnostic_7 [label="declaration of 'foo' shadows function\nlevel Warning\ntests/contract_testcases/solana/expressions/slice.sol:3:24-27"]
 	diagnostic_7 [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"]
 	note [label="previous declaration of function\ntests/contract_testcases/solana/expressions/slice.sol:3:14-17"]
 	diagnostic_9 [label="slice not supported yet\nlevel Error\ntests/contract_testcases/solana/expressions/slice.sol:4:20-27"]
 	diagnostic_9 [label="slice not supported yet\nlevel Error\ntests/contract_testcases/solana/expressions/slice.sol:4:20-27"]

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

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/expressions/tx.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/tx.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/expressions/tx.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/expressions/tx.sol:2:9-6:10"]
 	test [label="function test\ncontract: foo\ntests/contract_testcases/solana/expressions/tx.sol:3:13-58\nsignature test()\nvisibility public\nmutability pure"]
 	test [label="function test\ncontract: foo\ntests/contract_testcases/solana/expressions/tx.sol:3:13-58\nsignature test()\nvisibility public\nmutability pure"]
 	returns [label="returns\naddress "]
 	returns [label="returns\naddress "]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/tx.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/tx.sol:2:9-6:10"]
 	diagnostic_7 [label="builtin 'tx.origin' does not exist\nlevel Error\ntests/contract_testcases/solana/expressions/tx.sol:4:24-26"]
 	diagnostic_7 [label="builtin 'tx.origin' does not exist\nlevel Error\ntests/contract_testcases/solana/expressions/tx.sol:4:24-26"]
 	contracts -> contract
 	contracts -> contract
 	contract -> test [label="function"]
 	contract -> test [label="function"]

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

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/expressions/tx_01.sol" {
 strict digraph "tests/contract_testcases/solana/expressions/tx_01.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/expressions/tx_01.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/expressions/tx_01.sol:2:9-6:10"]
 	test [label="function test\ncontract: foo\ntests/contract_testcases/solana/expressions/tx_01.sol:3:13-57\nsignature test()\nvisibility public\nmutability pure"]
 	test [label="function test\ncontract: foo\ntests/contract_testcases/solana/expressions/tx_01.sol:3:13-57\nsignature test()\nvisibility public\nmutability pure"]
 	returns [label="returns\nuint64 "]
 	returns [label="returns\nuint64 "]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/tx_01.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/expressions/tx_01.sol:2:9-6:10"]
 	diagnostic_7 [label="builtin 'tx.gasprice' does not exist\nlevel Error\ntests/contract_testcases/solana/expressions/tx_01.sol:4:24-26"]
 	diagnostic_7 [label="builtin 'tx.gasprice' does not exist\nlevel Error\ntests/contract_testcases/solana/expressions/tx_01.sol:4:24-26"]
 	contracts -> contract
 	contracts -> contract
 	contract -> test [label="function"]
 	contract -> test [label="function"]

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/garbage_function_args.sol" {
 strict digraph "tests/contract_testcases/solana/garbage_function_args.sol" {
-	contract [label="contract c\ntests/contract_testcases/solana/garbage_function_args.sol:1:1-12"]
+	contract [label="contract c\ntests/contract_testcases/solana/garbage_function_args.sol:1:1-17:2"]
 	g [label="function g\ncontract: c\ntests/contract_testcases/solana/garbage_function_args.sol:2:2-28\nsignature g(bytes32)\nvisibility public\nmutability nonpayable"]
 	g [label="function g\ncontract: c\ntests/contract_testcases/solana/garbage_function_args.sol:2:2-28\nsignature g(bytes32)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\naddress "]
 	parameters [label="parameters\naddress "]
 	g_5 [label="function g\ncontract: c\ntests/contract_testcases/solana/garbage_function_args.sol:5:2-28\nsignature g(bytes)\nvisibility public\nmutability nonpayable"]
 	g_5 [label="function g\ncontract: c\ntests/contract_testcases/solana/garbage_function_args.sol:5:2-28\nsignature g(bytes)\nvisibility public\nmutability nonpayable"]
@@ -9,7 +9,7 @@ strict digraph "tests/contract_testcases/solana/garbage_function_args.sol" {
 	parameters_9 [label="parameters\nint256 "]
 	parameters_9 [label="parameters\nint256 "]
 	g_10 [label="function g\ncontract: c\ntests/contract_testcases/solana/garbage_function_args.sol:14:2-25\nsignature g(bool)\nvisibility public\nmutability nonpayable"]
 	g_10 [label="function g\ncontract: c\ntests/contract_testcases/solana/garbage_function_args.sol:14:2-25\nsignature g(bool)\nvisibility public\nmutability nonpayable"]
 	parameters_11 [label="parameters\nbool "]
 	parameters_11 [label="parameters\nbool "]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/garbage_function_args.sol:1:1-12"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/garbage_function_args.sol:1:1-17:2"]
 	diagnostic_14 [label="'rubbish' not found\nlevel Error\ntests/contract_testcases/solana/garbage_function_args.sol:3:11-18"]
 	diagnostic_14 [label="'rubbish' not found\nlevel Error\ntests/contract_testcases/solana/garbage_function_args.sol:3:11-18"]
 	diagnostic_15 [label="'meh' not found\nlevel Error\ntests/contract_testcases/solana/garbage_function_args.sol:6:15-18"]
 	diagnostic_15 [label="'meh' not found\nlevel Error\ntests/contract_testcases/solana/garbage_function_args.sol:6:15-18"]
 	diagnostic_16 [label="'foo' not found\nlevel Error\ntests/contract_testcases/solana/garbage_function_args.sol:9:9-12"]
 	diagnostic_16 [label="'foo' not found\nlevel Error\ntests/contract_testcases/solana/garbage_function_args.sol:9:9-12"]

+ 2 - 2
tests/contract_testcases/solana/hash/constants_hash_tests.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/hash/constants_hash_tests.sol" {
 strict digraph "tests/contract_testcases/solana/hash/constants_hash_tests.sol" {
-	contract [label="contract tester\ntests/contract_testcases/solana/hash/constants_hash_tests.sol:2:9-25"]
+	contract [label="contract tester\ntests/contract_testcases/solana/hash/constants_hash_tests.sol:2:9-8:10"]
 	test [label="function test\ncontract: tester\ntests/contract_testcases/solana/hash/constants_hash_tests.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
 	test [label="function test\ncontract: tester\ntests/contract_testcases/solana/hash/constants_hash_tests.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'tester'\nlevel Debug\ntests/contract_testcases/solana/hash/constants_hash_tests.sol:2:9-25"]
+	diagnostic [label="found contract 'tester'\nlevel Debug\ntests/contract_testcases/solana/hash/constants_hash_tests.sol:2:9-8:10"]
 	diagnostic_6 [label="unknown function or type 'blake2_256'\nlevel Error\ntests/contract_testcases/solana/hash/constants_hash_tests.sol:4:32-42"]
 	diagnostic_6 [label="unknown function or type 'blake2_256'\nlevel Error\ntests/contract_testcases/solana/hash/constants_hash_tests.sol:4:32-42"]
 	contracts -> contract
 	contracts -> contract
 	contract -> test [label="function"]
 	contract -> test [label="function"]

+ 2 - 2
tests/contract_testcases/solana/hash/constants_hash_tests_01.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/hash/constants_hash_tests_01.sol" {
 strict digraph "tests/contract_testcases/solana/hash/constants_hash_tests_01.sol" {
-	contract [label="contract tester\ntests/contract_testcases/solana/hash/constants_hash_tests_01.sol:2:9-25"]
+	contract [label="contract tester\ntests/contract_testcases/solana/hash/constants_hash_tests_01.sol:2:9-8:10"]
 	test [label="function test\ncontract: tester\ntests/contract_testcases/solana/hash/constants_hash_tests_01.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
 	test [label="function test\ncontract: tester\ntests/contract_testcases/solana/hash/constants_hash_tests_01.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'tester'\nlevel Debug\ntests/contract_testcases/solana/hash/constants_hash_tests_01.sol:2:9-25"]
+	diagnostic [label="found contract 'tester'\nlevel Debug\ntests/contract_testcases/solana/hash/constants_hash_tests_01.sol:2:9-8:10"]
 	diagnostic_6 [label="unknown function or type 'blake2_128'\nlevel Error\ntests/contract_testcases/solana/hash/constants_hash_tests_01.sol:4:32-42"]
 	diagnostic_6 [label="unknown function or type 'blake2_128'\nlevel Error\ntests/contract_testcases/solana/hash/constants_hash_tests_01.sol:4:32-42"]
 	contracts -> contract
 	contracts -> contract
 	contract -> test [label="function"]
 	contract -> test [label="function"]

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

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

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/immutable_function_type.sol" {
 strict digraph "tests/contract_testcases/solana/immutable_function_type.sol" {
-	contract [label="contract c\ntests/contract_testcases/solana/immutable_function_type.sol:1:1-12"]
+	contract [label="contract c\ntests/contract_testcases/solana/immutable_function_type.sol:1:1-4:2"]
 	var [label="variable f\nvisibility private\nimmutable\ntests/contract_testcases/solana/immutable_function_type.sol:2:5-63"]
 	var [label="variable f\nvisibility private\nimmutable\ntests/contract_testcases/solana/immutable_function_type.sol:2:5-63"]
 	cast [label="cast function() internal returns (uint256)\ntests/contract_testcases/solana/immutable_function_type.sol:2:62-63"]
 	cast [label="cast function() internal returns (uint256)\ntests/contract_testcases/solana/immutable_function_type.sol:2:62-63"]
 	internal_function [label="function() internal pure returns (uint256)\nc.g\ntests/contract_testcases/solana/immutable_function_type.sol:2:62-63"]
 	internal_function [label="function() internal pure returns (uint256)\nc.g\ntests/contract_testcases/solana/immutable_function_type.sol:2:62-63"]
@@ -7,7 +7,7 @@ strict digraph "tests/contract_testcases/solana/immutable_function_type.sol" {
 	returns [label="returns\nuint256 "]
 	returns [label="returns\nuint256 "]
 	return [label="return\ntests/contract_testcases/solana/immutable_function_type.sol:3:49-57"]
 	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"]
 	number_literal [label="uint256 literal: 2\ntests/contract_testcases/solana/immutable_function_type.sol:3:56-57"]
-	contract_10 [label="contract d\ntests/contract_testcases/solana/immutable_function_type.sol:5:1-6:12"]
+	contract_10 [label="contract d\ntests/contract_testcases/solana/immutable_function_type.sol:5:1-9:2"]
 	var_11 [label="variable f\nvisibility private\nimmutable\ntests/contract_testcases/solana/immutable_function_type.sol:7:5-63"]
 	var_11 [label="variable f\nvisibility private\nimmutable\ntests/contract_testcases/solana/immutable_function_type.sol:7:5-63"]
 	cast_12 [label="cast function() internal returns (uint256)\ntests/contract_testcases/solana/immutable_function_type.sol:7:62-63"]
 	cast_12 [label="cast function() internal returns (uint256)\ntests/contract_testcases/solana/immutable_function_type.sol:7:62-63"]
 	internal_function_13 [label="function() internal pure returns (uint256)\nd.g\ntests/contract_testcases/solana/immutable_function_type.sol:7:62-63"]
 	internal_function_13 [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_15 [label="returns\nuint256 "]
 	returns_15 [label="returns\nuint256 "]
 	return_16 [label="return\ntests/contract_testcases/solana/immutable_function_type.sol:8:49-57"]
 	return_16 [label="return\ntests/contract_testcases/solana/immutable_function_type.sol:8:49-57"]
 	number_literal_17 [label="uint256 literal: 2\ntests/contract_testcases/solana/immutable_function_type.sol:8:56-57"]
 	number_literal_17 [label="uint256 literal: 2\ntests/contract_testcases/solana/immutable_function_type.sol:8:56-57"]
-	contract_18 [label="contract e\ntests/contract_testcases/solana/immutable_function_type.sol:10:1-11:12"]
+	contract_18 [label="contract e\ntests/contract_testcases/solana/immutable_function_type.sol:10:1-14:2"]
 	var_19 [label="variable f\nvisibility private\nimmutable\ntests/contract_testcases/solana/immutable_function_type.sol:12:5-73"]
 	var_19 [label="variable f\nvisibility private\nimmutable\ntests/contract_testcases/solana/immutable_function_type.sol:12:5-73"]
 	cast_20 [label="cast function() internal returns (uint256)\ntests/contract_testcases/solana/immutable_function_type.sol:12:72-73"]
 	cast_20 [label="cast function() internal returns (uint256)\ntests/contract_testcases/solana/immutable_function_type.sol:12:72-73"]
 	internal_function_21 [label="function() internal pure returns (uint256)\ne.g\ntests/contract_testcases/solana/immutable_function_type.sol:12:72-73"]
 	internal_function_21 [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_23 [label="returns\nuint256 "]
 	returns_23 [label="returns\nuint256 "]
 	return_24 [label="return\ntests/contract_testcases/solana/immutable_function_type.sol:13:49-57"]
 	return_24 [label="return\ntests/contract_testcases/solana/immutable_function_type.sol:13:49-57"]
 	number_literal_25 [label="uint256 literal: 2\ntests/contract_testcases/solana/immutable_function_type.sol:13:56-57"]
 	number_literal_25 [label="uint256 literal: 2\ntests/contract_testcases/solana/immutable_function_type.sol:13:56-57"]
-	contract_26 [label="contract b\ntests/contract_testcases/solana/immutable_function_type.sol:14:2-15:12"]
+	contract_26 [label="contract b\ntests/contract_testcases/solana/immutable_function_type.sol:14:2-18:2"]
 	var_27 [label="variable f\nvisibility private\ntests/contract_testcases/solana/immutable_function_type.sol:16:5-63"]
 	var_27 [label="variable f\nvisibility private\ntests/contract_testcases/solana/immutable_function_type.sol:16:5-63"]
 	cast_28 [label="cast function() internal returns (uint256)\ntests/contract_testcases/solana/immutable_function_type.sol:16:62-63"]
 	cast_28 [label="cast function() internal returns (uint256)\ntests/contract_testcases/solana/immutable_function_type.sol:16:62-63"]
 	internal_function_29 [label="function() internal pure returns (uint256)\nb.g\ntests/contract_testcases/solana/immutable_function_type.sol:16:62-63"]
 	internal_function_29 [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_31 [label="returns\nuint256 "]
 	returns_31 [label="returns\nuint256 "]
 	return_32 [label="return\ntests/contract_testcases/solana/immutable_function_type.sol:17:49-57"]
 	return_32 [label="return\ntests/contract_testcases/solana/immutable_function_type.sol:17:49-57"]
 	number_literal_33 [label="uint256 literal: 2\ntests/contract_testcases/solana/immutable_function_type.sol:17:56-57"]
 	number_literal_33 [label="uint256 literal: 2\ntests/contract_testcases/solana/immutable_function_type.sol:17:56-57"]
-	contract_34 [label="contract a\ntests/contract_testcases/solana/immutable_function_type.sol:19:1-20:12"]
+	contract_34 [label="contract a\ntests/contract_testcases/solana/immutable_function_type.sol:19: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"]
 	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"]
 	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-12"]
-	diagnostic_39 [label="found contract 'd'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:5:1-6:12"]
-	diagnostic_40 [label="found contract 'e'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:10:1-11:12"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:1:1-4:2"]
+	diagnostic_39 [label="found contract 'd'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:5:1-9:2"]
+	diagnostic_40 [label="found contract 'e'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:10:1-14:2"]
 	diagnostic_41 [label="duplicate 'immutable' attribute\nlevel Error\ntests/contract_testcases/solana/immutable_function_type.sol:12:48-57"]
 	diagnostic_41 [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"]
 	note [label="previous 'immutable' attribute\ntests/contract_testcases/solana/immutable_function_type.sol:12:58-67"]
-	diagnostic_43 [label="found contract 'b'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:14:2-15:12"]
-	diagnostic_44 [label="found contract 'a'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:19:1-20:12"]
+	diagnostic_43 [label="found contract 'b'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:14:2-18:2"]
+	diagnostic_44 [label="found contract 'a'\nlevel Debug\ntests/contract_testcases/solana/immutable_function_type.sol:19:1-27:2"]
 	diagnostic_45 [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 have visibility 'private'\nlevel Error\ntests/contract_testcases/solana/immutable_function_type.sol:22:37-44"]
 	diagnostic_46 [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 be 'immutable'\nlevel Error\ntests/contract_testcases/solana/immutable_function_type.sol:22:45-54"]
 	diagnostic_47 [label="function type cannot have visibility 'private'\nlevel Error\ntests/contract_testcases/solana/immutable_function_type.sol:25:22-29"]
 	diagnostic_47 [label="function type cannot have visibility 'private'\nlevel Error\ntests/contract_testcases/solana/immutable_function_type.sol:25:22-29"]

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

@@ -1,17 +1,17 @@
 strict digraph "tests/contract_testcases/solana/import_contracts_via_object.sol" {
 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"]
 	S [label="name:S\ntests/contract_testcases/solana/simple.sol:3:8-9\nfield name:f1 ty:int64\nfield name:f2 ty:bool"]
-	contract [label="contract C\ntests/contract_testcases/solana/import_contracts_via_object.sol:2:1-3:20"]
+	contract [label="contract C\ntests/contract_testcases/solana/import_contracts_via_object.sol:2:1-11:2"]
 	base [label="base A\ntests/contract_testcases/solana/import_contracts_via_object.sol:3:15-20"]
 	base [label="base A\ntests/contract_testcases/solana/import_contracts_via_object.sol:3:15-20"]
 	using [label="library L"]
 	using [label="library L"]
 	node_6 [label="constructor \ncontract: C\ntests/contract_testcases/solana/import_contracts_via_object.sol:5:2-23\nsignature ()\nvisibility public\nmutability nonpayable"]
 	node_6 [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"]
 	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_8 [label="contract A\ntests/contract_testcases/solana/simple.sol:1:1-12"]
-	contract_9 [label="contract L\ntests/contract_testcases/solana/simple.sol:1:14-2:11"]
-	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/import_contracts_via_object.sol:2:1-3:20"]
+	contract_8 [label="contract A\ntests/contract_testcases/solana/simple.sol:1:1-14"]
+	contract_9 [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"]
 	diagnostic_12 [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_12 [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_13 [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_13 [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_14 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:1-12"]
-	diagnostic_15 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:14-2:11"]
+	diagnostic_14 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:1-14"]
+	diagnostic_15 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:14-2:13"]
 	structs -> S
 	structs -> S
 	contracts -> contract
 	contracts -> contract
 	contract -> base [label="base"]
 	contract -> base [label="base"]

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

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/issues678.sol" {
 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"]
 	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"]
 	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-4:17"]
+	contract [label="contract Shares\ntests/contract_testcases/solana/issues678.sol:3:1-56:2"]
 	var [label="variable _shares\nvisibility private\ntests/contract_testcases/solana/issues678.sol:12:5-28"]
 	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"]
 	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"]
 	tags [label="notice: Create the shares object that gives the shares to every body"]
@@ -156,7 +156,7 @@ strict digraph "tests/contract_testcases/solana/issues678.sol" {
 	cast_157 [label="cast address\ntests/contract_testcases/solana/issues678.sol:53:42-55"]
 	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"]
 	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 [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-4:17"]
+	diagnostic_161 [label="found contract 'Shares'\nlevel Debug\ntests/contract_testcases/solana/issues678.sol:3:1-56:2"]
 	structs -> Share
 	structs -> Share
 	events -> Transfer
 	events -> Transfer
 	contracts -> contract
 	contracts -> contract

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/large_exponent.sol" {
 strict digraph "tests/contract_testcases/solana/large_exponent.sol" {
-	contract [label="contract C\ntests/contract_testcases/solana/large_exponent.sol:1:1-12"]
+	contract [label="contract C\ntests/contract_testcases/solana/large_exponent.sol:1:1-16:2"]
 	var [label="variable a\nvisibility internal\nconstant\ntests/contract_testcases/solana/large_exponent.sol:2:6-31"]
 	var [label="variable a\nvisibility internal\nconstant\ntests/contract_testcases/solana/large_exponent.sol:2:6-31"]
 	var_4 [label="variable b\nvisibility internal\nconstant\ntests/contract_testcases/solana/large_exponent.sol:3:6-34"]
 	var_4 [label="variable b\nvisibility internal\nconstant\ntests/contract_testcases/solana/large_exponent.sol:3:6-34"]
 	var_5 [label="variable c\nvisibility internal\nconstant\ntests/contract_testcases/solana/large_exponent.sol:4:6-33"]
 	var_5 [label="variable c\nvisibility internal\nconstant\ntests/contract_testcases/solana/large_exponent.sol:4:6-33"]
@@ -7,7 +7,7 @@ strict digraph "tests/contract_testcases/solana/large_exponent.sol" {
 	inline_assembly [label="inline assembly\ntests/contract_testcases/solana/large_exponent.sol:6:2-8:3"]
 	inline_assembly [label="inline assembly\ntests/contract_testcases/solana/large_exponent.sol:6:2-8:3"]
 	g [label="function g\ncontract: C\ntests/contract_testcases/solana/large_exponent.sol:10:6-26\nsignature g()\nvisibility private\nmutability nonpayable"]
 	g [label="function g\ncontract: C\ntests/contract_testcases/solana/large_exponent.sol:10:6-26\nsignature g()\nvisibility private\nmutability nonpayable"]
 	inline_assembly_9 [label="inline assembly\ntests/contract_testcases/solana/large_exponent.sol:11:2-13:3"]
 	inline_assembly_9 [label="inline assembly\ntests/contract_testcases/solana/large_exponent.sol:11:2-13:3"]
-	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/large_exponent.sol:1:1-12"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/large_exponent.sol:1:1-16:2"]
 	diagnostic_12 [label="literal 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 is too large to fit into type 'int256'\nlevel Error\ntests/contract_testcases/solana/large_exponent.sol:2:26-31"]
 	diagnostic_12 [label="literal 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 is too large to fit into type 'int256'\nlevel Error\ntests/contract_testcases/solana/large_exponent.sol:2:26-31"]
 	diagnostic_13 [label="exponent '-65535' too large\nlevel Error\ntests/contract_testcases/solana/large_exponent.sol:3:26-34"]
 	diagnostic_13 [label="exponent '-65535' too large\nlevel Error\ntests/contract_testcases/solana/large_exponent.sol:3:26-34"]
 	diagnostic_14 [label="exponent '65537' too large\nlevel Error\ntests/contract_testcases/solana/large_exponent.sol:4:26-33"]
 	diagnostic_14 [label="exponent '65537' too large\nlevel Error\ntests/contract_testcases/solana/large_exponent.sol:4:26-33"]

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/negative_exponent.sol" {
 strict digraph "tests/contract_testcases/solana/negative_exponent.sol" {
-	contract [label="contract c\ntests/contract_testcases/solana/negative_exponent.sol:1:1-12"]
+	contract [label="contract c\ntests/contract_testcases/solana/negative_exponent.sol:1:1-11:2"]
 	f [label="function f\ncontract: c\ntests/contract_testcases/solana/negative_exponent.sol:2:5-44\nsignature f()\nvisibility public\nmutability pure"]
 	f [label="function f\ncontract: c\ntests/contract_testcases/solana/negative_exponent.sol:2:5-44\nsignature f()\nvisibility public\nmutability pure"]
 	returns [label="returns\nuint256 "]
 	returns [label="returns\nuint256 "]
 	return [label="return\ntests/contract_testcases/solana/negative_exponent.sol:3:2-20"]
 	return [label="return\ntests/contract_testcases/solana/negative_exponent.sol:3:2-20"]
@@ -13,7 +13,7 @@ strict digraph "tests/contract_testcases/solana/negative_exponent.sol" {
 	number_literal [label="uint256 literal: 2\ntests/contract_testcases/solana/negative_exponent.sol:6:16-26"]
 	number_literal [label="uint256 literal: 2\ntests/contract_testcases/solana/negative_exponent.sol:6:16-26"]
 	h [label="function h\ncontract: c\ntests/contract_testcases/solana/negative_exponent.sol:8:5-44\nsignature h()\nvisibility public\nmutability pure"]
 	h [label="function h\ncontract: c\ntests/contract_testcases/solana/negative_exponent.sol:8:5-44\nsignature h()\nvisibility public\nmutability pure"]
 	returns_15 [label="returns\nuint256 "]
 	returns_15 [label="returns\nuint256 "]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/negative_exponent.sol:1:1-12"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/negative_exponent.sol:1:1-11:2"]
 	diagnostic_18 [label="ethereum currency unit used while not targetting ethereum\nlevel Warning\ntests/contract_testcases/solana/negative_exponent.sol:6:23-26"]
 	diagnostic_18 [label="ethereum currency unit used while not targetting ethereum\nlevel Warning\ntests/contract_testcases/solana/negative_exponent.sol:6:23-26"]
 	diagnostic_19 [label="conversion to uint256 from rational not allowed\nlevel Error\ntests/contract_testcases/solana/negative_exponent.sol:9:2-20"]
 	diagnostic_19 [label="conversion to uint256 from rational not allowed\nlevel Error\ntests/contract_testcases/solana/negative_exponent.sol:9:2-20"]
 	contracts -> contract
 	contracts -> contract

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

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/now.sol" {
 strict digraph "tests/contract_testcases/solana/now.sol" {
 	S [label="name:S\ncontract: c\ntests/contract_testcases/solana/now.sol:2:9-10\nfield name:f1 ty:int256"]
 	S [label="name:S\ncontract: c\ntests/contract_testcases/solana/now.sol:2:9-10\nfield name:f1 ty:int256"]
-	contract [label="contract c\ntests/contract_testcases/solana/now.sol:1:1-12"]
+	contract [label="contract c\ntests/contract_testcases/solana/now.sol:1:1-19:2"]
 	f [label="function f\ncontract: c\ntests/contract_testcases/solana/now.sol:3:2-38\nsignature f((int256))\nvisibility public\nmutability nonpayable"]
 	f [label="function f\ncontract: c\ntests/contract_testcases/solana/now.sol:3:2-38\nsignature f((int256))\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\nstruct c.S s"]
 	parameters [label="parameters\nstruct c.S s"]
 	returns [label="returns\nint256 "]
 	returns [label="returns\nint256 "]
@@ -15,7 +15,7 @@ strict digraph "tests/contract_testcases/solana/now.sol" {
 	number_literal [label="int256 literal: 5\ntests/contract_testcases/solana/now.sol:16:13-14"]
 	number_literal [label="int256 literal: 5\ntests/contract_testcases/solana/now.sol:16:13-14"]
 	return [label="return\ntests/contract_testcases/solana/now.sol:17:3-13"]
 	return [label="return\ntests/contract_testcases/solana/now.sol:17:3-13"]
 	variable [label="variable: now\nint256\ntests/contract_testcases/solana/now.sol:17:10-13"]
 	variable [label="variable: now\nint256\ntests/contract_testcases/solana/now.sol:17:10-13"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/now.sol:1:1-12"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/now.sol:1:1-19:2"]
 	diagnostic_20 [label="'now' not found\nlevel Error\ntests/contract_testcases/solana/now.sol:4:10-13"]
 	diagnostic_20 [label="'now' not found\nlevel Error\ntests/contract_testcases/solana/now.sol:4:10-13"]
 	diagnostic_21 [label="unknown function or type 'now'\nlevel Error\ntests/contract_testcases/solana/now.sol:7:3-6"]
 	diagnostic_21 [label="unknown function or type 'now'\nlevel Error\ntests/contract_testcases/solana/now.sol:7:3-6"]
 	diagnostic_22 [label="'now' not found. 'now' was an alias for 'block.timestamp' in older versions of the Solidity language. Please use 'block.timestamp' instead.\nlevel Error\ntests/contract_testcases/solana/now.sol:10:10-13"]
 	diagnostic_22 [label="'now' not found. 'now' was an alias for 'block.timestamp' in older versions of the Solidity language. Please use 'block.timestamp' instead.\nlevel Error\ntests/contract_testcases/solana/now.sol:10:10-13"]

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

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/override.sol" {
 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"]
 	S [label="name:S\ntests/contract_testcases/solana/simple.sol:3:8-9\nfield name:f1 ty:int64\nfield name:f2 ty:bool"]
-	contract [label="contract C\ntests/contract_testcases/solana/override.sol:4:1-5:20"]
+	contract [label="contract C\ntests/contract_testcases/solana/override.sol:4:1-7:2"]
 	base [label="base A\ntests/contract_testcases/solana/override.sol:5:15-20"]
 	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"]
 	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"]
 	meh [label="function meh\ncontract: C\ntests/contract_testcases/solana/override.sol:6:29-32\nsignature meh()\nvisibility public\nmutability view\noverride A"]
@@ -8,13 +8,13 @@ strict digraph "tests/contract_testcases/solana/override.sol" {
 	return [label="return\nimplicit"]
 	return [label="return\nimplicit"]
 	storage_load [label="storage load int256\nimplicit"]
 	storage_load [label="storage load int256\nimplicit"]
 	storage_var [label="storage variable\nC.meh\nint256 storage\nimplicit"]
 	storage_var [label="storage variable\nC.meh\nint256 storage\nimplicit"]
-	contract_11 [label="contract A\ntests/contract_testcases/solana/override.sol:8:1-9:13"]
+	contract_11 [label="contract A\ntests/contract_testcases/solana/override.sol:8: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"]
 	foo [label="function foo\ncontract: A\ntests/contract_testcases/solana/override.sol:10:5-43\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
 	returns_13 [label="returns\nuint256 "]
 	returns_13 [label="returns\nuint256 "]
-	contract_14 [label="contract B\ntests/contract_testcases/solana/override.sol:11:2-12:13"]
+	contract_14 [label="contract B\ntests/contract_testcases/solana/override.sol:11:2-14:2"]
 	foo_15 [label="function foo\ncontract: B\ntests/contract_testcases/solana/override.sol:13:5-43\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
 	foo_15 [label="function foo\ncontract: B\ntests/contract_testcases/solana/override.sol:13:5-43\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
 	returns_16 [label="returns\nuint256 "]
 	returns_16 [label="returns\nuint256 "]
-	contract_17 [label="contract X\ntests/contract_testcases/solana/override.sol:14:2-15:19"]
+	contract_17 [label="contract X\ntests/contract_testcases/solana/override.sol:14:2-17:2"]
 	base_18 [label="base A\ntests/contract_testcases/solana/override.sol:15:15-16"]
 	base_18 [label="base A\ntests/contract_testcases/solana/override.sol:15:15-16"]
 	base_19 [label="base B\ntests/contract_testcases/solana/override.sol:15:18-19"]
 	base_19 [label="base B\ntests/contract_testcases/solana/override.sol:15:18-19"]
 	var_20 [label="variable foo\nvisibility public\ntests/contract_testcases/solana/override.sol:16:9-39"]
 	var_20 [label="variable foo\nvisibility public\ntests/contract_testcases/solana/override.sol:16:9-39"]
@@ -23,19 +23,19 @@ strict digraph "tests/contract_testcases/solana/override.sol" {
 	return_23 [label="return\nimplicit"]
 	return_23 [label="return\nimplicit"]
 	storage_load_24 [label="storage load uint256\nimplicit"]
 	storage_load_24 [label="storage load uint256\nimplicit"]
 	storage_var_25 [label="storage variable\nX.foo\nuint256 storage\nimplicit"]
 	storage_var_25 [label="storage variable\nX.foo\nuint256 storage\nimplicit"]
-	contract_26 [label="contract Y\ntests/contract_testcases/solana/override.sol:17:2-18:16"]
+	contract_26 [label="contract Y\ntests/contract_testcases/solana/override.sol:17:2-19:2"]
 	base_27 [label="base X\ntests/contract_testcases/solana/override.sol:18:15-16"]
 	base_27 [label="base X\ntests/contract_testcases/solana/override.sol:18:15-16"]
-	contract_28 [label="contract A2\ntests/contract_testcases/solana/override.sol:20:1-21:22"]
+	contract_28 [label="contract A2\ntests/contract_testcases/solana/override.sol:20:1-23:2"]
 	foo_29 [label="function foo\ncontract: A2\ntests/contract_testcases/solana/override.sol:22:5-51\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
 	foo_29 [label="function foo\ncontract: A2\ntests/contract_testcases/solana/override.sol:22:5-51\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
 	returns_30 [label="returns\nuint256 "]
 	returns_30 [label="returns\nuint256 "]
 	return_31 [label="return\ntests/contract_testcases/solana/override.sol:22:54-62"]
 	return_31 [label="return\ntests/contract_testcases/solana/override.sol:22:54-62"]
 	number_literal [label="uint256 literal: 1\ntests/contract_testcases/solana/override.sol:22:61-62"]
 	number_literal [label="uint256 literal: 1\ntests/contract_testcases/solana/override.sol:22:61-62"]
-	contract_33 [label="contract B2\ntests/contract_testcases/solana/override.sol:23:2-24:22"]
+	contract_33 [label="contract B2\ntests/contract_testcases/solana/override.sol:23:2-26:2"]
 	foo_34 [label="function foo\ncontract: B2\ntests/contract_testcases/solana/override.sol:25:5-51\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
 	foo_34 [label="function foo\ncontract: B2\ntests/contract_testcases/solana/override.sol:25:5-51\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
 	returns_35 [label="returns\nuint256 "]
 	returns_35 [label="returns\nuint256 "]
 	return_36 [label="return\ntests/contract_testcases/solana/override.sol:25:54-62"]
 	return_36 [label="return\ntests/contract_testcases/solana/override.sol:25:54-62"]
 	number_literal_37 [label="uint256 literal: 2\ntests/contract_testcases/solana/override.sol:25:61-62"]
 	number_literal_37 [label="uint256 literal: 2\ntests/contract_testcases/solana/override.sol:25:61-62"]
-	contract_38 [label="contract X2\ntests/contract_testcases/solana/override.sol:26:2-27:22"]
+	contract_38 [label="contract X2\ntests/contract_testcases/solana/override.sol:26:2-29:2"]
 	base_39 [label="base A2\ntests/contract_testcases/solana/override.sol:27:16-18"]
 	base_39 [label="base A2\ntests/contract_testcases/solana/override.sol:27:16-18"]
 	base_40 [label="base B2\ntests/contract_testcases/solana/override.sol:27:20-22"]
 	base_40 [label="base B2\ntests/contract_testcases/solana/override.sol:27:20-22"]
 	var_41 [label="variable foo\nvisibility public\ntests/contract_testcases/solana/override.sol:28:9-37"]
 	var_41 [label="variable foo\nvisibility public\ntests/contract_testcases/solana/override.sol:28:9-37"]
@@ -44,24 +44,24 @@ strict digraph "tests/contract_testcases/solana/override.sol" {
 	return_44 [label="return\nimplicit"]
 	return_44 [label="return\nimplicit"]
 	storage_load_45 [label="storage load uint256\nimplicit"]
 	storage_load_45 [label="storage load uint256\nimplicit"]
 	storage_var_46 [label="storage variable\nX2.foo\nuint256 storage\nimplicit"]
 	storage_var_46 [label="storage variable\nX2.foo\nuint256 storage\nimplicit"]
-	contract_47 [label="contract Y2\ntests/contract_testcases/solana/override.sol:29:2-30:18"]
+	contract_47 [label="contract Y2\ntests/contract_testcases/solana/override.sol:29:2-31:2"]
 	base_48 [label="base X2\ntests/contract_testcases/solana/override.sol:30:16-18"]
 	base_48 [label="base X2\ntests/contract_testcases/solana/override.sol:30:16-18"]
-	contract_49 [label="contract A\ntests/contract_testcases/solana/simple.sol:1:1-12"]
-	contract_50 [label="contract L\ntests/contract_testcases/solana/simple.sol:1:14-2:11"]
+	contract_49 [label="contract A\ntests/contract_testcases/solana/simple.sol:1:1-14"]
+	contract_50 [label="contract L\ntests/contract_testcases/solana/simple.sol:1:14-2:13"]
 	diagnostic [label="global variable has no bases contracts to override\nlevel Error\ntests/contract_testcases/solana/override.sol:3:14-22"]
 	diagnostic [label="global variable has no bases contracts to override\nlevel Error\ntests/contract_testcases/solana/override.sol:3:14-22"]
-	diagnostic_53 [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/override.sol:4:1-5:20"]
+	diagnostic_53 [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/override.sol:4:1-7:2"]
 	diagnostic_54 [label="'meh' does not override anything\nlevel Error\ntests/contract_testcases/solana/override.sol:6:29-32"]
 	diagnostic_54 [label="'meh' does not override anything\nlevel Error\ntests/contract_testcases/solana/override.sol:6:29-32"]
-	diagnostic_55 [label="found interface 'A'\nlevel Debug\ntests/contract_testcases/solana/override.sol:8:1-9:13"]
-	diagnostic_56 [label="found interface 'B'\nlevel Debug\ntests/contract_testcases/solana/override.sol:11:2-12:13"]
-	diagnostic_57 [label="found contract 'X'\nlevel Debug\ntests/contract_testcases/solana/override.sol:14:2-15:19"]
-	diagnostic_58 [label="found contract 'Y'\nlevel Debug\ntests/contract_testcases/solana/override.sol:17:2-18:16"]
-	diagnostic_59 [label="found abstract contract 'A2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:20:1-21:22"]
-	diagnostic_60 [label="found abstract contract 'B2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:23:2-24:22"]
-	diagnostic_61 [label="found contract 'X2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:26:2-27:22"]
+	diagnostic_55 [label="found interface 'A'\nlevel Debug\ntests/contract_testcases/solana/override.sol:8:1-11:2"]
+	diagnostic_56 [label="found interface 'B'\nlevel Debug\ntests/contract_testcases/solana/override.sol:11:2-14:2"]
+	diagnostic_57 [label="found contract 'X'\nlevel Debug\ntests/contract_testcases/solana/override.sol:14:2-17:2"]
+	diagnostic_58 [label="found contract 'Y'\nlevel Debug\ntests/contract_testcases/solana/override.sol:17:2-19:2"]
+	diagnostic_59 [label="found abstract contract 'A2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:20:1-23:2"]
+	diagnostic_60 [label="found abstract contract 'B2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:23:2-26:2"]
+	diagnostic_61 [label="found contract 'X2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:26:2-29:2"]
 	diagnostic_62 [label="function 'foo' missing overrides 'B2', specify 'override(B2,A2)'\nlevel Error\ntests/contract_testcases/solana/override.sol:28:21-33"]
 	diagnostic_62 [label="function 'foo' missing overrides 'B2', specify 'override(B2,A2)'\nlevel Error\ntests/contract_testcases/solana/override.sol:28:21-33"]
-	diagnostic_63 [label="found contract 'Y2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:29:2-30:18"]
-	diagnostic_64 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:1-12"]
-	diagnostic_65 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:14-2:11"]
+	diagnostic_63 [label="found contract 'Y2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:29:2-31:2"]
+	diagnostic_64 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:1-14"]
+	diagnostic_65 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:14-2:13"]
 	structs -> S
 	structs -> S
 	contracts -> contract
 	contracts -> contract
 	contract -> base [label="base"]
 	contract -> base [label="base"]

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/power.sol" {
 strict digraph "tests/contract_testcases/solana/power.sol" {
-	contract [label="contract AstExample\ntests/contract_testcases/solana/power.sol:2:1-3:21"]
+	contract [label="contract AstExample\ntests/contract_testcases/solana/power.sol:2:1-7:2"]
 	node_3 [label="constructor \ncontract: AstExample\ntests/contract_testcases/solana/power.sol:4:5-19\nsignature ()\nvisibility public\nmutability nonpayable"]
 	node_3 [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"]
 	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"]
 	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_8 [label="uint256 literal: 2\ntests/contract_testcases/solana/power.sol:5:14-15"]
 	number_literal_8 [label="uint256 literal: 2\ntests/contract_testcases/solana/power.sol:5:14-15"]
 	number_literal_9 [label="uint256 literal: 3\ntests/contract_testcases/solana/power.sol:5:19-20"]
 	number_literal_9 [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 [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/power.sol:1:1-24"]
-	diagnostic_12 [label="found contract 'AstExample'\nlevel Debug\ntests/contract_testcases/solana/power.sol:2:1-3:21"]
+	diagnostic_12 [label="found contract 'AstExample'\nlevel Debug\ntests/contract_testcases/solana/power.sol:2:1-7:2"]
 	contracts -> contract
 	contracts -> contract
 	contract -> node_3 [label="constructor"]
 	contract -> node_3 [label="constructor"]
 	node_3 -> expr [label="body"]
 	node_3 -> expr [label="body"]

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

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/rational/rational.sol" {
 strict digraph "tests/contract_testcases/solana/rational/rational.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/rational/rational.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/rational/rational.sol:2:9-7:10"]
 	test [label="function test\ncontract: foo\ntests/contract_testcases/solana/rational/rational.sol:3:13-50\nsignature test()\nvisibility public\nmutability nonpayable"]
 	test [label="function test\ncontract: foo\ntests/contract_testcases/solana/rational/rational.sol:3:13-50\nsignature test()\nvisibility public\nmutability nonpayable"]
 	returns [label="returns\nuint256 "]
 	returns [label="returns\nuint256 "]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/rational/rational.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/rational/rational.sol:2:9-7:10"]
 	diagnostic_7 [label="conversion to uint256 from rational not allowed\nlevel Error\ntests/contract_testcases/solana/rational/rational.sol:4:26-29"]
 	diagnostic_7 [label="conversion to uint256 from rational not allowed\nlevel Error\ntests/contract_testcases/solana/rational/rational.sol:4:26-29"]
 	contracts -> contract
 	contracts -> contract
 	contract -> test [label="function"]
 	contract -> test [label="function"]

+ 2 - 2
tests/contract_testcases/solana/returns/return_err.dot

@@ -1,9 +1,9 @@
 strict digraph "tests/contract_testcases/solana/returns/return_err.sol" {
 strict digraph "tests/contract_testcases/solana/returns/return_err.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/returns/return_err.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/returns/return_err.sol:2:9-8:10"]
 	var [label="variable val\nvisibility private\ntests/contract_testcases/solana/returns/return_err.sol:3:13-33"]
 	var [label="variable val\nvisibility private\ntests/contract_testcases/solana/returns/return_err.sol:3:13-33"]
 	number_literal [label="uint256 literal: 0\ntests/contract_testcases/solana/returns/return_err.sol:3:32-33"]
 	number_literal [label="uint256 literal: 0\ntests/contract_testcases/solana/returns/return_err.sol:3:32-33"]
 	get [label="function get\ncontract: foo\ntests/contract_testcases/solana/returns/return_err.sol:5:13-34\nsignature get()\nvisibility public\nmutability nonpayable"]
 	get [label="function get\ncontract: foo\ntests/contract_testcases/solana/returns/return_err.sol:5:13-34\nsignature get()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/returns/return_err.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/returns/return_err.sol:2:9-8:10"]
 	diagnostic_8 [label="function has no return values\nlevel Error\ntests/contract_testcases/solana/returns/return_err.sol:6:17-27"]
 	diagnostic_8 [label="function has no return values\nlevel Error\ntests/contract_testcases/solana/returns/return_err.sol:6:17-27"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]

+ 2 - 2
tests/contract_testcases/solana/returns/return_err_01.dot

@@ -1,10 +1,10 @@
 strict digraph "tests/contract_testcases/solana/returns/return_err_01.sol" {
 strict digraph "tests/contract_testcases/solana/returns/return_err_01.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/returns/return_err_01.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/returns/return_err_01.sol:2:9-8:10"]
 	var [label="variable val\nvisibility private\ntests/contract_testcases/solana/returns/return_err_01.sol:3:13-33"]
 	var [label="variable val\nvisibility private\ntests/contract_testcases/solana/returns/return_err_01.sol:3:13-33"]
 	number_literal [label="uint256 literal: 0\ntests/contract_testcases/solana/returns/return_err_01.sol:3:32-33"]
 	number_literal [label="uint256 literal: 0\ntests/contract_testcases/solana/returns/return_err_01.sol:3:32-33"]
 	get [label="function get\ncontract: foo\ntests/contract_testcases/solana/returns/return_err_01.sol:5:13-55\nsignature get()\nvisibility public\nmutability nonpayable"]
 	get [label="function get\ncontract: foo\ntests/contract_testcases/solana/returns/return_err_01.sol:5:13-55\nsignature get()\nvisibility public\nmutability nonpayable"]
 	returns [label="returns\nuint256 \nuint256 "]
 	returns [label="returns\nuint256 \nuint256 "]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/returns/return_err_01.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/returns/return_err_01.sol:2:9-8:10"]
 	diagnostic_9 [label="incorrect number of return values, expected 2 but got 3\nlevel Error\ntests/contract_testcases/solana/returns/return_err_01.sol:6:17-39"]
 	diagnostic_9 [label="incorrect number of return values, expected 2 but got 3\nlevel Error\ntests/contract_testcases/solana/returns/return_err_01.sol:6:17-39"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]

+ 2 - 2
tests/contract_testcases/solana/returns/return_err_02.dot

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/returns/return_err_02.sol" {
 strict digraph "tests/contract_testcases/solana/returns/return_err_02.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/returns/return_err_02.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/returns/return_err_02.sol:2:9-11:10"]
 	var [label="variable val\nvisibility private\ntests/contract_testcases/solana/returns/return_err_02.sol:3:13-33"]
 	var [label="variable val\nvisibility private\ntests/contract_testcases/solana/returns/return_err_02.sol:3:13-33"]
 	number_literal [label="uint256 literal: 0\ntests/contract_testcases/solana/returns/return_err_02.sol:3:32-33"]
 	number_literal [label="uint256 literal: 0\ntests/contract_testcases/solana/returns/return_err_02.sol:3:32-33"]
 	f [label="function f\ncontract: foo\ntests/contract_testcases/solana/returns/return_err_02.sol:4:13-59\nsignature f()\nvisibility public\nmutability nonpayable"]
 	f [label="function f\ncontract: foo\ntests/contract_testcases/solana/returns/return_err_02.sol:4:13-59\nsignature f()\nvisibility public\nmutability nonpayable"]
@@ -14,7 +14,7 @@ strict digraph "tests/contract_testcases/solana/returns/return_err_02.sol" {
 	storage_var_14 [label="storage variable\nfoo.val\nuint256 storage\ntests/contract_testcases/solana/returns/return_err_02.sol:5:35-38"]
 	storage_var_14 [label="storage variable\nfoo.val\nuint256 storage\ntests/contract_testcases/solana/returns/return_err_02.sol:5:35-38"]
 	get [label="function get\ncontract: foo\ntests/contract_testcases/solana/returns/return_err_02.sol:8:13-55\nsignature get()\nvisibility public\nmutability nonpayable"]
 	get [label="function get\ncontract: foo\ntests/contract_testcases/solana/returns/return_err_02.sol:8:13-55\nsignature get()\nvisibility public\nmutability nonpayable"]
 	returns_16 [label="returns\nuint256 \nuint256 "]
 	returns_16 [label="returns\nuint256 \nuint256 "]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/returns/return_err_02.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/returns/return_err_02.sol:2:9-11:10"]
 	diagnostic_19 [label="incorrect number of return values, expected 2 but got 3\nlevel Error\ntests/contract_testcases/solana/returns/return_err_02.sol:9:17-27"]
 	diagnostic_19 [label="incorrect number of return values, expected 2 but got 3\nlevel Error\ntests/contract_testcases/solana/returns/return_err_02.sol:9:17-27"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]

+ 2 - 2
tests/contract_testcases/solana/returns/return_err_03.dot

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/returns/return_err_03.sol" {
 strict digraph "tests/contract_testcases/solana/returns/return_err_03.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/returns/return_err_03.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/returns/return_err_03.sol:2:9-11:10"]
 	var [label="variable val\nvisibility private\ntests/contract_testcases/solana/returns/return_err_03.sol:3:13-33"]
 	var [label="variable val\nvisibility private\ntests/contract_testcases/solana/returns/return_err_03.sol:3:13-33"]
 	number_literal [label="uint256 literal: 0\ntests/contract_testcases/solana/returns/return_err_03.sol:3:32-33"]
 	number_literal [label="uint256 literal: 0\ntests/contract_testcases/solana/returns/return_err_03.sol:3:32-33"]
 	f [label="function f\ncontract: foo\ntests/contract_testcases/solana/returns/return_err_03.sol:4:13-59\nsignature f()\nvisibility public\nmutability nonpayable"]
 	f [label="function f\ncontract: foo\ntests/contract_testcases/solana/returns/return_err_03.sol:4:13-59\nsignature f()\nvisibility public\nmutability nonpayable"]
@@ -13,7 +13,7 @@ strict digraph "tests/contract_testcases/solana/returns/return_err_03.sol" {
 	storage_load_13 [label="storage load uint256\ntests/contract_testcases/solana/returns/return_err_03.sol:5:17-39"]
 	storage_load_13 [label="storage load uint256\ntests/contract_testcases/solana/returns/return_err_03.sol:5:17-39"]
 	storage_var_14 [label="storage variable\nfoo.val\nuint256 storage\ntests/contract_testcases/solana/returns/return_err_03.sol:5:35-38"]
 	storage_var_14 [label="storage variable\nfoo.val\nuint256 storage\ntests/contract_testcases/solana/returns/return_err_03.sol:5:35-38"]
 	get [label="function get\ncontract: foo\ntests/contract_testcases/solana/returns/return_err_03.sol:8:13-34\nsignature get()\nvisibility public\nmutability nonpayable"]
 	get [label="function get\ncontract: foo\ntests/contract_testcases/solana/returns/return_err_03.sol:8:13-34\nsignature get()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/returns/return_err_03.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/returns/return_err_03.sol:2:9-11:10"]
 	diagnostic_18 [label="function has no return values\nlevel Error\ntests/contract_testcases/solana/returns/return_err_03.sol:9:17-27"]
 	diagnostic_18 [label="function has no return values\nlevel Error\ntests/contract_testcases/solana/returns/return_err_03.sol:9:17-27"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]

+ 2 - 2
tests/contract_testcases/solana/returns/return_err_04.dot

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/returns/return_err_04.sol" {
 strict digraph "tests/contract_testcases/solana/returns/return_err_04.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/returns/return_err_04.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/returns/return_err_04.sol:2:9-7:10"]
 	f [label="function f\ncontract: foo\ntests/contract_testcases/solana/returns/return_err_04.sol:3:13-59\nsignature f()\nvisibility public\nmutability nonpayable"]
 	f [label="function f\ncontract: foo\ntests/contract_testcases/solana/returns/return_err_04.sol:3:13-59\nsignature f()\nvisibility public\nmutability nonpayable"]
 	returns [label="returns\nuint256 \nuint256 \nuint256 "]
 	returns [label="returns\nuint256 \nuint256 \nuint256 "]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/returns/return_err_04.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/returns/return_err_04.sol:2:9-7:10"]
 	diagnostic_7 [label="incorrect number of return values, expected 3 but got 1\nlevel Error\ntests/contract_testcases/solana/returns/return_err_04.sol:5:17-31"]
 	diagnostic_7 [label="incorrect number of return values, expected 3 but got 1\nlevel Error\ntests/contract_testcases/solana/returns/return_err_04.sol:5:17-31"]
 	contracts -> contract
 	contracts -> contract
 	contract -> f [label="function"]
 	contract -> f [label="function"]

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

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/shift_struct_member.sol" {
 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"]
 	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"]
 	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:71-2:20"]
+	contract [label="contract FixedPoint\ntests/contract_testcases/solana/shift_struct_member.sol:1:71-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"]
 	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"]
 	parameters [label="parameters\nstruct FixedPoint.uq112x112 self"]
 	returns [label="returns\nuint112 "]
 	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"]
 	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"]
 	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"]
 	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:71-2:20"]
+	diagnostic [label="found library 'FixedPoint'\nlevel Debug\ntests/contract_testcases/solana/shift_struct_member.sol:1:71-21:2"]
 	structs -> uq144x112
 	structs -> uq144x112
 	structs -> uq112x112
 	structs -> uq112x112
 	contracts -> contract
 	contracts -> contract

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

@@ -11,10 +11,10 @@ strict digraph "tests/contract_testcases/solana/simple.sol" {
 	structmember_11 [label="struct member #0 int64\ntests/contract_testcases/solana/simple.sol:7:28-30"]
 	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"]
 	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"]
 	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-12"]
-	contract_16 [label="contract L\ntests/contract_testcases/solana/simple.sol:1:14-2:11"]
-	diagnostic [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:1-12"]
-	diagnostic_19 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:14-2:11"]
+	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"]
+	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"]
 	structs -> S
 	structs -> S
 	free_functions -> inc [label="function"]
 	free_functions -> inc [label="function"]
 	inc -> parameters [label="parameters"]
 	inc -> parameters [label="parameters"]

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/tags.sol" {
 strict digraph "tests/contract_testcases/solana/tags.sol" {
-	contract [label="contract C\ntests/contract_testcases/solana/tags.sol:1:1-12"]
+	contract [label="contract C\ntests/contract_testcases/solana/tags.sol:1:1-31:2"]
 	f1 [label="function f1\ncontract: C\ntests/contract_testcases/solana/tags.sol:6:5-53\nsignature f1()\nvisibility public\nmutability pure"]
 	f1 [label="function f1\ncontract: C\ntests/contract_testcases/solana/tags.sol:6:5-53\nsignature f1()\nvisibility public\nmutability pure"]
 	tags [label="return: bla\nreturn: bla"]
 	tags [label="return: bla\nreturn: bla"]
 	returns [label="returns\nint256 c\nint256 d"]
 	returns [label="returns\nint256 c\nint256 d"]
@@ -34,7 +34,7 @@ strict digraph "tests/contract_testcases/solana/tags.sol" {
 	list_34 [label="list\ntests/contract_testcases/solana/tags.sol:30:54-67"]
 	list_34 [label="list\ntests/contract_testcases/solana/tags.sol:30:54-67"]
 	number_literal_35 [label="int256 literal: 1\ntests/contract_testcases/solana/tags.sol:30:62-63"]
 	number_literal_35 [label="int256 literal: 1\ntests/contract_testcases/solana/tags.sol:30:62-63"]
 	number_literal_36 [label="int256 literal: 2\ntests/contract_testcases/solana/tags.sol:30:65-66"]
 	number_literal_36 [label="int256 literal: 2\ntests/contract_testcases/solana/tags.sol:30:65-66"]
-	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/tags.sol:1:1-12"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/tags.sol:1:1-31:2"]
 	diagnostic_39 [label="tag '@return' no matching return value 'feh'\nlevel Error\ntests/contract_testcases/solana/tags.sol:21:15-18"]
 	diagnostic_39 [label="tag '@return' no matching return value 'feh'\nlevel Error\ntests/contract_testcases/solana/tags.sol:21:15-18"]
 	diagnostic_40 [label="tag '@return' no matching return value 'foo'\nlevel Error\ntests/contract_testcases/solana/tags.sol:22:15-18"]
 	diagnostic_40 [label="tag '@return' no matching return value 'foo'\nlevel Error\ntests/contract_testcases/solana/tags.sol:22:15-18"]
 	diagnostic_41 [label="tag '@return' no matching return value 'foo'\nlevel Error\ntests/contract_testcases/solana/tags.sol:28:15-18"]
 	diagnostic_41 [label="tag '@return' no matching return value 'foo'\nlevel Error\ntests/contract_testcases/solana/tags.sol:28:15-18"]

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

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/type_called_error.sol" {
 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"]
 	error [label="name:error\ntests/contract_testcases/solana/type_called_error.sol:1:8-13\nfield name:f1 ty:int256"]
-	contract [label="contract c\ntests/contract_testcases/solana/type_called_error.sol:8:1-9:12"]
+	contract [label="contract c\ntests/contract_testcases/solana/type_called_error.sol:8:1-16:2"]
 	var [label="variable v1\nvisibility public\ntests/contract_testcases/solana/type_called_error.sol:10:2-17"]
 	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"]
 	v1 [label="function v1\ncontract: c\ntests/contract_testcases/solana/type_called_error.sol:10:15-17\nsignature v1()\nvisibility public\nmutability view"]
 	returns [label="returns\nstruct error "]
 	returns [label="returns\nstruct error "]
@@ -16,7 +16,7 @@ strict digraph "tests/contract_testcases/solana/type_called_error.sol" {
 	variable [label="variable: e\nstruct error\ntests/contract_testcases/solana/type_called_error.sol:13:3-4"]
 	variable [label="variable: e\nstruct error\ntests/contract_testcases/solana/type_called_error.sol:13:3-4"]
 	return_17 [label="return\ntests/contract_testcases/solana/type_called_error.sol:14:3-11"]
 	return_17 [label="return\ntests/contract_testcases/solana/type_called_error.sol:14:3-11"]
 	variable_18 [label="variable: e\nstruct error\ntests/contract_testcases/solana/type_called_error.sol:14:10-11"]
 	variable_18 [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-9:12"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/type_called_error.sol:8:1-16:2"]
 	structs -> error
 	structs -> error
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]

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

@@ -1,10 +1,10 @@
 strict digraph "tests/contract_testcases/solana/type_decl.sol" {
 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:1:1-2:29"]
 	Binary [label="name:Binary ty:bool\ncontract: x\ntests/contract_testcases/solana/type_decl.sol:5:2-21"]
 	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-4:12"]
+	contract [label="contract x\ntests/contract_testcases/solana/type_decl.sol:3: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"]
 	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 "]
 	parameters [label="parameters\nusertype Addr \nusertype x.Binary "]
-	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/type_decl.sol:3:1-4:12"]
+	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/type_decl.sol:3:1-8:2"]
 	diagnostic_10 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/type_decl.sol:7:2-33"]
 	diagnostic_10 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/type_decl.sol:7:2-33"]
 	types -> Addr
 	types -> Addr
 	types -> Binary
 	types -> Binary

+ 1 - 1
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 [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"]
 	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"]
 	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-3:12"]
+	contract [label="contract c\ntests/contract_testcases/solana/type_decl_broken.sol:2:1-19:2"]
 	diagnostic [label="’int256[2]’ is not an elementary value type\nlevel Error\ntests/contract_testcases/solana/type_decl_broken.sol:5:14-20"]
 	diagnostic [label="’int256[2]’ is not an elementary value type\nlevel Error\ntests/contract_testcases/solana/type_decl_broken.sol:5:14-20"]
 	diagnostic_11 [label="foo is already defined as a struct\nlevel Error\ntests/contract_testcases/solana/type_decl_broken.sol:6:7-10"]
 	diagnostic_11 [label="foo is already defined as a struct\nlevel Error\ntests/contract_testcases/solana/type_decl_broken.sol:6:7-10"]
 	note [label="location of previous definition\ntests/contract_testcases/solana/type_decl_broken.sol:4:9-12"]
 	note [label="location of previous definition\ntests/contract_testcases/solana/type_decl_broken.sol:4:9-12"]

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

@@ -1,13 +1,13 @@
 strict digraph "tests/contract_testcases/solana/type_decl_broken_more.sol" {
 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:1:1-2:29"]
 	Binary [label="name:Binary ty:bool\ncontract: x\ntests/contract_testcases/solana/type_decl.sol:5:2-21"]
 	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-4:12"]
+	contract [label="contract x\ntests/contract_testcases/solana/type_decl.sol:3: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"]
 	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 "]
 	parameters [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 [label="'Addr' is an user type\nlevel Error\ntests/contract_testcases/solana/type_decl_broken_more.sol:3:14-18"]
 	diagnostic_10 [label="declaration of 'Addr' shadows type\nlevel Warning\ntests/contract_testcases/solana/type_decl_broken_more.sol:5:18-22"]
 	diagnostic_10 [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"]
 	note [label="previous declaration of type\ntests/contract_testcases/solana/type_decl.sol:2:6-10"]
-	diagnostic_12 [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/type_decl.sol:3:1-4:12"]
+	diagnostic_12 [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/type_decl.sol:3:1-8:2"]
 	diagnostic_13 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/type_decl.sol:7:2-33"]
 	diagnostic_13 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/type_decl.sol:7:2-33"]
 	types -> Addr
 	types -> Addr
 	types -> Binary
 	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" {
 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"]
 	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-3:12"]
+	contract [label="contract c\ntests/contract_testcases/solana/type_decl_broken_used_as_event.sol:2: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"]
 	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-3:12"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/type_decl_broken_used_as_event.sol:2:1-7:2"]
 	diagnostic_8 [label="'X' is an user type\nlevel Error\ntests/contract_testcases/solana/type_decl_broken_used_as_event.sol:5:8-9"]
 	diagnostic_8 [label="'X' is an user type\nlevel Error\ntests/contract_testcases/solana/type_decl_broken_used_as_event.sol:5:8-9"]
 	types -> X
 	types -> X
 	contracts -> contract
 	contracts -> contract

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

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/solana/type_decl_import.sol" {
 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:1:1-2:29"]
 	Binary [label="name:Binary ty:bool\ncontract: x\ntests/contract_testcases/solana/type_decl.sol:5:2-21"]
 	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-3:12"]
+	contract [label="contract d\ntests/contract_testcases/solana/type_decl_import.sol:2: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"]
 	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"]
 	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"]
 	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 [label="variable: c\ncontract x\ntests/contract_testcases/solana/type_decl_import.sol:8:3-4"]
 	variable_18 [label="variable: a\nusertype Addr\ntests/contract_testcases/solana/type_decl_import.sol:8:7-8"]
 	variable_18 [label="variable: a\nusertype Addr\ntests/contract_testcases/solana/type_decl_import.sol:8:7-8"]
 	variable_19 [label="variable: b\nusertype x.Binary\ntests/contract_testcases/solana/type_decl_import.sol:8:10-11"]
 	variable_19 [label="variable: b\nusertype x.Binary\ntests/contract_testcases/solana/type_decl_import.sol:8:10-11"]
-	contract_20 [label="contract x\ntests/contract_testcases/solana/type_decl.sol:3:1-4:12"]
+	contract_20 [label="contract x\ntests/contract_testcases/solana/type_decl.sol:3:1-8:2"]
 	f_21 [label="function f\ncontract: x\ntests/contract_testcases/solana/type_decl.sol:7:2-33\nsignature f(bytes32,bool)\nvisibility public\nmutability nonpayable"]
 	f_21 [label="function f\ncontract: x\ntests/contract_testcases/solana/type_decl.sol:7:2-33\nsignature f(bytes32,bool)\nvisibility public\nmutability nonpayable"]
 	parameters_22 [label="parameters\nusertype Addr \nusertype x.Binary "]
 	parameters_22 [label="parameters\nusertype Addr \nusertype x.Binary "]
-	diagnostic [label="found contract 'd'\nlevel Debug\ntests/contract_testcases/solana/type_decl_import.sol:2:1-3:12"]
-	diagnostic_25 [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/type_decl.sol:3:1-4:12"]
+	diagnostic [label="found contract 'd'\nlevel Debug\ntests/contract_testcases/solana/type_decl_import.sol:2:1-10:2"]
+	diagnostic_25 [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/solana/type_decl.sol:3:1-8:2"]
 	diagnostic_26 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/type_decl.sol:7:2-33"]
 	diagnostic_26 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/type_decl.sol:7:2-33"]
 	types -> Addr
 	types -> Addr
 	types -> Binary
 	types -> Binary

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

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/solana/using_import.sol" {
 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"]
 	S [label="name:S\ntests/contract_testcases/solana/simple.sol:3:8-9\nfield name:f1 ty:int64\nfield name:f2 ty:bool"]
-	contract [label="contract c\ntests/contract_testcases/solana/using_import.sol:5:1-6:12"]
+	contract [label="contract c\ntests/contract_testcases/solana/using_import.sol:5: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"]
 	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 [label="parameters\nstruct S s"]
 	parameters [label="parameters\nstruct S s"]
 	expr [label="expression\ntests/contract_testcases/solana/using_import.sol:8:3-10"]
 	expr [label="expression\ntests/contract_testcases/solana/using_import.sol:8:3-10"]
@@ -11,12 +11,12 @@ strict digraph "tests/contract_testcases/solana/using_import.sol" {
 	call_internal_function_11 [label="call internal function\ntests/contract_testcases/solana/using_import.sol:9:3-10"]
 	call_internal_function_11 [label="call internal function\ntests/contract_testcases/solana/using_import.sol:9:3-10"]
 	internal_function_12 [label="function(struct S) internal pure returns (void)\nfree function dec\ntests/contract_testcases/solana/using_import.sol:9:3-10"]
 	internal_function_12 [label="function(struct S) internal pure returns (void)\nfree function dec\ntests/contract_testcases/solana/using_import.sol:9:3-10"]
 	variable_13 [label="variable: s\nstruct S\ntests/contract_testcases/solana/using_import.sol:9:3-4"]
 	variable_13 [label="variable: s\nstruct S\ntests/contract_testcases/solana/using_import.sol:9:3-4"]
-	contract_14 [label="contract A\ntests/contract_testcases/solana/simple.sol:1:1-12"]
-	contract_15 [label="contract L\ntests/contract_testcases/solana/simple.sol:1:14-2:11"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/solana/using_import.sol:5:1-6:12"]
+	contract_14 [label="contract A\ntests/contract_testcases/solana/simple.sol:1:1-14"]
+	contract_15 [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"]
 	diagnostic_18 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/using_import.sol:7:2-35"]
 	diagnostic_18 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/solana/using_import.sol:7:2-35"]
-	diagnostic_19 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:1-12"]
-	diagnostic_20 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:14-2:11"]
+	diagnostic_19 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:1-14"]
+	diagnostic_20 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:14-2:13"]
 	structs -> S
 	structs -> S
 	contracts -> contract
 	contracts -> contract
 	contract -> test [label="function"]
 	contract -> test [label="function"]

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

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/using_list.sol" {
 strict digraph "tests/contract_testcases/solana/using_list.sol" {
-	contract [label="contract C\ntests/contract_testcases/solana/using_list.sol:8:1-9:12"]
+	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"]
 	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"]
 	f [label="function f\ncontract: C\ntests/contract_testcases/solana/using_list.sol:10:5-51\nsignature f(uint256)\nvisibility external\nmutability pure"]
 	f [label="function f\ncontract: C\ntests/contract_testcases/solana/using_list.sol:10:5-51\nsignature f(uint256)\nvisibility external\nmutability pure"]
 	parameters [label="parameters\nuint256 z"]
 	parameters [label="parameters\nuint256 z"]
@@ -15,7 +15,7 @@ strict digraph "tests/contract_testcases/solana/using_list.sol" {
 	call_internal_function_15 [label="call internal function\ntests/contract_testcases/solana/using_list.sol:15:16-24"]
 	call_internal_function_15 [label="call internal function\ntests/contract_testcases/solana/using_list.sol:15:16-24"]
 	internal_function_16 [label="function(uint256) internal pure returns (uint256)\nfree function zero\ntests/contract_testcases/solana/using_list.sol:15:16-24"]
 	internal_function_16 [label="function(uint256) internal pure returns (uint256)\nfree function zero\ntests/contract_testcases/solana/using_list.sol:15:16-24"]
 	variable_17 [label="variable: z\nuint256\ntests/contract_testcases/solana/using_list.sol:15:16-17"]
 	variable_17 [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-9:12"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/using_list.sol:8:1-19:2"]
 	contracts -> contract
 	contracts -> contract
 	contract -> using [label="base"]
 	contract -> using [label="base"]
 	contract -> f [label="function"]
 	contract -> f [label="function"]

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

@@ -1,12 +1,12 @@
 strict digraph "tests/contract_testcases/solana/using_literal.sol" {
 strict digraph "tests/contract_testcases/solana/using_literal.sol" {
-	contract [label="contract C\ntests/contract_testcases/solana/using_literal.sol:4:1-5:12"]
+	contract [label="contract C\ntests/contract_testcases/solana/using_literal.sol:4: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"]
 	foo [label="function foo\ncontract: C\ntests/contract_testcases/solana/using_literal.sol:6:2-42\nsignature foo()\nvisibility public\nmutability pure"]
 	returns [label="returns\nint256 "]
 	returns [label="returns\nint256 "]
 	return [label="return\ntests/contract_testcases/solana/using_literal.sol:7:3-21"]
 	return [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"]
 	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"]
 	internal_function [label="function(int256) internal pure returns (int256)\nfree function double\ntests/contract_testcases/solana/using_literal.sol:7:10-21"]
 	number_literal [label="int256 literal: 42\ntests/contract_testcases/solana/using_literal.sol:7:10-12"]
 	number_literal [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-5:12"]
+	diagnostic [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/using_literal.sol:4:1-9:2"]
 	contracts -> contract
 	contracts -> contract
 	contract -> foo [label="function"]
 	contract -> foo [label="function"]
 	foo -> returns [label="returns"]
 	foo -> returns [label="returns"]

+ 2 - 2
tests/contract_testcases/solana/yul/function_cal_cond.dot

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/yul/function_cal_cond.sol" {
 strict digraph "tests/contract_testcases/solana/yul/function_cal_cond.sol" {
-	contract [label="contract testTypes\ntests/contract_testcases/solana/yul/function_cal_cond.sol:1:1-20"]
+	contract [label="contract testTypes\ntests/contract_testcases/solana/yul/function_cal_cond.sol:1:1-35:2"]
 	testAsm [label="function testAsm\ncontract: testTypes\ntests/contract_testcases/solana/yul/function_cal_cond.sol:2:5-35\nsignature testAsm()\nvisibility public\nmutability pure"]
 	testAsm [label="function testAsm\ncontract: testTypes\ntests/contract_testcases/solana/yul/function_cal_cond.sol:2:5-35\nsignature testAsm()\nvisibility public\nmutability pure"]
 	inline_assembly [label="inline assembly\ntests/contract_testcases/solana/yul/function_cal_cond.sol:3:9-33:10"]
 	inline_assembly [label="inline assembly\ntests/contract_testcases/solana/yul/function_cal_cond.sol:3:9-33:10"]
 	yul_function_definition [label="function definition tryThis\ntests/contract_testcases/solana/yul/function_cal_cond.sol:5:17-13:18"]
 	yul_function_definition [label="function definition tryThis\ntests/contract_testcases/solana/yul/function_cal_cond.sol:5:17-13:18"]
@@ -68,7 +68,7 @@ strict digraph "tests/contract_testcases/solana/yul/function_cal_cond.sol" {
 	yul_var_decl_68 [label="yul variable declaration\ntests/contract_testcases/solana/yul/function_cal_cond.sol:31:17-27"]
 	yul_var_decl_68 [label="yul variable declaration\ntests/contract_testcases/solana/yul/function_cal_cond.sol:31:17-27"]
 	var_decl_item_69 [label="yul variable declaration uint256 x\ntests/contract_testcases/solana/yul/function_cal_cond.sol:31:21-22"]
 	var_decl_item_69 [label="yul variable declaration uint256 x\ntests/contract_testcases/solana/yul/function_cal_cond.sol:31:21-22"]
 	yul_number_literal_70 [label="uint256 literal: 5\ntests/contract_testcases/solana/yul/function_cal_cond.sol:31:26-27"]
 	yul_number_literal_70 [label="uint256 literal: 5\ntests/contract_testcases/solana/yul/function_cal_cond.sol:31:26-27"]
-	diagnostic [label="found contract 'testTypes'\nlevel Debug\ntests/contract_testcases/solana/yul/function_cal_cond.sol:1:1-20"]
+	diagnostic [label="found contract 'testTypes'\nlevel Debug\ntests/contract_testcases/solana/yul/function_cal_cond.sol:1:1-35:2"]
 	diagnostic_73 [label="yul variable 'x' has never been read\nlevel Warning\ntests/contract_testcases/solana/yul/function_cal_cond.sol:20:25-26"]
 	diagnostic_73 [label="yul variable 'x' has never been read\nlevel Warning\ntests/contract_testcases/solana/yul/function_cal_cond.sol:20:25-26"]
 	diagnostic_74 [label="yul variable 'x' has never been read\nlevel Warning\ntests/contract_testcases/solana/yul/function_cal_cond.sol:31:21-22"]
 	diagnostic_74 [label="yul variable 'x' has never been read\nlevel Warning\ntests/contract_testcases/solana/yul/function_cal_cond.sol:31:21-22"]
 	contracts -> contract
 	contracts -> contract

+ 2 - 2
tests/contract_testcases/solana/yul/parse.dot

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/yul/parse.sol" {
 strict digraph "tests/contract_testcases/solana/yul/parse.sol" {
-	contract [label="contract foo\ntests/contract_testcases/solana/yul/parse.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/solana/yul/parse.sol:2:9-9:10"]
 	get [label="function get\ncontract: foo\ntests/contract_testcases/solana/yul/parse.sol:3:13-51\nsignature get()\nvisibility public\nmutability nonpayable"]
 	get [label="function get\ncontract: foo\ntests/contract_testcases/solana/yul/parse.sol:3:13-51\nsignature get()\nvisibility public\nmutability nonpayable"]
 	returns [label="returns\nbytes4 "]
 	returns [label="returns\nbytes4 "]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/yul/parse.sol:2:9-22"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/solana/yul/parse.sol:2:9-9:10"]
 	diagnostic_7 [label="builtin 'mload' is not available for target solana. Please, open a GitHub issue at https://github.com/hyperledger-labs/solang/issues if there is need to support this function\nlevel Error\ntests/contract_testcases/solana/yul/parse.sol:5:44-55"]
 	diagnostic_7 [label="builtin 'mload' is not available for target solana. Please, open a GitHub issue at https://github.com/hyperledger-labs/solang/issues if there is need to support this function\nlevel Error\ntests/contract_testcases/solana/yul/parse.sol:5:44-55"]
 	diagnostic_8 [label="missing return statement\nlevel Error\ntests/contract_testcases/solana/yul/parse.sol:8:14"]
 	diagnostic_8 [label="missing return statement\nlevel Error\ntests/contract_testcases/solana/yul/parse.sol:8:14"]
 	contracts -> contract
 	contracts -> contract

+ 2 - 2
tests/contract_testcases/solana/yul/return_in_asm.dot

@@ -1,8 +1,8 @@
 strict digraph "tests/contract_testcases/solana/yul/return_in_asm.sol" {
 strict digraph "tests/contract_testcases/solana/yul/return_in_asm.sol" {
-	contract [label="contract Contract\ntests/contract_testcases/solana/yul/return_in_asm.sol:1:1-19"]
+	contract [label="contract Contract\ntests/contract_testcases/solana/yul/return_in_asm.sol:1:1-7:2"]
 	node_3 [label="constructor \ncontract: Contract\ntests/contract_testcases/solana/yul/return_in_asm.sol:2:5-19\nsignature ()\nvisibility public\nmutability nonpayable"]
 	node_3 [label="constructor \ncontract: Contract\ntests/contract_testcases/solana/yul/return_in_asm.sol:2:5-19\nsignature ()\nvisibility public\nmutability nonpayable"]
 	inline_assembly [label="inline assembly\ntests/contract_testcases/solana/yul/return_in_asm.sol:3:9-5:10"]
 	inline_assembly [label="inline assembly\ntests/contract_testcases/solana/yul/return_in_asm.sol:3:9-5:10"]
-	diagnostic [label="found contract 'Contract'\nlevel Debug\ntests/contract_testcases/solana/yul/return_in_asm.sol:1:1-19"]
+	diagnostic [label="found contract 'Contract'\nlevel Debug\ntests/contract_testcases/solana/yul/return_in_asm.sol:1:1-7:2"]
 	diagnostic_7 [label="flag 'memory-safe' not supported\nlevel Error\ntests/contract_testcases/solana/yul/return_in_asm.sol:3:19-32"]
 	diagnostic_7 [label="flag 'memory-safe' not supported\nlevel Error\ntests/contract_testcases/solana/yul/return_in_asm.sol:3:19-32"]
 	diagnostic_8 [label="builtin 'return' is not available for target solana. Please, open a GitHub issue at https://github.com/hyperledger-labs/solang/issues if there is need to support this function\nlevel Error\ntests/contract_testcases/solana/yul/return_in_asm.sol:4:13-25"]
 	diagnostic_8 [label="builtin 'return' is not available for target solana. Please, open a GitHub issue at https://github.com/hyperledger-labs/solang/issues if there is need to support this function\nlevel Error\ntests/contract_testcases/solana/yul/return_in_asm.sol:4:13-25"]
 	contracts -> contract
 	contracts -> contract

+ 2 - 2
tests/contract_testcases/solana/yul/yul_switch.dot

@@ -1,5 +1,5 @@
 strict digraph "tests/contract_testcases/solana/yul/yul_switch.sol" {
 strict digraph "tests/contract_testcases/solana/yul/yul_switch.sol" {
-	contract [label="contract testTypes\ntests/contract_testcases/solana/yul/yul_switch.sol:1:1-20"]
+	contract [label="contract testTypes\ntests/contract_testcases/solana/yul/yul_switch.sol:1:1-18:2"]
 	var [label="variable b\nvisibility internal\ntests/contract_testcases/solana/yul/yul_switch.sol:2:5-14"]
 	var [label="variable b\nvisibility internal\ntests/contract_testcases/solana/yul/yul_switch.sol:2:5-14"]
 	testAsm [label="function testAsm\ncontract: testTypes\ntests/contract_testcases/solana/yul/yul_switch.sol:3:5-74\nsignature testAsm(uint128[])\nvisibility public\nmutability pure"]
 	testAsm [label="function testAsm\ncontract: testTypes\ntests/contract_testcases/solana/yul/yul_switch.sol:3:5-74\nsignature testAsm(uint128[])\nvisibility public\nmutability pure"]
 	parameters [label="parameters\nuint128[] vl"]
 	parameters [label="parameters\nuint128[] vl"]
@@ -40,7 +40,7 @@ strict digraph "tests/contract_testcases/solana/yul/yul_switch.sol" {
 	yul_number_literal_40 [label="uint256 literal: 1\ntests/contract_testcases/solana/yul/yul_switch.sol:13:25-26"]
 	yul_number_literal_40 [label="uint256 literal: 1\ntests/contract_testcases/solana/yul/yul_switch.sol:13:25-26"]
 	return [label="return\ntests/contract_testcases/solana/yul/yul_switch.sol:16:9-17"]
 	return [label="return\ntests/contract_testcases/solana/yul/yul_switch.sol:16:9-17"]
 	variable [label="variable: y\nuint256\ntests/contract_testcases/solana/yul/yul_switch.sol:16:16-17"]
 	variable [label="variable: y\nuint256\ntests/contract_testcases/solana/yul/yul_switch.sol:16:16-17"]
-	diagnostic [label="found contract 'testTypes'\nlevel Debug\ntests/contract_testcases/solana/yul/yul_switch.sol:1:1-20"]
+	diagnostic [label="found contract 'testTypes'\nlevel Debug\ntests/contract_testcases/solana/yul/yul_switch.sol:1:1-18:2"]
 	diagnostic_45 [label="switch statements have no implementation in code generation yet. Please, file a GitHub issue if there is urgent need for such a feature\nlevel Error\ntests/contract_testcases/solana/yul/yul_switch.sol:6:13-11:14"]
 	diagnostic_45 [label="switch statements have no implementation in code generation yet. Please, file a GitHub issue if there is urgent need for such a feature\nlevel Error\ntests/contract_testcases/solana/yul/yul_switch.sol:6:13-11:14"]
 	contracts -> contract
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> var [label="variable"]

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

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/substrate/account_info.sol" {
 strict digraph "tests/contract_testcases/substrate/account_info.sol" {
-	contract [label="contract c\ntests/contract_testcases/substrate/account_info.sol:1:1-12"]
-	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/substrate/account_info.sol:1:1-12"]
+	contract [label="contract c\ntests/contract_testcases/substrate/account_info.sol:1:1-6:2"]
+	diagnostic [label="found contract 'c'\nlevel Debug\ntests/contract_testcases/substrate/account_info.sol:1:1-6:2"]
 	diagnostic_5 [label="type 'AccountInfo' not found\nlevel Error\ntests/contract_testcases/substrate/account_info.sol:2:2-13"]
 	diagnostic_5 [label="type 'AccountInfo' not found\nlevel Error\ntests/contract_testcases/substrate/account_info.sol:2:2-13"]
 	diagnostic_6 [label="type 'AccountInfo' not found\nlevel Error\ntests/contract_testcases/substrate/account_info.sol:4:15-26"]
 	diagnostic_6 [label="type 'AccountInfo' not found\nlevel Error\ntests/contract_testcases/substrate/account_info.sol:4:15-26"]
 	diagnostic_7 [label="type 'AccountInfo' not found\nlevel Error\ntests/contract_testcases/substrate/account_info.sol:4:44-55"]
 	diagnostic_7 [label="type 'AccountInfo' not found\nlevel Error\ntests/contract_testcases/substrate/account_info.sol:4:44-55"]

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

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions.sol" {
 strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions.sol" {
-	contract [label="contract foo\ntests/contract_testcases/substrate/arrays/array_dimensions.sol:2:9-22"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/array_dimensions.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/substrate/arrays/array_dimensions.sol:2:9-4:10"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/array_dimensions.sol:2:9-4:10"]
 	diagnostic_5 [label="zero size array not permitted\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions.sol:3:18-25"]
 	diagnostic_5 [label="zero size array not permitted\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions.sol:3:18-25"]
 	contracts -> contract
 	contracts -> contract
 	diagnostics -> diagnostic [label="Debug"]
 	diagnostics -> diagnostic [label="Debug"]

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

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions_01.sol" {
 strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions_01.sol" {
-	contract [label="contract foo\ntests/contract_testcases/substrate/arrays/array_dimensions_01.sol:2:9-22"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/array_dimensions_01.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/substrate/arrays/array_dimensions_01.sol:2:9-4:10"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/array_dimensions_01.sol:2:9-4:10"]
 	diagnostic_5 [label="negative literal -10 not allowed for unsigned type 'uint256'\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_01.sol:3:18-21"]
 	diagnostic_5 [label="negative literal -10 not allowed for unsigned type 'uint256'\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_01.sol:3:18-21"]
 	contracts -> contract
 	contracts -> contract
 	diagnostics -> diagnostic [label="Debug"]
 	diagnostics -> diagnostic [label="Debug"]

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

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions_02.sol" {
 strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions_02.sol" {
-	contract [label="contract foo\ntests/contract_testcases/substrate/arrays/array_dimensions_02.sol:2:9-22"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/array_dimensions_02.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/substrate/arrays/array_dimensions_02.sol:2:9-4:10"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/array_dimensions_02.sol:2:9-4:10"]
 	diagnostic_5 [label="zero size array not permitted\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_02.sol:3:18-24"]
 	diagnostic_5 [label="zero size array not permitted\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_02.sol:3:18-24"]
 	contracts -> contract
 	contracts -> contract
 	diagnostics -> diagnostic [label="Debug"]
 	diagnostics -> diagnostic [label="Debug"]

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

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions_03.sol" {
 strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions_03.sol" {
 	e [label="name: e\ncontract: foo\ntests/contract_testcases/substrate/arrays/array_dimensions_03.sol:3:13-34\nvalue: e1\nvalue: e2\nvalue: e3"]
 	e [label="name: e\ncontract: foo\ntests/contract_testcases/substrate/arrays/array_dimensions_03.sol:3:13-34\nvalue: e1\nvalue: e2\nvalue: e3"]
-	contract [label="contract foo\ntests/contract_testcases/substrate/arrays/array_dimensions_03.sol:2:9-22"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/array_dimensions_03.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/substrate/arrays/array_dimensions_03.sol:2:9-5:10"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/array_dimensions_03.sol:2:9-5:10"]
 	diagnostic_7 [label="divide by zero\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_03.sol:4:15-20"]
 	diagnostic_7 [label="divide by zero\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_03.sol:4:15-20"]
 	enums -> e
 	enums -> e
 	contracts -> contract
 	contracts -> contract

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

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions_04.sol" {
 strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions_04.sol" {
 	bar [label="name:bar\ncontract: foo\ntests/contract_testcases/substrate/arrays/array_dimensions_04.sol:3:20-23\nfield name:x ty:int32"]
 	bar [label="name:bar\ncontract: foo\ntests/contract_testcases/substrate/arrays/array_dimensions_04.sol:3:20-23\nfield name:x ty:int32"]
-	contract [label="contract foo\ntests/contract_testcases/substrate/arrays/array_dimensions_04.sol:2:9-22"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/array_dimensions_04.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/substrate/arrays/array_dimensions_04.sol:2:9-7:10"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/array_dimensions_04.sol:2:9-7:10"]
 	diagnostic_7 [label="divide by zero\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_04.sol:6:17-22"]
 	diagnostic_7 [label="divide by zero\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_04.sol:6:17-22"]
 	structs -> bar
 	structs -> bar
 	contracts -> contract
 	contracts -> contract

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

@@ -1,6 +1,6 @@
 strict digraph "tests/contract_testcases/substrate/arrays/data_locations.sol" {
 strict digraph "tests/contract_testcases/substrate/arrays/data_locations.sol" {
-	contract [label="contract foo\ntests/contract_testcases/substrate/arrays/data_locations.sol:2:9-22"]
-	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/data_locations.sol:2:9-22"]
+	contract [label="contract foo\ntests/contract_testcases/substrate/arrays/data_locations.sol:2:9-5:10"]
+	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/data_locations.sol:2:9-5:10"]
 	diagnostic_5 [label="data location 'storage' can only be specified for array, struct or mapping\nlevel Error\ntests/contract_testcases/substrate/arrays/data_locations.sol:3:31-38"]
 	diagnostic_5 [label="data location 'storage' can only be specified for array, struct or mapping\nlevel Error\ntests/contract_testcases/substrate/arrays/data_locations.sol:3:31-38"]
 	contracts -> contract
 	contracts -> contract
 	diagnostics -> diagnostic [label="Debug"]
 	diagnostics -> diagnostic [label="Debug"]

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است