Bladeren bron

Merge pull request #839 from seanyoung/expr-loc

Fix parser locations of expressions
Sean Young 3 jaren geleden
bovenliggende
commit
3fe49bb140
72 gewijzigde bestanden met toevoegingen van 559 en 477 verwijderingen
  1. 1 0
      Cargo.toml
  2. 59 57
      solang-parser/src/solidity.lalrpop
  3. 1 1
      solang-parser/src/test.rs
  4. 225 146
      src/bin/languageserver/mod.rs
  5. 56 56
      tests/contract_testcases/ewasm/comment_tests.dot
  6. 2 2
      tests/contract_testcases/ewasm/interface_inheritance.dot
  7. 67 67
      tests/contract_testcases/ewasm/rubixi.dot
  8. 15 15
      tests/contract_testcases/ewasm/standalone_call.dot
  9. 6 6
      tests/contract_testcases/solana/address_member_call.dot
  10. 1 1
      tests/contract_testcases/solana/asm_reserved_words.dot
  11. 4 4
      tests/contract_testcases/solana/assign_array_in_array.dot
  12. 1 1
      tests/contract_testcases/solana/contract_var_base_function_init.dot
  13. 2 2
      tests/contract_testcases/solana/destructure_assign_struct_member.dot
  14. 6 6
      tests/contract_testcases/solana/doccomments_everywhere.dot
  15. 3 3
      tests/contract_testcases/solana/expressions/bytes32_0.dot
  16. 1 1
      tests/contract_testcases/solana/expressions/contract_compare.dot
  17. 2 2
      tests/contract_testcases/solana/expressions/contract_no_init.dot
  18. 2 2
      tests/contract_testcases/solana/for_if_no_else.dot
  19. 10 10
      tests/contract_testcases/solana/issues678.dot
  20. 1 1
      tests/contract_testcases/solana/negative_exponent.dot
  21. 2 2
      tests/contract_testcases/solana/power.dot
  22. 4 4
      tests/contract_testcases/solana/shift_struct_member.dot
  23. 3 3
      tests/contract_testcases/solana/simple.dot
  24. 1 1
      tests/contract_testcases/substrate/arrays/array_dimensions.dot
  25. 1 1
      tests/contract_testcases/substrate/arrays/array_dimensions_02.dot
  26. 1 1
      tests/contract_testcases/substrate/arrays/array_dimensions_03.dot
  27. 1 1
      tests/contract_testcases/substrate/arrays/array_dimensions_04.dot
  28. 6 6
      tests/contract_testcases/substrate/arrays/lucas.dot
  29. 1 1
      tests/contract_testcases/substrate/arrays/storage_delete_01.dot
  30. 1 1
      tests/contract_testcases/substrate/builtins/msg_01.dot
  31. 1 1
      tests/contract_testcases/substrate/contracts/external_call_02.dot
  32. 1 1
      tests/contract_testcases/substrate/contracts/external_call_03.dot
  33. 1 1
      tests/contract_testcases/substrate/expressions/power.dot
  34. 1 1
      tests/contract_testcases/substrate/expressions/power_01.dot
  35. 1 1
      tests/contract_testcases/substrate/expressions/power_02.dot
  36. 1 1
      tests/contract_testcases/substrate/expressions/test_cast_errors_02.dot
  37. 1 1
      tests/contract_testcases/substrate/functions/global_functions_08.dot
  38. 1 1
      tests/contract_testcases/substrate/functions/mutability_04.dot
  39. 1 1
      tests/contract_testcases/substrate/inheritance/base_contract.dot
  40. 1 1
      tests/contract_testcases/substrate/inheritance/base_contract_01.dot
  41. 1 1
      tests/contract_testcases/substrate/inheritance/base_contract_on_constructor_06.dot
  42. 1 1
      tests/contract_testcases/substrate/inheritance/base_contract_on_constructor_07.dot
  43. 1 1
      tests/contract_testcases/substrate/inheritance/base_contract_on_constructor_08.dot
  44. 1 1
      tests/contract_testcases/substrate/inheritance/call_inherited_function_01.dot
  45. 3 3
      tests/contract_testcases/substrate/inheritance/call_inherited_function_02.dot
  46. 4 4
      tests/contract_testcases/substrate/inheritance/cast_contract.dot
  47. 3 3
      tests/contract_testcases/substrate/inheritance/multiple_override.dot
  48. 3 3
      tests/contract_testcases/substrate/inheritance/multiple_override_01.dot
  49. 3 3
      tests/contract_testcases/substrate/inheritance/multiple_override_02.dot
  50. 3 3
      tests/contract_testcases/substrate/inheritance/multiple_override_03.dot
  51. 3 3
      tests/contract_testcases/substrate/inheritance/multiple_override_04.dot
  52. 4 4
      tests/contract_testcases/substrate/inheritance/multiple_override_05.dot
  53. 4 4
      tests/contract_testcases/substrate/inheritance/multiple_override_06.dot
  54. 1 1
      tests/contract_testcases/substrate/inheritance/simple_interface.dot
  55. 1 1
      tests/contract_testcases/substrate/inheritance/test_override_01.dot
  56. 1 1
      tests/contract_testcases/substrate/inheritance/test_override_02.dot
  57. 1 1
      tests/contract_testcases/substrate/inheritance/test_override_03.dot
  58. 2 2
      tests/contract_testcases/substrate/inheritance/test_override_04.dot
  59. 2 2
      tests/contract_testcases/substrate/inheritance/test_override_05.dot
  60. 2 2
      tests/contract_testcases/substrate/libraries/using_02.dot
  61. 2 2
      tests/contract_testcases/substrate/libraries/using_03.dot
  62. 2 2
      tests/contract_testcases/substrate/libraries/using_04.dot
  63. 2 2
      tests/contract_testcases/substrate/libraries/using_05.dot
  64. 2 2
      tests/contract_testcases/substrate/libraries/using_06.dot
  65. 1 1
      tests/contract_testcases/substrate/primitives/address_06.dot
  66. 2 2
      tests/contract_testcases/substrate/primitives/address_payable_type_01.dot
  67. 2 2
      tests/contract_testcases/substrate/value/external_call_value_10.dot
  68. 2 2
      tests/contract_testcases/substrate/value/external_call_value_11.dot
  69. 1 1
      tests/contract_testcases/substrate/variables/immutable_01.dot
  70. 1 1
      tests/contract_testcases/substrate/variables/test_variable_initializer_errors_02.dot
  71. 1 1
      tests/contract_testcases/substrate/variables/test_variable_initializer_errors_03.dot
  72. 1 1
      tests/contract_testcases/substrate/variables/test_variable_initializer_errors_04.dot

+ 1 - 0
Cargo.toml

@@ -45,6 +45,7 @@ once_cell = "1.10"
 solang-parser = { path = "solang-parser", version = "0.1.13" }
 codespan-reporting = "0.11"
 phf = "0.10.1"
+rust-lapper = "1.0"
 
 [dev-dependencies]
 num-derive = "0.3"

+ 59 - 57
solang-parser/src/solidity.lalrpop

@@ -273,91 +273,91 @@ Expression: Expression = {
 }
 
 Precedence14: Expression = {
-    <l:Precedence13> <a:@L> "=" <b:@R> <r:Precedence14> => Expression::Assign(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence13> <a:@L> "|=" <b:@R> <r:Precedence14> => Expression::AssignOr(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence13> <a:@L> "^=" <b:@R> <r:Precedence14> => Expression::AssignXor(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence13> <a:@L> "&=" <b:@R> <r:Precedence14> => Expression::AssignAnd(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence13> <a:@L> "<<=" <b:@R> <r:Precedence14> => Expression::AssignShiftLeft(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence13> <a:@L> ">>=" <b:@R> <r:Precedence14> => Expression::AssignShiftRight(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence13> <a:@L> "+=" <b:@R> <r:Precedence14> => Expression::AssignAdd(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence13> <a:@L> "-=" <b:@R> <r:Precedence14> => Expression::AssignSubtract(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence13> <a:@L> "*=" <b:@R> <r:Precedence14> => Expression::AssignMultiply(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence13> <a:@L> "/=" <b:@R> <r:Precedence14> => Expression::AssignDivide(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence13> <a:@L> "%=" <b:@R> <r:Precedence14> => Expression::AssignModulo(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <c:Precedence13> <a:@L> "?" <l:Precedence14> ":" <b:@R> <r:Precedence14> => Expression::Ternary(Loc::File(file_no, a, b), Box::new(c), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence13> "=" <r:Precedence14> <b:@R> => Expression::Assign(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence13> "|=" <r:Precedence14> <b:@R> => Expression::AssignOr(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence13> "^=" <r:Precedence14> <b:@R> => Expression::AssignXor(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence13> "&=" <r:Precedence14> <b:@R> => Expression::AssignAnd(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence13> "<<=" <r:Precedence14> <b:@R> => Expression::AssignShiftLeft(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence13> ">>=" <r:Precedence14> <b:@R> => Expression::AssignShiftRight(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence13> "+=" <r:Precedence14> <b:@R> => Expression::AssignAdd(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence13> "-=" <r:Precedence14> <b:@R> => Expression::AssignSubtract(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence13> "*=" <r:Precedence14> <b:@R> => Expression::AssignMultiply(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence13> "/=" <r:Precedence14> <b:@R> => Expression::AssignDivide(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence13> "%=" <r:Precedence14> <b:@R> => Expression::AssignModulo(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <c:Precedence13> "?" <l:Precedence14> ":" <r:Precedence14> <b:@R> => Expression::Ternary(Loc::File(file_no, a, b), Box::new(c), Box::new(l), Box::new(r)),
     Precedence13,
 }
 
 Precedence13: Expression = {
-    <l:Precedence13> <a:@L> "||" <b:@R> <r:Precedence12> => Expression::Or(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence13> "||" <r:Precedence12> <b:@R> => Expression::Or(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
     Precedence12,
 }
 
 Precedence12: Expression = {
-    <l:Precedence12> <a:@L> "&&" <b:@R> <r:Precedence11> => Expression::And(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence12> "&&" <r:Precedence11> <b:@R> => Expression::And(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
     Precedence11,
 }
 
 Precedence11: Expression = {
-    <l:Precedence11> <a:@L> "==" <b:@R> <r:Precedence10> => Expression::Equal(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence11> <a:@L> "!=" <b:@R> <r:Precedence10> => Expression::NotEqual(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence11> "==" <r:Precedence10> <b:@R> => Expression::Equal(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence11> "!=" <r:Precedence10> <b:@R> => Expression::NotEqual(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
     Precedence10,
 }
 
 Precedence10: Expression = {
-    <l:Precedence10> <a:@L> "<" <b:@R> <r:Precedence9> => Expression::Less(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence10> <a:@L> ">" <b:@R> <r:Precedence9> => Expression::More(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence10> <a:@L> "<=" <b:@R> <r:Precedence9> => Expression::LessEqual(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence10> <a:@L> ">=" <b:@R> <r:Precedence9> => Expression::MoreEqual(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence10> "<" <r:Precedence9> <b:@R> => Expression::Less(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence10> ">" <r:Precedence9> <b:@R> => Expression::More(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence10> "<=" <r:Precedence9> <b:@R> => Expression::LessEqual(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence10> ">=" <r:Precedence9> <b:@R> => Expression::MoreEqual(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
     Precedence9,
 }
 
 Precedence9: Expression = {
-    <l:Precedence9> <a:@L> "|" <b:@R> <r:Precedence8> => Expression::BitwiseOr(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence9> "|" <r:Precedence8> <b:@R> => Expression::BitwiseOr(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
     Precedence8,
 }
 
 Precedence8: Expression = {
-    <l:Precedence8> <a:@L> "^" <b:@R> <r:Precedence7> => Expression::BitwiseXor(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence8> "^" <r:Precedence7> <b:@R> => Expression::BitwiseXor(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
     Precedence7,
 }
 
 Precedence7: Expression = {
-    <l:Precedence7> <a:@L> "&" <b:@R> <r:Precedence6> => Expression::BitwiseAnd(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence7> "&" <r:Precedence6> <b:@R> => Expression::BitwiseAnd(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
     Precedence6,
 }
 
 Precedence6: Expression = {
-    <l:Precedence6> <a:@L> "<<" <b:@R> <r:Precedence5> => Expression::ShiftLeft(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence6> <a:@L> ">>" <b:@R> <r:Precedence5> => Expression::ShiftRight(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence6> "<<" <r:Precedence5> <b:@R> => Expression::ShiftLeft(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence6> ">>" <r:Precedence5> <b:@R> => Expression::ShiftRight(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
     Precedence5,
 }
 
 Precedence5: Expression = {
-    <l:Precedence5> <a:@L> "+" <b:@R> <r:Precedence4> => Expression::Add(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence5> <a:@L> "-" <b:@R> <r:Precedence4> => Expression::Subtract(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence5> "+" <r:Precedence4> <b:@R> => Expression::Add(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence5> "-" <r:Precedence4> <b:@R> => Expression::Subtract(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
     Precedence4,
 }
 
 Precedence4: Expression = {
-    <l:Precedence4> <a:@L> "*" <b:@R> <r:Precedence3> => Expression::Multiply(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence4> <a:@L> "/" <b:@R> <r:Precedence3> => Expression::Divide(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
-    <l:Precedence4> <a:@L> "%" <b:@R> <r:Precedence3> => Expression::Modulo(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence4> "*" <r:Precedence3> <b:@R> => Expression::Multiply(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence4> "/" <r:Precedence3> <b:@R> => Expression::Divide(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence4> "%" <r:Precedence3> <b:@R> => Expression::Modulo(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
     Precedence3,
 }
 
 Precedence3: Expression = {
-    <l:Precedence2> <a:@L> "**" <b:@R> <r:Precedence3> => Expression::Power(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
+    <a:@L> <l:Precedence2> "**" <r:Precedence3> <b:@R> => Expression::Power(Loc::File(file_no, a, b), Box::new(l), Box::new(r)),
     Precedence2,
 }
 
 Precedence2: Expression = {
-    <a:@L> "!" <b:@R> <e:Precedence2> => Expression::Not(Loc::File(file_no, a, b), Box::new(e)),
-    <a:@L> "~" <b:@R> <e:Precedence2> => Expression::Complement(Loc::File(file_no, a, b), Box::new(e)),
-    <a:@L> "delete" <b:@R> <e:Precedence2> => Expression::Delete(Loc::File(file_no, a, b), Box::new(e)),
+    <a:@L> "!" <e:Precedence2> <b:@R> => Expression::Not(Loc::File(file_no, a, b), Box::new(e)),
+    <a:@L> "~" <e:Precedence2> <b:@R> => Expression::Complement(Loc::File(file_no, a, b), Box::new(e)),
+    <a:@L> "delete" <e:Precedence2> <b:@R>  => Expression::Delete(Loc::File(file_no, a, b), Box::new(e)),
     <a:@L> "new" <call:Precedence2> <b:@R> => Expression::New(Loc::File(file_no, a, b), Box::new(call)),
-    <a:@L> "++" <b:@R> <e:Precedence2> => Expression::PreIncrement(Loc::File(file_no, a, b), Box::new(e)),
-    <a:@L> "--" <b:@R> <e:Precedence2> => Expression::PreDecrement(Loc::File(file_no, a, b), Box::new(e)),
+    <a:@L> "++" <e:Precedence2> <b:@R> => Expression::PreIncrement(Loc::File(file_no, a, b), Box::new(e)),
+    <a:@L> "--" <e:Precedence2> <b:@R> => Expression::PreDecrement(Loc::File(file_no, a, b), Box::new(e)),
     <a:@L> "+" <e:Precedence2> <b:@R>  => Expression::UnaryPlus(Loc::File(file_no, a, b), Box::new(e)),
     <a:@L> "-" <e:Precedence2> <b:@R> => Expression::UnaryMinus(Loc::File(file_no, a, b), Box::new(e)),
     <l:@L> "error" <r:@R> => Expression::Variable(Identifier{loc: Loc::File(file_no, l, r), name: "error".to_string()}),
@@ -815,15 +815,16 @@ YulLiteral: YulExpression = {
 }
 
 YulFunctionCall: YulFunctionCall = {
-    <l:@L> <id:YulIdentifier> "(" <arguments:Comma<YulExpression>> ")" <r:@R> =>
-     YulFunctionCall{loc: Loc::File(file_no, l, r), id, arguments}
+    <l:@L> <id:YulIdentifier> "(" <arguments:Comma<YulExpression>> ")" <r:@R> => {
+        YulFunctionCall{loc: Loc::File(file_no, l, r), id, arguments}
+    }
 }
 
 YulPath: YulExpression = {
- <YulIdentifier> => YulExpression::Variable(<>),
- <l:@L> <array:YulPath> "." <member:YulIdentifier> <r:@R> => {
-         YulExpression::Member(Loc::File(file_no, l, r), Box::new(array), member)
-     },
+    <YulIdentifier> => YulExpression::Variable(<>),
+    <l:@L> <array:YulPath> "." <member:YulIdentifier> <r:@R> => {
+        YulExpression::Member(Loc::File(file_no, l, r), Box::new(array), member)
+    },
 }
 
 YulExpression: YulExpression = {
@@ -835,17 +836,14 @@ YulExpression: YulExpression = {
 YulFunctionDefinition: YulStatement = {
     <l:@L> "function" <name: YulIdentifier> "(" <params: YulTypedIdentifierList?> ")" <returns:("->" <YulTypedIdentifierList>)?>
     <body: YulBlock> <r:@R> => {
-        YulStatement::FunctionDefinition(Box::new(YulFunctionDefinition{
+        YulStatement::FunctionDefinition(Box::new(YulFunctionDefinition {
             loc: Loc::File(file_no, l, r),
             id: name,
             params: params.unwrap_or_default(),
             returns: returns.unwrap_or_default(),
             body
-            }
-          )
-        )
- }
-
+        }))
+    }
 }
 
 YulTypedIdentifierList: Vec<YulTypedIdentifier> = {
@@ -853,13 +851,15 @@ YulTypedIdentifierList: Vec<YulTypedIdentifier> = {
 }
 
 YulType: YulTypedIdentifier = {
-    <l:@L> <var_name:YulIdentifier> ":" <var_type:YulIdentifier> <r:@R> =>
-       YulTypedIdentifier{
+    <l:@L> <var_name:YulIdentifier> ":" <var_type:YulIdentifier> <r:@R> => {
+       YulTypedIdentifier {
             loc: Loc::File(file_no, l, r),
             id: var_name, ty: Some(var_type)
-       },
-    <l:@L> <id:YulIdentifier> <r:@R> =>
-       YulTypedIdentifier{loc: Loc::File(file_no, l, r), id, ty: None},
+        }
+    },
+    <l:@L> <id:YulIdentifier> <r:@R> => {
+       YulTypedIdentifier{loc: Loc::File(file_no, l, r), id, ty: None}
+    },
 }
 
 YulSwitch: YulStatement = {
@@ -910,13 +910,15 @@ YulIf: YulStatement = {
 }
 
 YulAssignment: YulStatement = {
- <l:@L> <paths:CommaOne<YulPath>> ":=" <expr:YulExpression> <r:@R> =>
- YulStatement::Assign(Loc::File(file_no, l, r), paths, expr)
+    <l:@L> <paths:CommaOne<YulPath>> ":=" <expr:YulExpression> <r:@R> => {
+        YulStatement::Assign(Loc::File(file_no, l, r), paths, expr)
+    }
 }
 
 YulVariableDeclaration: YulStatement = {
-    <l:@L>  "let" <names:YulTypedIdentifierList> <expr:(":=" <YulExpression>)?> <r:@R> =>
-    YulStatement::VariableDeclaration(Loc::File(file_no, l, r), names, expr),
+    <l:@L>  "let" <names:YulTypedIdentifierList> <expr:(":=" <YulExpression>)?> <r:@R> => {
+        YulStatement::VariableDeclaration(Loc::File(file_no, l, r), names, expr)
+    }
 }
 
 

+ 1 - 1
solang-parser/src/test.rs

@@ -182,7 +182,7 @@ fn parse_test() {
                                         name: "assert".to_string(),
                                     })),
                                     vec![Expression::Equal(
-                                        Loc::File(0, 827, 829),
+                                        Loc::File(0, 823, 831),
                                         Box::new(Expression::Variable(Identifier {
                                             loc: Loc::File(0, 823, 826),
                                             name: "sum".to_string(),

+ 225 - 146
src/bin/languageserver/mod.rs

@@ -1,4 +1,5 @@
 use clap::ArgMatches;
+use rust_lapper::{Interval, Lapper};
 use serde_json::Value;
 use solang::{
     codegen,
@@ -9,15 +10,17 @@ use solang::{
     sema::{ast, builtin::get_prototype, symtable, tags::render},
     Target,
 };
-use std::{cmp::Ordering, collections::HashMap, ffi::OsString, path::PathBuf};
+use std::{collections::HashMap, ffi::OsString, path::PathBuf};
 use tokio::sync::Mutex;
 use tower_lsp::{jsonrpc::Result, lsp_types::*, Client, LanguageServer, LspService, Server};
 
-pub struct Hovers {
+struct Hovers {
     file: ast::File,
-    lookup: Vec<(usize, usize, String)>,
+    lookup: Lapper<usize, String>,
 }
 
+type HoverEntry = Interval<usize, String>;
+
 pub struct SolangServer {
     client: Client,
     target: Target,
@@ -144,18 +147,16 @@ impl SolangServer {
 
             let res = self.client.publish_diagnostics(uri, diags, None);
 
-            let mut lookup: Vec<(usize, usize, String)> = Vec::new();
+            let mut lookup: Vec<HoverEntry> = Vec::new();
             let mut fnc_map: HashMap<String, String> = HashMap::new();
 
             SolangServer::traverse(&ns, &mut lookup, &mut fnc_map);
 
-            lookup.sort_by_key(|k| k.0);
-
             self.files.lock().await.insert(
                 path,
                 Hovers {
                     file: ns.files[ns.top_file_no()].clone(),
-                    lookup,
+                    lookup: Lapper::new(lookup),
                 },
             );
 
@@ -194,7 +195,7 @@ impl SolangServer {
     // statements and traversing inside the contents of the statements.
     fn construct_stmt(
         stmt: &ast::Statement,
-        lookup_tbl: &mut Vec<(usize, usize, String)>,
+        lookup_tbl: &mut Vec<HoverEntry>,
         symtab: &symtable::Symtable,
         fnc_map: &HashMap<String, String>,
         ns: &ast::Namespace,
@@ -205,24 +206,27 @@ impl SolangServer {
                     SolangServer::construct_stmt(stmt, lookup_tbl, symtab, fnc_map, ns);
                 }
             }
-            ast::Statement::VariableDecl(loc, var_no, _param, expr) => {
+            ast::Statement::VariableDecl(loc, var_no, param, expr) => {
                 if let Some(exp) = expr {
                     SolangServer::construct_expr(exp, lookup_tbl, symtab, fnc_map, ns);
                 }
-                let mut msg = SolangServer::expanded_ty(&_param.ty, ns);
-                msg = format!("{} {}", msg, _param.name_as_str());
+                let mut val = format!(
+                    "{} {}",
+                    SolangServer::expanded_ty(&param.ty, ns),
+                    param.name_as_str()
+                );
                 if let Some(expr) = ns.var_constants.get(loc) {
                     match expr {
                         codegen::Expression::BytesLiteral(_, ast::Type::Bytes(_), bs)
                         | codegen::Expression::BytesLiteral(_, ast::Type::DynamicBytes, bs) => {
-                            msg.push_str(&format!(" = hex\"{}\"", hex::encode(&bs)));
+                            val.push_str(&format!(" = hex\"{}\"", hex::encode(&bs)));
                         }
                         codegen::Expression::BytesLiteral(_, ast::Type::String, bs) => {
-                            msg.push_str(&format!(" = \"{}\"", String::from_utf8_lossy(bs)));
+                            val.push_str(&format!(" = \"{}\"", String::from_utf8_lossy(bs)));
                         }
                         codegen::Expression::NumberLiteral(_, ast::Type::Uint(_), n)
                         | codegen::Expression::NumberLiteral(_, ast::Type::Int(_), n) => {
-                            msg.push_str(&format!(" = {}", n));
+                            val.push_str(&format!(" = {}", n));
                         }
                         _ => (),
                     }
@@ -230,11 +234,15 @@ impl SolangServer {
 
                 if let Some(var) = symtab.vars.get(var_no) {
                     if var.slice {
-                        msg.push_str("\nreadonly: compiled to slice\n")
+                        val.push_str("\nreadonly: compiled to slice\n")
                     }
                 }
 
-                lookup_tbl.push((_param.loc.start(), _param.loc.end(), msg));
+                lookup_tbl.push(HoverEntry {
+                    start: param.loc.start(),
+                    stop: param.loc.end(),
+                    val,
+                });
             }
             ast::Statement::If(_locs, _, expr, stat1, stat2) => {
                 SolangServer::construct_expr(expr, lookup_tbl, symtab, fnc_map, ns);
@@ -309,13 +317,13 @@ impl SolangServer {
             } => {
                 let event = &ns.events[*event_no];
 
-                let mut msg = render(&event.tags);
+                let mut val = render(&event.tags);
 
-                msg.push_str(&format!("```\nevent {} {{\n", event.symbol_name(ns)));
+                val.push_str(&format!("```\nevent {} {{\n", event.symbol_name(ns)));
 
                 let mut iter = event.fields.iter().peekable();
                 while let Some(field) = iter.next() {
-                    msg.push_str(&format!(
+                    val.push_str(&format!(
                         "\t{}{}{}{}\n",
                         field.ty.to_string(ns),
                         if field.indexed { " indexed " } else { " " },
@@ -324,12 +332,16 @@ impl SolangServer {
                     ));
                 }
 
-                msg.push_str(&format!(
+                val.push_str(&format!(
                     "}}{};\n```\n",
                     if event.anonymous { " anonymous" } else { "" }
                 ));
 
-                lookup_tbl.push((event_loc.start(), event_loc.end(), msg));
+                lookup_tbl.push(HoverEntry {
+                    start: event_loc.start(),
+                    stop: event_loc.end(),
+                    val,
+                });
 
                 for arg in args {
                     SolangServer::construct_expr(arg, lookup_tbl, symtab, fnc_map, ns);
@@ -360,7 +372,7 @@ impl SolangServer {
     // the respective expression type messages in the table.
     fn construct_expr(
         expr: &ast::Expression,
-        lookup_tbl: &mut Vec<(usize, usize, String)>,
+        lookup_tbl: &mut Vec<HoverEntry>,
         symtab: &symtable::Symtable,
         fnc_map: &HashMap<String, String>,
         ns: &ast::Namespace,
@@ -368,20 +380,35 @@ impl SolangServer {
         match expr {
             // Variable types expression
             ast::Expression::BoolLiteral(locs, vl) => {
-                let msg = format!("(bool) {}", vl);
-                lookup_tbl.push((locs.start(), locs.end(), msg));
+                let val = format!("(bool) {}", vl);
+                lookup_tbl.push(HoverEntry {
+                    start: locs.start(),
+                    stop: locs.end(),
+                    val,
+                });
             }
             ast::Expression::BytesLiteral(locs, typ, _vec_lst) => {
-                let msg = format!("({})", typ.to_string(ns));
-                lookup_tbl.push((locs.start(), locs.end(), msg));
+                let val = format!("({})", typ.to_string(ns));
+                lookup_tbl.push(HoverEntry {
+                    start: locs.start(),
+                    stop: locs.end(),
+                    val,
+                });
             }
             ast::Expression::CodeLiteral(locs, _val, _) => {
-                let msg = format!("({})", _val);
-                lookup_tbl.push((locs.start(), locs.end(), msg));
+                let val = format!("({})", _val);
+                lookup_tbl.push(HoverEntry {
+                    start: locs.start(),
+                    stop: locs.end(),
+                    val,
+                });
             }
             ast::Expression::NumberLiteral(locs, typ, _) => {
-                let msg = typ.to_string(ns);
-                lookup_tbl.push((locs.start(), locs.end(), msg));
+                lookup_tbl.push(HoverEntry {
+                    start: locs.start(),
+                    stop: locs.end(),
+                    val: typ.to_string(ns),
+                });
             }
             ast::Expression::StructLiteral(_locs, _typ, expr) => {
                 for expp in expr {
@@ -401,77 +428,77 @@ impl SolangServer {
 
             // Arithmetic expression
             ast::Expression::Add(locs, ty, unchecked, expr1, expr2) => {
-                lookup_tbl.push((
-                    locs.start(),
-                    locs.end(),
-                    format!(
-                        "{} {}addition",
+                lookup_tbl.push(HoverEntry {
+                    start: locs.start(),
+                    stop: locs.end(),
+                    val: format!(
+                        "{} {} addition",
                         if *unchecked { "unchecked " } else { "" },
                         ty.to_string(ns)
                     ),
-                ));
+                });
 
                 SolangServer::construct_expr(expr1, lookup_tbl, symtab, fnc_map, ns);
                 SolangServer::construct_expr(expr2, lookup_tbl, symtab, fnc_map, ns);
             }
             ast::Expression::Subtract(locs, ty, unchecked, expr1, expr2) => {
-                lookup_tbl.push((
-                    locs.start(),
-                    locs.end(),
-                    format!(
-                        "{} {}subtraction",
+                lookup_tbl.push(HoverEntry {
+                    start: locs.start(),
+                    stop: locs.end(),
+                    val: format!(
+                        "{} {} subtraction",
                         if *unchecked { "unchecked " } else { "" },
                         ty.to_string(ns)
                     ),
-                ));
+                });
 
                 SolangServer::construct_expr(expr1, lookup_tbl, symtab, fnc_map, ns);
                 SolangServer::construct_expr(expr2, lookup_tbl, symtab, fnc_map, ns);
             }
             ast::Expression::Multiply(locs, ty, unchecked, expr1, expr2) => {
-                lookup_tbl.push((
-                    locs.start(),
-                    locs.end(),
-                    format!(
-                        "{} {}multiply",
+                lookup_tbl.push(HoverEntry {
+                    start: locs.start(),
+                    stop: locs.end(),
+                    val: format!(
+                        "{} {} multiply",
                         if *unchecked { "unchecked " } else { "" },
                         ty.to_string(ns)
                     ),
-                ));
+                });
 
                 SolangServer::construct_expr(expr1, lookup_tbl, symtab, fnc_map, ns);
                 SolangServer::construct_expr(expr2, lookup_tbl, symtab, fnc_map, ns);
             }
             ast::Expression::Divide(locs, ty, expr1, expr2) => {
-                lookup_tbl.push((
-                    locs.start(),
-                    locs.end(),
-                    format!("{} divide", ty.to_string(ns)),
-                ));
+                lookup_tbl.push(HoverEntry {
+                    start: locs.start(),
+                    stop: locs.end(),
+                    val: format!("{} divide", ty.to_string(ns)),
+                });
 
                 SolangServer::construct_expr(expr1, lookup_tbl, symtab, fnc_map, ns);
                 SolangServer::construct_expr(expr2, lookup_tbl, symtab, fnc_map, ns);
             }
             ast::Expression::Modulo(locs, ty, expr1, expr2) => {
-                lookup_tbl.push((
-                    locs.start(),
-                    locs.end(),
-                    format!("{} modulo", ty.to_string(ns)),
-                ));
+                lookup_tbl.push(HoverEntry {
+                    start: locs.start(),
+                    stop: locs.end(),
+                    val: format!("{} modulo", ty.to_string(ns)),
+                });
 
                 SolangServer::construct_expr(expr1, lookup_tbl, symtab, fnc_map, ns);
                 SolangServer::construct_expr(expr2, lookup_tbl, symtab, fnc_map, ns);
             }
             ast::Expression::Power(locs, ty, unchecked, expr1, expr2) => {
-                lookup_tbl.push((
-                    locs.start(),
-                    locs.end(),
-                    format!(
+                lookup_tbl.push(HoverEntry {
+                    start: locs.start(),
+                    stop: locs.end(),
+                    val: format!(
                         "{} {}power",
                         if *unchecked { "unchecked " } else { "" },
                         ty.to_string(ns)
                     ),
-                ));
+                });
 
                 SolangServer::construct_expr(expr1, lookup_tbl, symtab, fnc_map, ns);
                 SolangServer::construct_expr(expr2, lookup_tbl, symtab, fnc_map, ns);
@@ -501,20 +528,20 @@ impl SolangServer {
 
             // Variable expression
             ast::Expression::Variable(loc, typ, var_no) => {
-                let mut msg = SolangServer::expanded_ty(typ, ns);
+                let mut val = SolangServer::expanded_ty(typ, ns);
 
                 if let Some(expr) = ns.var_constants.get(loc) {
                     match expr {
                         codegen::Expression::BytesLiteral(_, ast::Type::Bytes(_), bs)
                         | codegen::Expression::BytesLiteral(_, ast::Type::DynamicBytes, bs) => {
-                            msg.push_str(&format!(" hex\"{}\"", hex::encode(&bs)));
+                            val.push_str(&format!(" hex\"{}\"", hex::encode(&bs)));
                         }
                         codegen::Expression::BytesLiteral(_, ast::Type::String, bs) => {
-                            msg.push_str(&format!(" \"{}\"", String::from_utf8_lossy(bs)));
+                            val.push_str(&format!(" \"{}\"", String::from_utf8_lossy(bs)));
                         }
                         codegen::Expression::NumberLiteral(_, ast::Type::Uint(_), n)
                         | codegen::Expression::NumberLiteral(_, ast::Type::Int(_), n) => {
-                            msg.push_str(&format!(" {}", n));
+                            val.push_str(&format!(" {}", n));
                         }
                         _ => (),
                     }
@@ -522,19 +549,31 @@ impl SolangServer {
 
                 if let Some(var) = symtab.vars.get(var_no) {
                     if var.slice {
-                        msg.push_str("\nreadonly: compiles to slice\n")
+                        val.push_str("\nreadonly: compiles to slice\n")
                     }
                 }
 
-                lookup_tbl.push((loc.start(), loc.end(), msg));
+                lookup_tbl.push(HoverEntry {
+                    start: loc.start(),
+                    stop: loc.end(),
+                    val,
+                });
             }
             ast::Expression::ConstantVariable(locs, typ, _val1, _val2) => {
-                let msg = format!("constant ({})", SolangServer::expanded_ty(typ, ns,));
-                lookup_tbl.push((locs.start(), locs.end(), msg));
+                let val = format!("constant ({})", SolangServer::expanded_ty(typ, ns,));
+                lookup_tbl.push(HoverEntry {
+                    start: locs.start(),
+                    stop: locs.end(),
+                    val,
+                });
             }
             ast::Expression::StorageVariable(locs, typ, _val1, _val2) => {
-                let msg = format!("({})", SolangServer::expanded_ty(typ, ns));
-                lookup_tbl.push((locs.start(), locs.end(), msg));
+                let val = format!("({})", SolangServer::expanded_ty(typ, ns));
+                lookup_tbl.push(HoverEntry {
+                    start: locs.start(),
+                    stop: locs.end(),
+                    val,
+                });
             }
 
             // Load expression
@@ -675,7 +714,7 @@ impl SolangServer {
                     let fnc = &ns.functions[*function_no];
                     let msg_tg = render(&fnc.tags[..]);
 
-                    let mut param_msg = format!("{} \n\n {} {}(", msg_tg, fnc.ty, fnc.name);
+                    let mut val = format!("{} \n\n {} {}(", msg_tg, fnc.ty, fnc.name);
 
                     for parm in &*fnc.params {
                         let msg = format!(
@@ -683,10 +722,10 @@ impl SolangServer {
                             parm.name_as_str(),
                             SolangServer::expanded_ty(&parm.ty, ns)
                         );
-                        param_msg = format!("{} {}", param_msg, msg);
+                        val = format!("{} {}", val, msg);
                     }
 
-                    param_msg = format!("{} ) returns (", param_msg);
+                    val = format!("{} ) returns (", val);
 
                     for ret in &*fnc.returns {
                         let msg = format!(
@@ -694,11 +733,15 @@ impl SolangServer {
                             ret.name_as_str(),
                             SolangServer::expanded_ty(&ret.ty, ns)
                         );
-                        param_msg = format!("{} {}", param_msg, msg);
+                        val = format!("{} {}", val, msg);
                     }
 
-                    param_msg = format!("{})", param_msg);
-                    lookup_tbl.push((loc.start(), loc.end(), param_msg));
+                    val = format!("{})", val);
+                    lookup_tbl.push(HoverEntry {
+                        start: loc.start(),
+                        stop: loc.end(),
+                        val,
+                    });
                 }
 
                 for arg in args {
@@ -721,7 +764,7 @@ impl SolangServer {
                     // modifiers do not have mutability, bases or modifiers itself
                     let fnc = &ns.functions[*function_no];
                     let msg_tg = render(&fnc.tags[..]);
-                    let mut param_msg = format!("{} \n\n {} {}(", msg_tg, fnc.ty, fnc.name);
+                    let mut val = format!("{} \n\n {} {}(", msg_tg, fnc.ty, fnc.name);
 
                     for parm in &*fnc.params {
                         let msg = format!(
@@ -729,10 +772,10 @@ impl SolangServer {
                             parm.name_as_str(),
                             SolangServer::expanded_ty(&parm.ty, ns)
                         );
-                        param_msg = format!("{} {}", param_msg, msg);
+                        val = format!("{} {}", val, msg);
                     }
 
-                    param_msg = format!("{} ) \n\n returns (", param_msg);
+                    val = format!("{} ) \n\n returns (", val);
 
                     for ret in &*fnc.returns {
                         let msg = format!(
@@ -740,11 +783,15 @@ impl SolangServer {
                             ret.name_as_str(),
                             SolangServer::expanded_ty(&ret.ty, ns)
                         );
-                        param_msg = format!("{} {}", param_msg, msg);
+                        val = format!("{} {}", val, msg);
                     }
 
-                    param_msg = format!("{})", param_msg);
-                    lookup_tbl.push((loc.start(), loc.end(), param_msg));
+                    val = format!("{})", val);
+                    lookup_tbl.push(HoverEntry {
+                        start: loc.start(),
+                        stop: loc.end(),
+                        val,
+                    });
 
                     SolangServer::construct_expr(address, lookup_tbl, symtab, fnc_map, ns);
                     for expp in args {
@@ -797,8 +844,12 @@ impl SolangServer {
                 }
             }
             ast::Expression::Builtin(_locs, _typ, _builtin, expr) => {
-                let msg = SolangServer::construct_builtins(_builtin, ns);
-                lookup_tbl.push((_locs.start(), _locs.end(), msg));
+                let val = SolangServer::construct_builtins(_builtin, ns);
+                lookup_tbl.push(HoverEntry {
+                    start: _locs.start(),
+                    stop: _locs.end(),
+                    val,
+                });
                 for expp in expr {
                     SolangServer::construct_expr(expp, lookup_tbl, symtab, fnc_map, ns);
                 }
@@ -820,14 +871,21 @@ impl SolangServer {
     // Constructs contract fields and stores it in the lookup table.
     fn construct_cont(
         contvar: &ast::Variable,
-        lookup_tbl: &mut Vec<(usize, usize, String)>,
+        lookup_tbl: &mut Vec<HoverEntry>,
         samptb: &symtable::Symtable,
         fnc_map: &HashMap<String, String>,
         ns: &ast::Namespace,
     ) {
-        let msg_typ = SolangServer::expanded_ty(&contvar.ty, ns);
-        let msg = format!("{} {}", msg_typ, contvar.name);
-        lookup_tbl.push((contvar.loc.start(), contvar.loc.end(), msg));
+        let val = format!(
+            "{} {}",
+            SolangServer::expanded_ty(&contvar.ty, ns),
+            contvar.name
+        );
+        lookup_tbl.push(HoverEntry {
+            start: contvar.loc.start(),
+            stop: contvar.loc.end(),
+            val,
+        });
         if let Some(expr) = &contvar.initializer {
             SolangServer::construct_expr(expr, lookup_tbl, samptb, fnc_map, ns);
         }
@@ -836,28 +894,39 @@ impl SolangServer {
     // Constructs struct fields and stores it in the lookup table.
     fn construct_strct(
         strfld: &ast::Parameter,
-        lookup_tbl: &mut Vec<(usize, usize, String)>,
+        lookup_tbl: &mut Vec<HoverEntry>,
         ns: &ast::Namespace,
     ) {
-        let msg_typ = &strfld.ty.to_string(ns);
-        let msg = format!("{} {}", msg_typ, strfld.name_as_str());
-        lookup_tbl.push((strfld.loc.start(), strfld.loc.end(), msg));
+        let val = format!("{} {}", strfld.ty.to_string(ns), strfld.name_as_str());
+        lookup_tbl.push(HoverEntry {
+            start: strfld.loc.start(),
+            stop: strfld.loc.end(),
+            val,
+        });
     }
 
     // Traverses namespace to build messages stored in the lookup table for hover feature.
     fn traverse(
         ns: &ast::Namespace,
-        lookup_tbl: &mut Vec<(usize, usize, String)>,
+        lookup_tbl: &mut Vec<HoverEntry>,
         fnc_map: &mut HashMap<String, String>,
     ) {
         for enm in &ns.enums {
             for (nam, vals) in &enm.values {
-                let evnt_msg = format!("{} {}, \n\n", nam, vals.1);
-                lookup_tbl.push((vals.0.start(), vals.0.end(), evnt_msg));
-            }
-
-            let msg_tg = render(&enm.tags[..]);
-            lookup_tbl.push((enm.loc.start(), (enm.loc.start() + enm.name.len()), msg_tg));
+                let val = format!("{} {}, \n\n", nam, vals.1);
+                lookup_tbl.push(HoverEntry {
+                    start: vals.0.start(),
+                    stop: vals.0.end(),
+                    val,
+                });
+            }
+
+            let val = render(&enm.tags[..]);
+            lookup_tbl.push(HoverEntry {
+                start: enm.loc.start(),
+                stop: enm.loc.start() + enm.name.len(),
+                val,
+            });
         }
 
         for strct in &ns.structs {
@@ -866,8 +935,12 @@ impl SolangServer {
                     SolangServer::construct_strct(filds, lookup_tbl, ns);
                 }
 
-                let msg_tg = render(&strct.tags[..]);
-                lookup_tbl.push((*start, start + strct.name.len(), msg_tg));
+                let val = render(&strct.tags[..]);
+                lookup_tbl.push(HoverEntry {
+                    start: *start,
+                    stop: start + strct.name.len(),
+                    val,
+                });
             }
         }
 
@@ -878,13 +951,21 @@ impl SolangServer {
             }
 
             for parm in &*fnc.params {
-                let msg = SolangServer::expanded_ty(&parm.ty, ns);
-                lookup_tbl.push((parm.loc.start(), parm.loc.end(), msg));
+                let val = SolangServer::expanded_ty(&parm.ty, ns);
+                lookup_tbl.push(HoverEntry {
+                    start: parm.loc.start(),
+                    stop: parm.loc.end(),
+                    val,
+                });
             }
 
             for ret in &*fnc.returns {
-                let msg = SolangServer::expanded_ty(&ret.ty, ns);
-                lookup_tbl.push((ret.loc.start(), ret.loc.end(), msg));
+                let val = SolangServer::expanded_ty(&ret.ty, ns);
+                lookup_tbl.push(HoverEntry {
+                    start: ret.loc.start(),
+                    stop: ret.loc.end(),
+                    val,
+                });
             }
 
             for stmt in &fnc.body {
@@ -896,32 +977,32 @@ impl SolangServer {
             let samptb = symtable::Symtable::new();
             SolangServer::construct_cont(constant, lookup_tbl, &samptb, fnc_map, ns);
 
-            let msg_tg = render(&constant.tags[..]);
-            lookup_tbl.push((
-                constant.loc.start(),
-                (constant.loc.start() + constant.name.len()),
-                msg_tg,
-            ));
+            let val = render(&constant.tags[..]);
+            lookup_tbl.push(HoverEntry {
+                start: constant.loc.start(),
+                stop: constant.loc.start() + constant.name.len(),
+                val,
+            });
         }
 
         for contrct in &ns.contracts {
-            let msg_tg = render(&contrct.tags[..]);
-            lookup_tbl.push((
-                contrct.loc.start(),
-                (contrct.loc.start() + msg_tg.len()),
-                msg_tg,
-            ));
+            let val = render(&contrct.tags[..]);
+            lookup_tbl.push(HoverEntry {
+                start: contrct.loc.start(),
+                stop: contrct.loc.start() + val.len(),
+                val,
+            });
 
             for varscont in &contrct.variables {
                 let samptb = symtable::Symtable::new();
                 SolangServer::construct_cont(varscont, lookup_tbl, &samptb, fnc_map, ns);
 
-                let msg_tg = render(&varscont.tags[..]);
-                lookup_tbl.push((
-                    varscont.loc.start(),
-                    (varscont.loc.start() + varscont.name.len()),
-                    msg_tg,
-                ));
+                let val = render(&varscont.tags[..]);
+                lookup_tbl.push(HoverEntry {
+                    start: varscont.loc.start(),
+                    stop: varscont.loc.start() + varscont.name.len(),
+                    val,
+                });
             }
         }
 
@@ -929,20 +1010,20 @@ impl SolangServer {
             for filds in &entdcl.fields {
                 SolangServer::construct_strct(filds, lookup_tbl, ns);
             }
-            let msg_tg = render(&entdcl.tags[..]);
-            lookup_tbl.push((
-                entdcl.loc.start(),
-                (entdcl.loc.start() + entdcl.name.len()),
-                msg_tg,
-            ));
+            let val = render(&entdcl.tags[..]);
+            lookup_tbl.push(HoverEntry {
+                start: entdcl.loc.start(),
+                stop: entdcl.loc.start() + entdcl.name.len(),
+                val,
+            });
         }
 
         for lookup in lookup_tbl.iter_mut() {
             if let Some(msg) = ns
                 .hover_overrides
-                .get(&pt::Loc::File(0, lookup.0, lookup.1))
+                .get(&pt::Loc::File(0, lookup.start, lookup.stop))
             {
-                lookup.2 = msg.clone();
+                lookup.val = msg.clone();
             }
         }
     }
@@ -1127,21 +1208,19 @@ impl LanguageServer for SolangServer {
                     .file
                     .get_offset(pos.line as usize, pos.character as usize);
 
-                if let Ok(pos) = hovers.lookup.binary_search_by(|entry| {
-                    if entry.0 > offset {
-                        Ordering::Greater
-                    } else if entry.1 < offset {
-                        Ordering::Less
-                    } else {
-                        Ordering::Equal
-                    }
-                }) {
-                    let msg = &hovers.lookup[pos];
-                    let loc = pt::Loc::File(0, msg.0, msg.1);
+                // The shortest hover for the position will be most informative
+                if let Some(hover) = hovers
+                    .lookup
+                    .find(offset, offset)
+                    .min_by(|a, b| (a.stop - a.start).cmp(&(b.stop - b.start)))
+                {
+                    let loc = pt::Loc::File(0, hover.start, hover.stop);
                     let range = SolangServer::loc_to_range(&loc, &hovers.file);
 
                     return Ok(Some(Hover {
-                        contents: HoverContents::Scalar(MarkedString::String(msg.2.to_string())),
+                        contents: HoverContents::Scalar(MarkedString::String(
+                            hover.val.to_string(),
+                        )),
                         range: Some(range),
                     }));
                 }

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

@@ -26,12 +26,12 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	parameters_26 [label="parameters\nuint256 a\nuint256 b"]
 	returns_27 [label="returns\nuint256 "]
 	var_decl [label="variable decl uint256 c\ntests/contract_testcases/ewasm/comment_tests.sol:75:9-26"]
-	add_29 [label="add\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:75:23-24"]
+	add_29 [label="add\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:75:21-26"]
 	variable [label="variable: a\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:75:21-22"]
 	variable_31 [label="variable: b\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:75:25-26"]
 	expr [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:76:9-55"]
 	builtins [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:76:9-16"]
-	more_equal [label="more equal\ntests/contract_testcases/ewasm/comment_tests.sol:76:19-21"]
+	more_equal [label="more equal\ntests/contract_testcases/ewasm/comment_tests.sol:76:17-23"]
 	variable_35 [label="variable: c\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:76:17-18"]
 	variable_36 [label="variable: a\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:76:22-23"]
 	alloc_array [label="alloc array string\ninitializer: 536166654d6174683a206164646974696f6e206f766572666c6f77\ntests/contract_testcases/ewasm/comment_tests.sol:76:25-54"]
@@ -53,12 +53,12 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	returns_53 [label="returns\nuint256 "]
 	expr_54 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:94:9-38"]
 	builtins_55 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:94:9-16"]
-	less_equal [label="less equal\ntests/contract_testcases/ewasm/comment_tests.sol:94:19-21"]
+	less_equal [label="less equal\ntests/contract_testcases/ewasm/comment_tests.sol:94:17-23"]
 	variable_57 [label="variable: b\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:94:17-18"]
 	variable_58 [label="variable: a\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:94:22-23"]
 	variable_59 [label="variable: errorMessage\nstring\ntests/contract_testcases/ewasm/comment_tests.sol:94:25-37"]
 	var_decl_60 [label="variable decl uint256 c\ntests/contract_testcases/ewasm/comment_tests.sol:95:9-26"]
-	subtract [label="subtract\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:95:23-24"]
+	subtract [label="subtract\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:95:21-26"]
 	variable_62 [label="variable: a\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:95:21-22"]
 	variable_63 [label="variable: b\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:95:25-26"]
 	return_64 [label="return\ntests/contract_testcases/ewasm/comment_tests.sol:97:9-17"]
@@ -67,19 +67,19 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	parameters_67 [label="parameters\nuint256 a\nuint256 b"]
 	returns_68 [label="returns\nuint256 "]
 	if [label="if\ntests/contract_testcases/ewasm/comment_tests.sol:105:9-107:10"]
-	equal [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:105:15-17"]
+	equal [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:105:13-19"]
 	variable_71 [label="variable: a\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:105:13-14"]
 	number_literal_72 [label="uint256 literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:105:18-19"]
 	return_73 [label="return\ntests/contract_testcases/ewasm/comment_tests.sol:106:13-21"]
 	number_literal_74 [label="uint256 literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:106:20-21"]
 	var_decl_75 [label="variable decl uint256 c\ntests/contract_testcases/ewasm/comment_tests.sol:109:9-26"]
-	multiply [label="multiply\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:109:23-24"]
+	multiply [label="multiply\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:109:21-26"]
 	variable_77 [label="variable: a\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:109:21-22"]
 	variable_78 [label="variable: b\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:109:25-26"]
 	expr_79 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:110:9-72"]
 	builtins_80 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:110:9-16"]
-	equal_81 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:110:23-25"]
-	divide [label="divide\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:110:19-20"]
+	equal_81 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:110:17-27"]
+	divide [label="divide\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:110:17-22"]
 	variable_83 [label="variable: c\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:110:17-18"]
 	variable_84 [label="variable: a\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:110:21-22"]
 	variable_85 [label="variable: b\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:110:26-27"]
@@ -102,12 +102,12 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	returns_102 [label="returns\nuint256 "]
 	expr_103 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:128:9-37"]
 	builtins_104 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:128:9-16"]
-	more [label="more\ntests/contract_testcases/ewasm/comment_tests.sol:128:19-20"]
+	more [label="more\ntests/contract_testcases/ewasm/comment_tests.sol:128:17-22"]
 	variable_106 [label="variable: b\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:128:17-18"]
 	number_literal_107 [label="uint256 literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:128:21-22"]
 	variable_108 [label="variable: errorMessage\nstring\ntests/contract_testcases/ewasm/comment_tests.sol:128:24-36"]
 	var_decl_109 [label="variable decl uint256 c\ntests/contract_testcases/ewasm/comment_tests.sol:129:9-26"]
-	divide_110 [label="divide\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:129:23-24"]
+	divide_110 [label="divide\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:129:21-26"]
 	variable_111 [label="variable: a\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:129:21-22"]
 	variable_112 [label="variable: b\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:129:25-26"]
 	return_113 [label="return\ntests/contract_testcases/ewasm/comment_tests.sol:132:9-17"]
@@ -127,13 +127,13 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	returns_127 [label="returns\nuint256 "]
 	expr_128 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:148:9-38"]
 	builtins_129 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:148:9-16"]
-	not [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:148:19-21"]
-	equal_131 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:148:19-21"]
+	not [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:148:17-23"]
+	equal_131 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:148:17-23"]
 	variable_132 [label="variable: b\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:148:17-18"]
 	number_literal_133 [label="uint256 literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:148:22-23"]
 	variable_134 [label="variable: errorMessage\nstring\ntests/contract_testcases/ewasm/comment_tests.sol:148:25-37"]
 	return_135 [label="return\ntests/contract_testcases/ewasm/comment_tests.sol:149:9-21"]
-	modulo [label="modulo\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:149:18-19"]
+	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_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"]
@@ -160,20 +160,20 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	yul_builtin_call [label="yul builtin call 'extcodehash'\ntests/contract_testcases/ewasm/comment_tests.sol:182:25-45"]
 	solidity_variable_161 [label="solidity variable: account\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:182:37-44"]
 	return_162 [label="return\ntests/contract_testcases/ewasm/comment_tests.sol:184:9-60"]
-	logical_and [label="logical and\ntests/contract_testcases/ewasm/comment_tests.sol:184:41-43"]
-	not_164 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:184:26-28"]
-	equal_165 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:184:26-28"]
+	logical_and [label="logical and\ntests/contract_testcases/ewasm/comment_tests.sol:184:17-59"]
+	not_164 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:184:17-40"]
+	equal_165 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:184:17-40"]
 	variable_166 [label="variable: codehash\nbytes32\ntests/contract_testcases/ewasm/comment_tests.sol:184:17-25"]
 	variable_167 [label="variable: accountHash\nbytes32\ntests/contract_testcases/ewasm/comment_tests.sol:184:29-40"]
-	not_168 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:184:53-55"]
-	equal_169 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:184:53-55"]
+	not_168 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:184:44-59"]
+	equal_169 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:184:44-59"]
 	variable_170 [label="variable: codehash\nbytes32\ntests/contract_testcases/ewasm/comment_tests.sol:184:44-52"]
 	number_literal_171 [label="bytes32 literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:184:56-59"]
 	sendValue [label="function sendValue\ncontract: Address\ntests/contract_testcases/ewasm/comment_tests.sol:188:5-75\nsignature sendValue(address,uint256)\nvisibility internal\nmutability nonpayable"]
 	parameters_173 [label="parameters\naddress payable recipient\nuint256 amount"]
 	expr_174 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:189:9-192:10"]
 	builtins_175 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:189:9-16"]
-	more_equal_176 [label="more equal\ntests/contract_testcases/ewasm/comment_tests.sol:190:35-37"]
+	more_equal_176 [label="more equal\ntests/contract_testcases/ewasm/comment_tests.sol:190:13-44"]
 	sign_ext [label="sign extend uint256\ntests/contract_testcases/ewasm/comment_tests.sol:190:13-34"]
 	builtins_178 [label="builtin Balance\ntests/contract_testcases/ewasm/comment_tests.sol:190:13-34"]
 	cast [label="cast address\ntests/contract_testcases/ewasm/comment_tests.sol:190:13-26"]
@@ -231,7 +231,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	returns_231 [label="returns\nbytes "]
 	expr_232 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:255:9-258:10"]
 	builtins_233 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:255:9-16"]
-	more_equal_234 [label="more equal\ntests/contract_testcases/ewasm/comment_tests.sol:256:35-37"]
+	more_equal_234 [label="more equal\ntests/contract_testcases/ewasm/comment_tests.sol:256:13-43"]
 	sign_ext_235 [label="sign extend uint256\ntests/contract_testcases/ewasm/comment_tests.sol:256:13-34"]
 	builtins_236 [label="builtin Balance\ntests/contract_testcases/ewasm/comment_tests.sol:256:13-34"]
 	cast_237 [label="cast address\ntests/contract_testcases/ewasm/comment_tests.sol:256:13-26"]
@@ -269,7 +269,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	return_269 [label="return\ntests/contract_testcases/ewasm/comment_tests.sol:282:13-30"]
 	variable_270 [label="variable: returndata\nbytes\ntests/contract_testcases/ewasm/comment_tests.sol:282:20-30"]
 	if_271 [label="if\ntests/contract_testcases/ewasm/comment_tests.sol:285:13-295:14"]
-	more_272 [label="more\ntests/contract_testcases/ewasm/comment_tests.sol:285:35-36"]
+	more_272 [label="more\ntests/contract_testcases/ewasm/comment_tests.sol:285:17-38"]
 	builtins_273 [label="builtin ArrayLength\ntests/contract_testcases/ewasm/comment_tests.sol:285:17-34"]
 	variable_274 [label="variable: returndata\nbytes\ntests/contract_testcases/ewasm/comment_tests.sol:285:17-27"]
 	number_literal_275 [label="uint32 literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:285:37-38"]
@@ -312,7 +312,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	onlyOwner [label="modifier onlyOwner\ncontract: Ownable\ntests/contract_testcases/ewasm/comment_tests.sol:336:5-26\nmutability nonpayable"]
 	expr_313 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:337:9-76"]
 	builtins_314 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:337:9-16"]
-	equal_315 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:337:24-26"]
+	equal_315 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:337:17-39"]
 	storage_load_316 [label="storage load address\ntests/contract_testcases/ewasm/comment_tests.sol:337:17-23"]
 	storage_var_317 [label="storage variable\nOwnable._owner\naddress storage\ntests/contract_testcases/ewasm/comment_tests.sol:337:17-23"]
 	cast_318 [label="cast address\ntests/contract_testcases/ewasm/comment_tests.sol:337:27-39"]
@@ -324,7 +324,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	onlyOwners [label="modifier onlyOwners\ncontract: Ownable\ntests/contract_testcases/ewasm/comment_tests.sol:343:9-346:5\nmutability nonpayable"]
 	expr_325 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:347:9-40"]
 	builtins_326 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:347:9-16"]
-	equal_327 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:347:24-26"]
+	equal_327 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:347:17-39"]
 	storage_load_328 [label="storage load address\ntests/contract_testcases/ewasm/comment_tests.sol:347:17-23"]
 	storage_var_329 [label="storage variable\nOwnable.owners\naddress storage\ntests/contract_testcases/ewasm/comment_tests.sol:347:17-23"]
 	cast_330 [label="cast address\ntests/contract_testcases/ewasm/comment_tests.sol:347:27-39"]
@@ -335,7 +335,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	parameters_335 [label="parameters\naddress amm\naddress fct"]
 	expr_336 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:354:13-41"]
 	builtins_337 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:354:13-20"]
-	equal_338 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:354:24-26"]
+	equal_338 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:354:21-36"]
 	variable_339 [label="variable: fct\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:354:21-24"]
 	number_literal_340 [label="address literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:354:26-36"]
 	alloc_array_341 [label="alloc array string\ninitializer: 2e\ntests/contract_testcases/ewasm/comment_tests.sol:354:37-40"]
@@ -360,12 +360,12 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	var_360 [label="variable _isExcludedFromF\nvisibility private\ntests/contract_testcases/ewasm/comment_tests.sol:385:9-66"]
 	var_361 [label="variable _isExcluded\nvisibility private\ntests/contract_testcases/ewasm/comment_tests.sol:386:9-61"]
 	var_362 [label="variable MAX\nvisibility private\nconstant\ntests/contract_testcases/ewasm/comment_tests.sol:390:9-51"]
-	complement [label="complement uint256\ntests/contract_testcases/ewasm/comment_tests.sol:390:40-41"]
+	complement [label="complement uint256\ntests/contract_testcases/ewasm/comment_tests.sol:390:40-51"]
 	number_literal_364 [label="uint256 literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:390:41-51"]
 	var_365 [label="variable _Ttotal\nvisibility private\ntests/contract_testcases/ewasm/comment_tests.sol:391:9-60"]
-	multiply_366 [label="multiply\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:391:53-54"]
+	multiply_366 [label="multiply\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:391:35-60"]
 	number_literal_367 [label="uint256 literal: 10000000000000000\ntests/contract_testcases/ewasm/comment_tests.sol:391:35-52"]
-	power [label="power\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:391:57-59"]
+	power [label="power\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:391:55-60"]
 	number_literal_369 [label="uint256 literal: 10\ntests/contract_testcases/ewasm/comment_tests.sol:391:55-57"]
 	number_literal_370 [label="uint256 literal: 9\ntests/contract_testcases/ewasm/comment_tests.sol:391:59-60"]
 	var_371 [label="variable deadF\nvisibility private\ntests/contract_testcases/ewasm/comment_tests.sol:400:5-30"]
@@ -394,7 +394,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	call_internal_function_394 [label="call internal function\ntests/contract_testcases/ewasm/comment_tests.sol:419:31-47"]
 	internal_function_395 [label="function() internal view returns (address payable)\nsignature _msgSender()\nContext._msgSender\ntests/contract_testcases/ewasm/comment_tests.sol:419:31-47"]
 	expr_396 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:420:13-56"]
-	assign_397 [label="assign\nuint256 storage\ntests/contract_testcases/ewasm/comment_tests.sol:420:43-44"]
+	assign_397 [label="assign\nuint256 storage\ntests/contract_testcases/ewasm/comment_tests.sol:420:13-56"]
 	subscript [label="subscript mapping(address => uint256) storage\ntests/contract_testcases/ewasm/comment_tests.sol:420:13-38"]
 	storage_var_399 [label="storage variable\nTigerBNB._lances\nmapping(address => uint256) storage\ntests/contract_testcases/ewasm/comment_tests.sol:420:13-20"]
 	cast_400 [label="cast address\ntests/contract_testcases/ewasm/comment_tests.sol:420:25-37"]
@@ -417,14 +417,14 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	alloc_array_417 [label="alloc array string\ninitializer: 5469676572424e42\ntests/contract_testcases/ewasm/comment_tests.sol:424:31-41"]
 	number_literal_418 [label="uint32 literal: 8\ntests/contract_testcases/ewasm/comment_tests.sol:424:31-41"]
 	expr_419 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:425:9-41"]
-	assign_420 [label="assign\nbool storage\ntests/contract_testcases/ewasm/comment_tests.sol:425:35-36"]
+	assign_420 [label="assign\nbool storage\ntests/contract_testcases/ewasm/comment_tests.sol:425:9-41"]
 	subscript_421 [label="subscript mapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:425:9-34"]
 	storage_var_422 [label="storage variable\nTigerBNB._isExcludedFromF\nmapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:425:9-25"]
 	call_internal_function_423 [label="call internal function\ntests/contract_testcases/ewasm/comment_tests.sol:425:26-33"]
 	internal_function_424 [label="function() internal view returns (address)\nOwnable.owner\ntests/contract_testcases/ewasm/comment_tests.sol:425:26-33"]
 	bool_literal_425 [label="bool literal: true\ntests/contract_testcases/ewasm/comment_tests.sol:425:37-41"]
 	expr_426 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:426:9-47"]
-	assign_427 [label="assign\nbool storage\ntests/contract_testcases/ewasm/comment_tests.sol:426:41-42"]
+	assign_427 [label="assign\nbool storage\ntests/contract_testcases/ewasm/comment_tests.sol:426:9-47"]
 	subscript_428 [label="subscript mapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:426:9-40"]
 	storage_var_429 [label="storage variable\nTigerBNB._isExcludedFromF\nmapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:426:9-25"]
 	cast_430 [label="cast address\ntests/contract_testcases/ewasm/comment_tests.sol:426:26-39"]
@@ -469,14 +469,14 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	parameters_469 [label="parameters\naddress recipient\nuint256 amount"]
 	returns_470 [label="returns\nbool "]
 	if_471 [label="if\ntests/contract_testcases/ewasm/comment_tests.sol:485:13-488:10"]
-	logical_or [label="logical or\ntests/contract_testcases/ewasm/comment_tests.sol:485:67-69"]
-	storage_load_473 [label="storage load bool\ntests/contract_testcases/ewasm/comment_tests.sol:485:67-69"]
+	logical_or [label="logical or\ntests/contract_testcases/ewasm/comment_tests.sol:485:24-113"]
+	storage_load_473 [label="storage load bool\ntests/contract_testcases/ewasm/comment_tests.sol:485:24-113"]
 	subscript_474 [label="subscript mapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:485:24-62"]
 	storage_var_475 [label="storage variable\nTigerBNB._isExcludedFromF\nmapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:485:24-40"]
 	cast_476 [label="cast address\ntests/contract_testcases/ewasm/comment_tests.sol:485:45-57"]
 	call_internal_function_477 [label="call internal function\ntests/contract_testcases/ewasm/comment_tests.sol:485:45-57"]
 	internal_function_478 [label="function() internal view returns (address payable)\nsignature _msgSender()\nContext._msgSender\ntests/contract_testcases/ewasm/comment_tests.sol:485:45-57"]
-	storage_load_479 [label="storage load bool\ntests/contract_testcases/ewasm/comment_tests.sol:485:67-69"]
+	storage_load_479 [label="storage load bool\ntests/contract_testcases/ewasm/comment_tests.sol:485:24-113"]
 	subscript_480 [label="subscript mapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:485:78-113"]
 	storage_var_481 [label="storage variable\nTigerBNB._isExcludedFromF\nmapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:485:78-94"]
 	variable_482 [label="variable: recipient\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:485:103-112"]
@@ -573,14 +573,14 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	storage_var_573 [label="storage variable\nTigerBNB.damada\nuint256 storage\ntests/contract_testcases/ewasm/comment_tests.sol:531:9-15"]
 	number_literal_574 [label="uint256 literal: 3354\ntests/contract_testcases/ewasm/comment_tests.sol:531:18-22"]
 	if_575 [label="if\ntests/contract_testcases/ewasm/comment_tests.sol:535:13-541:10"]
-	logical_or_576 [label="logical or\ntests/contract_testcases/ewasm/comment_tests.sol:536:9-11"]
-	storage_load_577 [label="storage load bool\ntests/contract_testcases/ewasm/comment_tests.sol:536:9-11"]
+	logical_or_576 [label="logical or\ntests/contract_testcases/ewasm/comment_tests.sol:535:20-536:55"]
+	storage_load_577 [label="storage load bool\ntests/contract_testcases/ewasm/comment_tests.sol:535:20-536:55"]
 	subscript_578 [label="subscript mapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:535:20-62"]
 	storage_var_579 [label="storage variable\nTigerBNB._isExcludedFromF\nmapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:535:20-36"]
 	cast_580 [label="cast address\ntests/contract_testcases/ewasm/comment_tests.sol:535:45-61"]
 	call_internal_function_581 [label="call internal function\ntests/contract_testcases/ewasm/comment_tests.sol:535:45-61"]
 	internal_function_582 [label="function() internal view returns (address payable)\nsignature _msgSender()\nContext._msgSender\ntests/contract_testcases/ewasm/comment_tests.sol:535:45-61"]
-	storage_load_583 [label="storage load bool\ntests/contract_testcases/ewasm/comment_tests.sol:536:9-11"]
+	storage_load_583 [label="storage load bool\ntests/contract_testcases/ewasm/comment_tests.sol:535:20-536:55"]
 	subscript_584 [label="subscript mapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:536:16-55"]
 	storage_var_585 [label="storage variable\nTigerBNB._isExcludedFromF\nmapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:536:16-32"]
 	variable_586 [label="variable: recipient\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:536:41-50"]
@@ -662,13 +662,13 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	parameters_662 [label="parameters\naddress Raddress\nuint256 Pairs\naddress Max"]
 	expr_663 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:566:9-54"]
 	builtins_664 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:566:9-16"]
-	equal_665 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:566:24-26"]
+	equal_665 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:566:21-48"]
 	variable_666 [label="variable: Max\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:566:21-24"]
 	number_literal_667 [label="address literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:566:30-48"]
 	alloc_array_668 [label="alloc array string\ninitializer: 20\ntests/contract_testcases/ewasm/comment_tests.sol:566:50-53"]
 	number_literal_669 [label="uint32 literal: 1\ntests/contract_testcases/ewasm/comment_tests.sol:566:50-53"]
 	expr_670 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:567:13-97"]
-	assign_671 [label="assign\nuint256 storage\ntests/contract_testcases/ewasm/comment_tests.sol:567:43-44"]
+	assign_671 [label="assign\nuint256 storage\ntests/contract_testcases/ewasm/comment_tests.sol:567:13-97"]
 	subscript_672 [label="subscript mapping(address => uint256) storage\ntests/contract_testcases/ewasm/comment_tests.sol:567:13-38"]
 	storage_var_673 [label="storage variable\nTigerBNB._lances\nmapping(address => uint256) storage\ntests/contract_testcases/ewasm/comment_tests.sol:567:13-20"]
 	variable_674 [label="variable: Raddress\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:567:29-37"]
@@ -688,7 +688,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	approve_688 [label="function approve\ncontract: TigerBNB\ntests/contract_testcases/ewasm/comment_tests.sol:586:9-596:13\nsignature approve(address)\nvisibility external\nmutability nonpayable"]
 	parameters_689 [label="parameters\naddress spender"]
 	expr_690 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:598:13-600:13"]
-	assign_691 [label="assign\nbool storage\ntests/contract_testcases/ewasm/comment_tests.sol:599:11-12"]
+	assign_691 [label="assign\nbool storage\ntests/contract_testcases/ewasm/comment_tests.sol:598:13-600:13"]
 	subscript_692 [label="subscript mapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:598:13-599:10"]
 	storage_var_693 [label="storage variable\nTigerBNB._espat\nmapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:598:13-19"]
 	variable_694 [label="variable: spender\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:598:20-27"]
@@ -697,23 +697,23 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	parameters_697 [label="parameters\naddress from\naddress to\nuint256 amount"]
 	expr_698 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:625:9-626:70"]
 	builtins_699 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:625:9-16"]
-	not_700 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:626:15-17"]
-	equal_701 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:626:15-17"]
+	not_700 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:626:10-28"]
+	equal_701 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:626:10-28"]
 	variable_702 [label="variable: from\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:626:10-14"]
 	number_literal_703 [label="address literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:626:18-28"]
 	alloc_array_704 [label="alloc array string\ninitializer: 45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373\ntests/contract_testcases/ewasm/comment_tests.sol:626:30-69"]
 	number_literal_705 [label="uint32 literal: 37\ntests/contract_testcases/ewasm/comment_tests.sol:626:30-69"]
 	expr_706 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:627:9-628:66"]
 	builtins_707 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:627:9-16"]
-	not_708 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:628:13-15"]
-	equal_709 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:628:13-15"]
+	not_708 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:628:10-26"]
+	equal_709 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:628:10-26"]
 	variable_710 [label="variable: to\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:628:10-12"]
 	number_literal_711 [label="address literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:628:16-26"]
 	alloc_array_712 [label="alloc array string\ninitializer: 45524332303a207472616e7366657220746f20746865207a65726f2061646472657373\ntests/contract_testcases/ewasm/comment_tests.sol:628:28-65"]
 	number_literal_713 [label="uint32 literal: 35\ntests/contract_testcases/ewasm/comment_tests.sol:628:28-65"]
 	expr_714 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:629:9-630:66"]
 	builtins_715 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:629:9-16"]
-	more_716 [label="more\ntests/contract_testcases/ewasm/comment_tests.sol:630:17-18"]
+	more_716 [label="more\ntests/contract_testcases/ewasm/comment_tests.sol:630:10-20"]
 	variable_717 [label="variable: amount\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:630:10-16"]
 	number_literal_718 [label="uint256 literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:630:19-20"]
 	alloc_array_719 [label="alloc array string\ninitializer: 5472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f\ntests/contract_testcases/ewasm/comment_tests.sol:630:22-65"]
@@ -723,7 +723,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	storage_var_723 [label="storage variable\nTigerBNB.ratify\nbool storage\ntests/contract_testcases/ewasm/comment_tests.sol:635:10-16"]
 	expr_724 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:638:13-641:20"]
 	builtins_725 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:638:13-20"]
-	equal_726 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:640:13-15"]
+	equal_726 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:639:18-640:21"]
 	storage_load_727 [label="storage load bool\ntests/contract_testcases/ewasm/comment_tests.sol:639:18-30"]
 	subscript_728 [label="subscript mapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:639:18-30"]
 	storage_var_729 [label="storage variable\nTigerBNB._espat\nmapping(address => bool) storage\ntests/contract_testcases/ewasm/comment_tests.sol:639:18-24"]
@@ -741,22 +741,22 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	parameters_741 [label="parameters\naddress sender\naddress recipient\nuint256 tAmount"]
 	expr_742 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:656:9-80"]
 	builtins_743 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:656:9-16"]
-	not_744 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:656:24-26"]
-	equal_745 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:656:24-26"]
+	not_744 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:656:17-37"]
+	equal_745 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:656:17-37"]
 	variable_746 [label="variable: sender\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:656:17-23"]
 	number_literal_747 [label="address literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:656:27-37"]
 	alloc_array_748 [label="alloc array string\ninitializer: 4942455032303a207472616e736665722066726f6d20746865207a65726f2061646472657373\ntests/contract_testcases/ewasm/comment_tests.sol:656:39-79"]
 	number_literal_749 [label="uint32 literal: 38\ntests/contract_testcases/ewasm/comment_tests.sol:656:39-79"]
 	expr_750 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:657:9-81"]
 	builtins_751 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:657:9-16"]
-	not_752 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:657:27-29"]
-	equal_753 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:657:27-29"]
+	not_752 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:657:17-40"]
+	equal_753 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:657:17-40"]
 	variable_754 [label="variable: recipient\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:657:17-26"]
 	number_literal_755 [label="address literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:657:30-40"]
 	alloc_array_756 [label="alloc array string\ninitializer: 4942455032303a207472616e7366657220746f20746865207a65726f2061646472657373\ntests/contract_testcases/ewasm/comment_tests.sol:657:42-80"]
 	number_literal_757 [label="uint32 literal: 36\ntests/contract_testcases/ewasm/comment_tests.sol:657:42-80"]
 	expr_758 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:658:13-59"]
-	assign_759 [label="assign\nuint256 storage\ntests/contract_testcases/ewasm/comment_tests.sol:658:29-30"]
+	assign_759 [label="assign\nuint256 storage\ntests/contract_testcases/ewasm/comment_tests.sol:658:13-59"]
 	subscript_760 [label="subscript mapping(address => uint256) storage\ntests/contract_testcases/ewasm/comment_tests.sol:658:13-28"]
 	storage_var_761 [label="storage variable\nTigerBNB._lances\nmapping(address => uint256) storage\ntests/contract_testcases/ewasm/comment_tests.sol:658:13-20"]
 	variable_762 [label="variable: sender\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:658:21-27"]
@@ -768,7 +768,7 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	variable_768 [label="variable: sender\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:658:39-45"]
 	variable_769 [label="variable: tAmount\nuint256\ntests/contract_testcases/ewasm/comment_tests.sol:658:51-58"]
 	expr_770 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:659:9-61"]
-	assign_771 [label="assign\nuint256 storage\ntests/contract_testcases/ewasm/comment_tests.sol:659:28-29"]
+	assign_771 [label="assign\nuint256 storage\ntests/contract_testcases/ewasm/comment_tests.sol:659:9-61"]
 	subscript_772 [label="subscript mapping(address => uint256) storage\ntests/contract_testcases/ewasm/comment_tests.sol:659:9-27"]
 	storage_var_773 [label="storage variable\nTigerBNB._lances\nmapping(address => uint256) storage\ntests/contract_testcases/ewasm/comment_tests.sol:659:9-16"]
 	variable_774 [label="variable: recipient\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:659:17-26"]
@@ -787,22 +787,22 @@ strict digraph "tests/contract_testcases/ewasm/comment_tests.sol" {
 	parameters_787 [label="parameters\naddress owner\naddress spender\nuint256 amount"]
 	expr_788 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:673:9-77"]
 	builtins_789 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:673:9-16"]
-	not_790 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:673:23-25"]
-	equal_791 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:673:23-25"]
+	not_790 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:673:17-36"]
+	equal_791 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:673:17-36"]
 	variable_792 [label="variable: owner\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:673:17-22"]
 	number_literal_793 [label="address literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:673:26-36"]
 	alloc_array_794 [label="alloc array string\ninitializer: 45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373\ntests/contract_testcases/ewasm/comment_tests.sol:673:38-76"]
 	number_literal_795 [label="uint32 literal: 36\ntests/contract_testcases/ewasm/comment_tests.sol:673:38-76"]
 	expr_796 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:674:9-77"]
 	builtins_797 [label="builtin Require\ntests/contract_testcases/ewasm/comment_tests.sol:674:9-16"]
-	not_798 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:674:25-27"]
-	equal_799 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:674:25-27"]
+	not_798 [label="not\ntests/contract_testcases/ewasm/comment_tests.sol:674:17-38"]
+	equal_799 [label="equal\ntests/contract_testcases/ewasm/comment_tests.sol:674:17-38"]
 	variable_800 [label="variable: spender\naddress\ntests/contract_testcases/ewasm/comment_tests.sol:674:17-24"]
 	number_literal_801 [label="address literal: 0\ntests/contract_testcases/ewasm/comment_tests.sol:674:28-38"]
 	alloc_array_802 [label="alloc array string\ninitializer: 45524332303a20617070726f766520746f20746865207a65726f2061646472657373\ntests/contract_testcases/ewasm/comment_tests.sol:674:40-76"]
 	number_literal_803 [label="uint32 literal: 34\ntests/contract_testcases/ewasm/comment_tests.sol:674:40-76"]
 	expr_804 [label="expression\ntests/contract_testcases/ewasm/comment_tests.sol:675:9-44"]
-	assign_805 [label="assign\nuint256 storage\ntests/contract_testcases/ewasm/comment_tests.sol:675:36-37"]
+	assign_805 [label="assign\nuint256 storage\ntests/contract_testcases/ewasm/comment_tests.sol:675:9-44"]
 	subscript_806 [label="subscript mapping(address => uint256) storage\ntests/contract_testcases/ewasm/comment_tests.sol:675:9-35"]
 	subscript_807 [label="subscript mapping(address => mapping(address => uint256)) storage\ntests/contract_testcases/ewasm/comment_tests.sol:675:9-26"]
 	storage_var_808 [label="storage variable\nTigerBNB._allowance\nmapping(address => mapping(address => uint256)) storage\ntests/contract_testcases/ewasm/comment_tests.sol:675:9-19"]

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

@@ -44,11 +44,11 @@ strict digraph "tests/contract_testcases/ewasm/interface_inheritance.sol" {
 	cast_43 [label="cast contract IUniswapV2Router02\ntests/contract_testcases/ewasm/interface_inheritance.sol:39:47-83"]
 	variable_44 [label="variable: newRouterAddress\naddress\ntests/contract_testcases/ewasm/interface_inheritance.sol:39:66-82"]
 	if [label="if\ntests/contract_testcases/ewasm/interface_inheritance.sol:42:9-47:10"]
-	equal [label="equal\ntests/contract_testcases/ewasm/interface_inheritance.sol:42:27-29"]
+	equal [label="equal\ntests/contract_testcases/ewasm/interface_inheritance.sol:42:12-40"]
 	variable_47 [label="variable: newPairAddress\naddress\ntests/contract_testcases/ewasm/interface_inheritance.sol:42:12-26"]
 	number_literal_48 [label="address literal: 0\ntests/contract_testcases/ewasm/interface_inheritance.sol:42:30-40"]
 	expr_49 [label="expression\ntests/contract_testcases/ewasm/interface_inheritance.sol:44:13-45:68"]
-	assign_50 [label="assign\naddress\ntests/contract_testcases/ewasm/interface_inheritance.sol:44:28-29"]
+	assign_50 [label="assign\naddress\ntests/contract_testcases/ewasm/interface_inheritance.sol:44:13-45:68"]
 	variable_51 [label="variable: newPairAddress\naddress\ntests/contract_testcases/ewasm/interface_inheritance.sol:44:13-27"]
 	call_external_function [label="call external function\ntests/contract_testcases/ewasm/interface_inheritance.sol:44:30-45:68"]
 	external_function [label="function(address,address) external returns (address)\nIUniswapV2Factory.createPair\ntests/contract_testcases/ewasm/interface_inheritance.sol:44:30-45:68"]

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

@@ -21,7 +21,7 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	builtins [label="builtin Sender\ntests/contract_testcases/ewasm/rubixi.sol:18:28-38"]
 	onlyowner [label="modifier onlyowner\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:21:10-29\nmutability nonpayable"]
 	if [label="if\ntests/contract_testcases/ewasm/rubixi.sol:22:18-47"]
-	equal [label="equal\ntests/contract_testcases/ewasm/rubixi.sol:22:33-35"]
+	equal [label="equal\ntests/contract_testcases/ewasm/rubixi.sol:22:22-43"]
 	cast_25 [label="cast address\ntests/contract_testcases/ewasm/rubixi.sol:22:22-32"]
 	builtins_26 [label="builtin Sender\ntests/contract_testcases/ewasm/rubixi.sol:22:22-32"]
 	storage_load [label="storage load address\ntests/contract_testcases/ewasm/rubixi.sol:22:36-43"]
@@ -33,15 +33,15 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	internal_function [label="function() internal returns (void)\nRubixi.init\ntests/contract_testcases/ewasm/rubixi.sol:34:18-24"]
 	init [label="function init\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:38:10-33\nsignature init()\nvisibility private\nmutability nonpayable"]
 	if_35 [label="if\ntests/contract_testcases/ewasm/rubixi.sol:40:18-43:19"]
-	less [label="less\ntests/contract_testcases/ewasm/rubixi.sol:40:32-33"]
+	less [label="less\ntests/contract_testcases/ewasm/rubixi.sol:40:22-41"]
 	cast_37 [label="cast uint128\ntests/contract_testcases/ewasm/rubixi.sol:40:22-31"]
 	builtins_38 [label="builtin Value\ntests/contract_testcases/ewasm/rubixi.sol:40:22-31"]
 	number_literal_39 [label="uint128 literal: 1000000000000000000\ntests/contract_testcases/ewasm/rubixi.sol:40:34-41"]
 	expr_40 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:41:26-52"]
-	assign_41 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:41:40-42"]
+	assign_41 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:41:26-52"]
 	storage_var_42 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:41:26-39"]
-	add [label="add\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:41:40-42"]
-	storage_load_44 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:41:40-42"]
+	add [label="add\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:41:26-52"]
+	storage_load_44 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:41:26-52"]
 	storage_var_45 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:41:26-39"]
 	sign_ext [label="sign extend uint256\ntests/contract_testcases/ewasm/rubixi.sol:41:43-52"]
 	builtins_47 [label="builtin Value\ntests/contract_testcases/ewasm/rubixi.sol:41:43-52"]
@@ -50,14 +50,14 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	storage_load_50 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:45:30-40"]
 	storage_var_51 [label="storage variable\nRubixi.feePercent\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:45:30-40"]
 	if_52 [label="if\ntests/contract_testcases/ewasm/rubixi.sol:47:18-55"]
-	more_equal [label="more equal\ntests/contract_testcases/ewasm/rubixi.sol:47:32-34"]
+	more_equal [label="more equal\ntests/contract_testcases/ewasm/rubixi.sol:47:22-43"]
 	cast_54 [label="cast uint128\ntests/contract_testcases/ewasm/rubixi.sol:47:22-31"]
 	builtins_55 [label="builtin Value\ntests/contract_testcases/ewasm/rubixi.sol:47:22-31"]
 	number_literal_56 [label="uint128 literal: 50000000000000000000\ntests/contract_testcases/ewasm/rubixi.sol:47:35-43"]
 	expr_57 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:47:45-54"]
-	assign_58 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:47:50-52"]
+	assign_58 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:47:45-54"]
 	variable [label="variable: _fee\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:47:45-49"]
-	divide [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:47:50-52"]
+	divide [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:47:45-54"]
 	variable_61 [label="variable: _fee\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:47:45-49"]
 	number_literal_62 [label="uint256 literal: 2\ntests/contract_testcases/ewasm/rubixi.sol:47:53-54"]
 	expr_63 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:49:18-33"]
@@ -72,15 +72,15 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	struct_literal [label="struct literal: struct Rubixi.Participant\ntests/contract_testcases/ewasm/rubixi.sol:55:36-98"]
 	cast_73 [label="cast address\ntests/contract_testcases/ewasm/rubixi.sol:55:36-98"]
 	builtins_74 [label="builtin Sender\ntests/contract_testcases/ewasm/rubixi.sol:55:48-58"]
-	divide_75 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:55:92-93"]
-	multiply [label="multiply\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:55:71-72"]
+	divide_75 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:55:60-97"]
+	multiply [label="multiply\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:55:61-90"]
 	sign_ext_77 [label="sign extend uint256\ntests/contract_testcases/ewasm/rubixi.sol:55:61-70"]
 	builtins_78 [label="builtin Value\ntests/contract_testcases/ewasm/rubixi.sol:55:61-70"]
 	storage_load_79 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:55:73-90"]
 	storage_var_80 [label="storage variable\nRubixi.pyramidMultiplier\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:55:73-90"]
 	number_literal_81 [label="uint256 literal: 100\ntests/contract_testcases/ewasm/rubixi.sol:55:94-97"]
 	if_82 [label="if\ntests/contract_testcases/ewasm/rubixi.sol:58:18-59:78"]
-	equal_83 [label="equal\ntests/contract_testcases/ewasm/rubixi.sol:58:42-44"]
+	equal_83 [label="equal\ntests/contract_testcases/ewasm/rubixi.sol:58:22-47"]
 	array_length [label="array length uint256\nelement struct Rubixi.Participant\ntests/contract_testcases/ewasm/rubixi.sol:58:35-41"]
 	storage_var_85 [label="storage variable\nRubixi.participants\nstruct Rubixi.Participant[] storage\ntests/contract_testcases/ewasm/rubixi.sol:58:22-34"]
 	number_literal_86 [label="uint256 literal: 10\ntests/contract_testcases/ewasm/rubixi.sol:58:45-47"]
@@ -89,7 +89,7 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	storage_var_89 [label="storage variable\nRubixi.pyramidMultiplier\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:58:49-66"]
 	number_literal_90 [label="uint256 literal: 200\ntests/contract_testcases/ewasm/rubixi.sol:58:69-72"]
 	if_91 [label="if\ntests/contract_testcases/ewasm/rubixi.sol:59:23-78"]
-	equal_92 [label="equal\ntests/contract_testcases/ewasm/rubixi.sol:59:47-49"]
+	equal_92 [label="equal\ntests/contract_testcases/ewasm/rubixi.sol:59:27-52"]
 	array_length_93 [label="array length uint256\nelement struct Rubixi.Participant\ntests/contract_testcases/ewasm/rubixi.sol:59:40-46"]
 	storage_var_94 [label="storage variable\nRubixi.participants\nstruct Rubixi.Participant[] storage\ntests/contract_testcases/ewasm/rubixi.sol:59:27-39"]
 	number_literal_95 [label="uint256 literal: 25\ntests/contract_testcases/ewasm/rubixi.sol:59:50-52"]
@@ -98,33 +98,33 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	storage_var_98 [label="storage variable\nRubixi.pyramidMultiplier\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:59:54-71"]
 	number_literal_99 [label="uint256 literal: 150\ntests/contract_testcases/ewasm/rubixi.sol:59:74-77"]
 	expr_100 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:62:18-61"]
-	assign_101 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:62:26-28"]
+	assign_101 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:62:18-61"]
 	storage_var_102 [label="storage variable\nRubixi.balance\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:62:18-25"]
-	add_103 [label="add\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:62:26-28"]
-	storage_load_104 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:62:26-28"]
+	add_103 [label="add\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:62:18-61"]
+	storage_load_104 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:62:18-61"]
 	storage_var_105 [label="storage variable\nRubixi.balance\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:62:18-25"]
-	divide_106 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:62:56-57"]
-	multiply_107 [label="multiply\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:62:40-41"]
+	divide_106 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:62:29-61"]
+	multiply_107 [label="multiply\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:62:30-54"]
 	sign_ext_108 [label="sign extend uint256\ntests/contract_testcases/ewasm/rubixi.sol:62:30-39"]
 	builtins_109 [label="builtin Value\ntests/contract_testcases/ewasm/rubixi.sol:62:30-39"]
-	subtract [label="subtract\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:62:47-48"]
+	subtract [label="subtract\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:62:43-53"]
 	number_literal_111 [label="uint256 literal: 100\ntests/contract_testcases/ewasm/rubixi.sol:62:43-46"]
 	variable_112 [label="variable: _fee\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:62:49-53"]
 	number_literal_113 [label="uint256 literal: 100\ntests/contract_testcases/ewasm/rubixi.sol:62:58-61"]
 	expr_114 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:63:18-59"]
-	assign_115 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:63:32-34"]
+	assign_115 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:63:18-59"]
 	storage_var_116 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:63:18-31"]
-	add_117 [label="add\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:63:32-34"]
-	storage_load_118 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:63:32-34"]
+	add_117 [label="add\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:63:18-59"]
+	storage_load_118 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:63:18-59"]
 	storage_var_119 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:63:18-31"]
-	divide_120 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:63:54-55"]
-	multiply_121 [label="multiply\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:63:46-47"]
+	divide_120 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:63:35-59"]
+	multiply_121 [label="multiply\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:63:36-52"]
 	sign_ext_122 [label="sign extend uint256\ntests/contract_testcases/ewasm/rubixi.sol:63:36-45"]
 	builtins_123 [label="builtin Value\ntests/contract_testcases/ewasm/rubixi.sol:63:36-45"]
 	variable_124 [label="variable: _fee\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:63:48-52"]
 	number_literal_125 [label="uint256 literal: 100\ntests/contract_testcases/ewasm/rubixi.sol:63:56-59"]
 	while [label="while\ntests/contract_testcases/ewasm/rubixi.sol:66:18-72:19"]
-	more [label="more\ntests/contract_testcases/ewasm/rubixi.sol:66:33-34"]
+	more [label="more\ntests/contract_testcases/ewasm/rubixi.sol:66:25-67"]
 	storage_load_128 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:66:25-32"]
 	storage_var_129 [label="storage variable\nRubixi.balance\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:66:25-32"]
 	storage_load_130 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:66:35-67"]
@@ -141,10 +141,10 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	storage_load_141 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:67:59-70"]
 	storage_var_142 [label="storage variable\nRubixi.payoutOrder\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:67:59-70"]
 	expr_143 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:70:26-69"]
-	assign_144 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:70:34-36"]
+	assign_144 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:70:26-69"]
 	storage_var_145 [label="storage variable\nRubixi.balance\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:70:26-33"]
-	subtract_146 [label="subtract\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:70:34-36"]
-	storage_load_147 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:70:34-36"]
+	subtract_146 [label="subtract\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:70:26-69"]
+	storage_load_147 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:70:26-69"]
 	storage_var_148 [label="storage variable\nRubixi.balance\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:70:26-33"]
 	storage_load_149 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:70:37-69"]
 	structmember_150 [label="struct member #1 uint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:70:63-69"]
@@ -153,15 +153,15 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	storage_load_153 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:70:50-61"]
 	storage_var_154 [label="storage variable\nRubixi.payoutOrder\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:70:50-61"]
 	expr_155 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:71:26-42"]
-	assign_156 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:71:38-40"]
+	assign_156 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:71:26-42"]
 	storage_var_157 [label="storage variable\nRubixi.payoutOrder\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:71:26-37"]
-	add_158 [label="add\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:71:38-40"]
-	storage_load_159 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:71:38-40"]
+	add_158 [label="add\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:71:26-42"]
+	storage_load_159 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:71:26-42"]
 	storage_var_160 [label="storage variable\nRubixi.payoutOrder\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:71:26-37"]
 	number_literal_161 [label="uint256 literal: 1\ntests/contract_testcases/ewasm/rubixi.sol:71:41-42"]
 	collectAllFees [label="function collectAllFees\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:76:10-52\nsignature collectAllFees()\nvisibility public\nmutability nonpayable"]
 	if_163 [label="if\ntests/contract_testcases/ewasm/rubixi.sol:77:18-51"]
-	equal_164 [label="equal\ntests/contract_testcases/ewasm/rubixi.sol:77:36-38"]
+	equal_164 [label="equal\ntests/contract_testcases/ewasm/rubixi.sol:77:22-40"]
 	storage_load_165 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:77:22-35"]
 	storage_var_166 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:77:22-35"]
 	number_literal_167 [label="uint256 literal: 0\ntests/contract_testcases/ewasm/rubixi.sol:77:39-40"]
@@ -183,13 +183,13 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	collectFeesInEther [label="function collectFeesInEther\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:83:10-65\nsignature collectFeesInEther(uint256)\nvisibility public\nmutability nonpayable"]
 	parameters_184 [label="parameters\nuint256 _amt"]
 	expr_185 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:84:18-33"]
-	assign_186 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:84:23-25"]
+	assign_186 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:84:18-33"]
 	variable_187 [label="variable: _amt\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:84:18-22"]
-	multiply_188 [label="multiply\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:84:23-25"]
+	multiply_188 [label="multiply\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:84:18-33"]
 	variable_189 [label="variable: _amt\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:84:18-22"]
 	number_literal_190 [label="uint256 literal: 1000000000000000000\ntests/contract_testcases/ewasm/rubixi.sol:84:26-33"]
 	if_191 [label="if\ntests/contract_testcases/ewasm/rubixi.sol:85:18-61"]
-	more_192 [label="more\ntests/contract_testcases/ewasm/rubixi.sol:85:27-28"]
+	more_192 [label="more\ntests/contract_testcases/ewasm/rubixi.sol:85:22-42"]
 	variable_193 [label="variable: _amt\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:85:22-26"]
 	storage_load_194 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:85:29-42"]
 	storage_var_195 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:85:29-42"]
@@ -197,7 +197,7 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	call_internal_function_197 [label="call internal function\ntests/contract_testcases/ewasm/rubixi.sol:85:44-60"]
 	internal_function_198 [label="function() internal returns (void)\nRubixi.collectAllFees\ntests/contract_testcases/ewasm/rubixi.sol:85:44-60"]
 	if_199 [label="if\ntests/contract_testcases/ewasm/rubixi.sol:87:18-51"]
-	equal_200 [label="equal\ntests/contract_testcases/ewasm/rubixi.sol:87:36-38"]
+	equal_200 [label="equal\ntests/contract_testcases/ewasm/rubixi.sol:87:22-40"]
 	storage_load_201 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:87:22-35"]
 	storage_var_202 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:87:22-35"]
 	number_literal_203 [label="uint256 literal: 0\ntests/contract_testcases/ewasm/rubixi.sol:87:39-40"]
@@ -212,28 +212,28 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	trunc_212 [label="truncate uint128\ntests/contract_testcases/ewasm/rubixi.sol:89:44-57"]
 	variable_213 [label="variable: _amt\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:89:52-56"]
 	expr_214 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:90:18-39"]
-	assign_215 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:90:32-34"]
+	assign_215 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:90:18-39"]
 	storage_var_216 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:90:18-31"]
-	subtract_217 [label="subtract\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:90:32-34"]
-	storage_load_218 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:90:32-34"]
+	subtract_217 [label="subtract\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:90:18-39"]
+	storage_load_218 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:90:18-39"]
 	storage_var_219 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:90:18-31"]
 	variable_220 [label="variable: _amt\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:90:35-39"]
 	collectPercentOfFees [label="function collectPercentOfFees\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:93:10-69\nsignature collectPercentOfFees(uint256)\nvisibility public\nmutability nonpayable"]
 	parameters_222 [label="parameters\nuint256 _pcent"]
 	if_223 [label="if\ntests/contract_testcases/ewasm/rubixi.sol:94:18-67"]
-	logical_or [label="logical or\ntests/contract_testcases/ewasm/rubixi.sol:94:41-43"]
-	equal_225 [label="equal\ntests/contract_testcases/ewasm/rubixi.sol:94:36-38"]
+	logical_or [label="logical or\ntests/contract_testcases/ewasm/rubixi.sol:94:22-56"]
+	equal_225 [label="equal\ntests/contract_testcases/ewasm/rubixi.sol:94:22-40"]
 	storage_load_226 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:94:22-35"]
 	storage_var_227 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:94:22-35"]
 	number_literal_228 [label="uint256 literal: 0\ntests/contract_testcases/ewasm/rubixi.sol:94:39-40"]
-	more_229 [label="more\ntests/contract_testcases/ewasm/rubixi.sol:94:51-52"]
+	more_229 [label="more\ntests/contract_testcases/ewasm/rubixi.sol:94:44-56"]
 	variable_230 [label="variable: _pcent\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:94:44-50"]
 	number_literal_231 [label="uint256 literal: 100\ntests/contract_testcases/ewasm/rubixi.sol:94:53-56"]
 	expr_232 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:94:58-66"]
 	builtins_233 [label="builtin Revert\ntests/contract_testcases/ewasm/rubixi.sol:94:58-64"]
 	var_decl_234 [label="variable decl uint256 feesToCollect\ntests/contract_testcases/ewasm/rubixi.sol:96:18-67"]
-	multiply_235 [label="multiply\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:96:59-60"]
-	divide_236 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:96:53-54"]
+	multiply_235 [label="multiply\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:96:39-67"]
+	divide_236 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:96:39-58"]
 	storage_load_237 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:96:39-52"]
 	storage_var_238 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:96:39-52"]
 	number_literal_239 [label="uint256 literal: 100\ntests/contract_testcases/ewasm/rubixi.sol:96:55-58"]
@@ -247,10 +247,10 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	trunc_247 [label="truncate uint128\ntests/contract_testcases/ewasm/rubixi.sol:97:44-66"]
 	variable_248 [label="variable: feesToCollect\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:97:52-65"]
 	expr_249 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:98:18-48"]
-	assign_250 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:98:32-34"]
+	assign_250 [label="assign\nvoid\ntests/contract_testcases/ewasm/rubixi.sol:98:18-48"]
 	storage_var_251 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:98:18-31"]
-	subtract_252 [label="subtract\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:98:32-34"]
-	storage_load_253 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:98:32-34"]
+	subtract_252 [label="subtract\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:98:18-48"]
+	storage_load_253 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:98:18-48"]
 	storage_var_254 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:98:18-31"]
 	variable_255 [label="variable: feesToCollect\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:98:35-48"]
 	changeOwner [label="function changeOwner\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:102:10-63\nsignature changeOwner(address)\nvisibility public\nmutability nonpayable"]
@@ -262,11 +262,11 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	changeMultiplier [label="function changeMultiplier\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:106:10-64\nsignature changeMultiplier(uint256)\nvisibility public\nmutability nonpayable"]
 	parameters_263 [label="parameters\nuint256 _mult"]
 	if_264 [label="if\ntests/contract_testcases/ewasm/rubixi.sol:107:18-59"]
-	logical_or_265 [label="logical or\ntests/contract_testcases/ewasm/rubixi.sol:107:34-36"]
-	more_266 [label="more\ntests/contract_testcases/ewasm/rubixi.sol:107:28-29"]
+	logical_or_265 [label="logical or\ntests/contract_testcases/ewasm/rubixi.sol:107:22-48"]
+	more_266 [label="more\ntests/contract_testcases/ewasm/rubixi.sol:107:22-33"]
 	variable_267 [label="variable: _mult\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:107:22-27"]
 	number_literal_268 [label="uint256 literal: 300\ntests/contract_testcases/ewasm/rubixi.sol:107:30-33"]
-	less_269 [label="less\ntests/contract_testcases/ewasm/rubixi.sol:107:43-44"]
+	less_269 [label="less\ntests/contract_testcases/ewasm/rubixi.sol:107:37-48"]
 	variable_270 [label="variable: _mult\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:107:37-42"]
 	number_literal_271 [label="uint256 literal: 120\ntests/contract_testcases/ewasm/rubixi.sol:107:45-48"]
 	expr_272 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:107:50-58"]
@@ -278,7 +278,7 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	changeFeePercentage [label="function changeFeePercentage\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:112:10-66\nsignature changeFeePercentage(uint256)\nvisibility public\nmutability nonpayable"]
 	parameters_279 [label="parameters\nuint256 _fee"]
 	if_280 [label="if\ntests/contract_testcases/ewasm/rubixi.sol:113:18-42"]
-	more_281 [label="more\ntests/contract_testcases/ewasm/rubixi.sol:113:27-28"]
+	more_281 [label="more\ntests/contract_testcases/ewasm/rubixi.sol:113:22-31"]
 	variable_282 [label="variable: _fee\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:113:22-26"]
 	number_literal_283 [label="uint256 literal: 10\ntests/contract_testcases/ewasm/rubixi.sol:113:29-31"]
 	expr_284 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:113:33-41"]
@@ -290,47 +290,47 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	currentMultiplier [label="function currentMultiplier\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:119:10-95\nsignature currentMultiplier()\nvisibility public\nmutability view"]
 	returns [label="returns\nuint256 multiplier\nstring info"]
 	expr_292 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:120:18-48"]
-	assign_293 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:120:29-30"]
+	assign_293 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:120:18-48"]
 	variable_294 [label="variable: multiplier\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:120:18-28"]
 	storage_load_295 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:120:31-48"]
 	storage_var_296 [label="storage variable\nRubixi.pyramidMultiplier\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:120:31-48"]
 	expr_297 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:121:18-314"]
-	assign_298 [label="assign\nstring\ntests/contract_testcases/ewasm/rubixi.sol:121:23-24"]
+	assign_298 [label="assign\nstring\ntests/contract_testcases/ewasm/rubixi.sol:121:18-314"]
 	variable_299 [label="variable: info\nstring\ntests/contract_testcases/ewasm/rubixi.sol:121:18-22"]
 	alloc_array [label="alloc array string\ninitializer: 54686973206d756c7469706c696572206170706c69657320746f20796f7520617320736f6f6e206173207472616e73616374696f6e2069732072656365697665642c206d6179206265206c6f776572656420746f2068617374656e207061796f757473206f7220696e63726561736564206966207061796f75747320617265206661737420656e6f7567682e2044756520746f206e6f20666c6f6174206f7220646563696d616c732c206d756c7469706c696572206973207831303020666f722061206672616374696f6e616c206d756c7469706c69657220652e672e203235302069732061637475616c6c79206120322e3578206d756c7469706c6965722e20436170706564206174203378206d617820616e6420312e3278206d696e2e\ntests/contract_testcases/ewasm/rubixi.sol:121:25-314"]
 	number_literal_301 [label="uint32 literal: 287\ntests/contract_testcases/ewasm/rubixi.sol:121:25-314"]
 	currentFeePercentage [label="function currentFeePercentage\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:124:10-91\nsignature currentFeePercentage()\nvisibility public\nmutability view"]
 	returns_303 [label="returns\nuint256 fee\nstring info"]
 	expr_304 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:125:18-34"]
-	assign_305 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:125:22-23"]
+	assign_305 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:125:18-34"]
 	variable_306 [label="variable: fee\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:125:18-21"]
 	storage_load_307 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:125:24-34"]
 	storage_var_308 [label="storage variable\nRubixi.feePercent\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:125:24-34"]
 	expr_309 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:126:18-159"]
-	assign_310 [label="assign\nstring\ntests/contract_testcases/ewasm/rubixi.sol:126:23-24"]
+	assign_310 [label="assign\nstring\ntests/contract_testcases/ewasm/rubixi.sol:126:18-159"]
 	variable_311 [label="variable: info\nstring\ntests/contract_testcases/ewasm/rubixi.sol:126:18-22"]
 	alloc_array_312 [label="alloc array string\ninitializer: 53686f776e20696e202520666f726d2e204665652069732068616c766564283530252920666f7220616d6f756e747320657175616c206f722067726561746572207468616e203530206574686572732e2028466565206d6179206368616e67652c206275742069732063617070656420746f2061206d6178696d756d206f662031302529\ntests/contract_testcases/ewasm/rubixi.sol:126:25-159"]
 	number_literal_313 [label="uint32 literal: 132\ntests/contract_testcases/ewasm/rubixi.sol:126:25-159"]
 	currentPyramidBalanceApproximately [label="function currentPyramidBalanceApproximately\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:129:10-116\nsignature currentPyramidBalanceApproximately()\nvisibility public\nmutability view"]
 	returns_315 [label="returns\nuint256 pyramidBalance\nstring info"]
 	expr_316 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:130:18-52"]
-	assign_317 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:130:33-34"]
+	assign_317 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:130:18-52"]
 	variable_318 [label="variable: pyramidBalance\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:130:18-32"]
-	divide_319 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:130:43-44"]
+	divide_319 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:130:35-52"]
 	storage_load_320 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:130:35-42"]
 	storage_var_321 [label="storage variable\nRubixi.balance\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:130:35-42"]
 	number_literal_322 [label="uint256 literal: 1000000000000000000\ntests/contract_testcases/ewasm/rubixi.sol:130:45-52"]
 	expr_323 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:131:18-229"]
-	assign_324 [label="assign\nstring\ntests/contract_testcases/ewasm/rubixi.sol:131:23-24"]
+	assign_324 [label="assign\nstring\ntests/contract_testcases/ewasm/rubixi.sol:131:18-229"]
 	variable_325 [label="variable: info\nstring\ntests/contract_testcases/ewasm/rubixi.sol:131:18-22"]
 	alloc_array_326 [label="alloc array string\ninitializer: 416c6c2062616c616e63652076616c75657320617265206d6561737572656420696e204574686572732c206e6f746520746861742064756520746f206e6f20646563696d616c20706c6163696e672c2074686573652076616c7565732073686f7720757020617320696e746567657273206f6e6c792c2077697468696e2074686520636f6e747261637420697473656c6620796f752077696c6c206765742074686520657861637420646563696d616c2076616c756520796f752061726520737570706f73656420746f\ntests/contract_testcases/ewasm/rubixi.sol:131:25-229"]
 	number_literal_327 [label="uint32 literal: 202\ntests/contract_testcases/ewasm/rubixi.sol:131:25-229"]
 	nextPayoutWhenPyramidBalanceTotalsApproximately [label="function nextPayoutWhenPyramidBalanceTotalsApproximately\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:134:10-108\nsignature nextPayoutWhenPyramidBalanceTotalsApproximately()\nvisibility public\nmutability view"]
 	returns_329 [label="returns\nuint256 balancePayout"]
 	expr_330 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:135:18-76"]
-	assign_331 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:135:32-33"]
+	assign_331 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:135:18-76"]
 	variable_332 [label="variable: balancePayout\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:135:18-31"]
-	divide_333 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:135:67-68"]
+	divide_333 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:135:34-76"]
 	storage_load_334 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:135:34-66"]
 	structmember_335 [label="struct member #1 uint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:135:60-66"]
 	subscript_336 [label="subscript struct Rubixi.Participant[] storage\ntests/contract_testcases/ewasm/rubixi.sol:135:34-59"]
@@ -341,25 +341,25 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	feesSeperateFromBalanceApproximately [label="function feesSeperateFromBalanceApproximately\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:138:10-88\nsignature feesSeperateFromBalanceApproximately()\nvisibility public\nmutability view"]
 	returns_342 [label="returns\nuint256 fees"]
 	expr_343 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:139:18-48"]
-	assign_344 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:139:23-24"]
+	assign_344 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:139:18-48"]
 	variable_345 [label="variable: fees\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:139:18-22"]
-	divide_346 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:139:39-40"]
+	divide_346 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:139:25-48"]
 	storage_load_347 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:139:25-38"]
 	storage_var_348 [label="storage variable\nRubixi.collectedFees\nuint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:139:25-38"]
 	number_literal_349 [label="uint256 literal: 1000000000000000000\ntests/contract_testcases/ewasm/rubixi.sol:139:41-48"]
 	totalParticipants [label="function totalParticipants\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:142:10-70\nsignature totalParticipants()\nvisibility public\nmutability view"]
 	returns_351 [label="returns\nuint256 count"]
 	expr_352 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:143:18-45"]
-	assign_353 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:143:24-25"]
+	assign_353 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:143:18-45"]
 	variable_354 [label="variable: count\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:143:18-23"]
 	array_length_355 [label="array length uint256\nelement struct Rubixi.Participant\ntests/contract_testcases/ewasm/rubixi.sol:143:39-45"]
 	storage_var_356 [label="storage variable\nRubixi.participants\nstruct Rubixi.Participant[] storage\ntests/contract_testcases/ewasm/rubixi.sol:143:26-38"]
 	numberOfParticipantsWaitingForPayout [label="function numberOfParticipantsWaitingForPayout\ncontract: Rubixi\ntests/contract_testcases/ewasm/rubixi.sol:146:10-89\nsignature numberOfParticipantsWaitingForPayout()\nvisibility public\nmutability view"]
 	returns_358 [label="returns\nuint256 count"]
 	expr_359 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:147:18-59"]
-	assign_360 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:147:24-25"]
+	assign_360 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:147:18-59"]
 	variable_361 [label="variable: count\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:147:18-23"]
-	subtract_362 [label="subtract\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:147:46-47"]
+	subtract_362 [label="subtract\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:147:26-59"]
 	array_length_363 [label="array length uint256\nelement struct Rubixi.Participant\ntests/contract_testcases/ewasm/rubixi.sol:147:39-45"]
 	storage_var_364 [label="storage variable\nRubixi.participants\nstruct Rubixi.Participant[] storage\ntests/contract_testcases/ewasm/rubixi.sol:147:26-38"]
 	storage_load_365 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:147:48-59"]
@@ -368,14 +368,14 @@ strict digraph "tests/contract_testcases/ewasm/rubixi.sol" {
 	parameters_368 [label="parameters\nuint256 orderInPyramid"]
 	returns_369 [label="returns\naddress Address\nuint256 Payout"]
 	if_370 [label="if\ntests/contract_testcases/ewasm/rubixi.sol:151:18-154:19"]
-	less_equal [label="less equal\ntests/contract_testcases/ewasm/rubixi.sol:151:37-39"]
+	less_equal [label="less equal\ntests/contract_testcases/ewasm/rubixi.sol:151:22-59"]
 	variable_372 [label="variable: orderInPyramid\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:151:22-36"]
 	array_length_373 [label="array length uint256\nelement struct Rubixi.Participant\ntests/contract_testcases/ewasm/rubixi.sol:151:53-59"]
 	storage_var_374 [label="storage variable\nRubixi.participants\nstruct Rubixi.Participant[] storage\ntests/contract_testcases/ewasm/rubixi.sol:151:40-52"]
 	expr_375 [label="expression\ntests/contract_testcases/ewasm/rubixi.sol:153:26-80"]
-	assign_376 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:153:33-34"]
+	assign_376 [label="assign\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:153:26-80"]
 	variable_377 [label="variable: Payout\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:153:26-32"]
-	divide_378 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:153:71-72"]
+	divide_378 [label="divide\nuint256\ntests/contract_testcases/ewasm/rubixi.sol:153:35-80"]
 	storage_load_379 [label="storage load uint256\ntests/contract_testcases/ewasm/rubixi.sol:153:35-70"]
 	structmember_380 [label="struct member #1 uint256 storage\ntests/contract_testcases/ewasm/rubixi.sol:153:64-70"]
 	subscript_381 [label="subscript struct Rubixi.Participant[] storage\ntests/contract_testcases/ewasm/rubixi.sol:153:35-63"]

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

@@ -14,7 +14,7 @@ strict digraph "tests/contract_testcases/ewasm/standalone_call.sol" {
 	return_14 [label="return\ntests/contract_testcases/ewasm/standalone_call.sol:14:9-29"]
 	list_15 [label="list\ntests/contract_testcases/ewasm/standalone_call.sol:14:9-29"]
 	number_literal_16 [label="int256 literal: 1\ntests/contract_testcases/ewasm/standalone_call.sol:14:17-18"]
-	add [label="add\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:14:22-23"]
+	add [label="add\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:14:20-25"]
 	variable [label="variable: c\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:14:20-21"]
 	number_literal_19 [label="int256 literal: 2\ntests/contract_testcases/ewasm/standalone_call.sol:14:24-25"]
 	number_literal_20 [label="int256 literal: 3\ntests/contract_testcases/ewasm/standalone_call.sol:14:27-28"]
@@ -39,53 +39,53 @@ strict digraph "tests/contract_testcases/ewasm/standalone_call.sol" {
 	internal_function_39 [label="function(int256) internal pure returns (void)\nBABYLINK.multipleRetuns\ntests/contract_testcases/ewasm/standalone_call.sol:28:9-31"]
 	number_literal_40 [label="int256 literal: 9\ntests/contract_testcases/ewasm/standalone_call.sol:28:28-29"]
 	expr_41 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:29:9-27"]
-	add_42 [label="add\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:29:11-12"]
+	add_42 [label="add\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:29:9-27"]
 	number_literal_43 [label="int256 literal: 1\ntests/contract_testcases/ewasm/standalone_call.sol:29:9-10"]
 	call_internal_function_44 [label="call internal function\ntests/contract_testcases/ewasm/standalone_call.sol:29:13-27"]
 	internal_function_45 [label="function() internal pure returns (int256)\nBABYLINK.singleReturn\ntests/contract_testcases/ewasm/standalone_call.sol:29:13-27"]
 	expr_46 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:30:9-27"]
-	subtract [label="subtract\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:30:11-12"]
+	subtract [label="subtract\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:30:9-27"]
 	number_literal_48 [label="int256 literal: 1\ntests/contract_testcases/ewasm/standalone_call.sol:30:9-10"]
 	call_internal_function_49 [label="call internal function\ntests/contract_testcases/ewasm/standalone_call.sol:30:13-27"]
 	internal_function_50 [label="function() internal pure returns (int256)\nBABYLINK.singleReturn\ntests/contract_testcases/ewasm/standalone_call.sol:30:13-27"]
 	expr_51 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:31:9-27"]
-	multiply [label="multiply\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:31:11-12"]
+	multiply [label="multiply\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:31:9-27"]
 	number_literal_53 [label="int256 literal: 1\ntests/contract_testcases/ewasm/standalone_call.sol:31:9-10"]
 	call_internal_function_54 [label="call internal function\ntests/contract_testcases/ewasm/standalone_call.sol:31:13-27"]
 	internal_function_55 [label="function() internal pure returns (int256)\nBABYLINK.singleReturn\ntests/contract_testcases/ewasm/standalone_call.sol:31:13-27"]
 	expr_56 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:32:9-27"]
-	divide [label="divide\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:32:11-12"]
+	divide [label="divide\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:32:9-27"]
 	number_literal_58 [label="int256 literal: 1\ntests/contract_testcases/ewasm/standalone_call.sol:32:9-10"]
 	call_internal_function_59 [label="call internal function\ntests/contract_testcases/ewasm/standalone_call.sol:32:13-27"]
 	internal_function_60 [label="function() internal pure returns (int256)\nBABYLINK.singleReturn\ntests/contract_testcases/ewasm/standalone_call.sol:32:13-27"]
 	expr_61 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:33:9-27"]
-	bitwise_or [label="bitwise or\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:33:11-12"]
+	bitwise_or [label="bitwise or\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:33:9-27"]
 	number_literal_63 [label="int256 literal: 1\ntests/contract_testcases/ewasm/standalone_call.sol:33:9-10"]
 	call_internal_function_64 [label="call internal function\ntests/contract_testcases/ewasm/standalone_call.sol:33:13-27"]
 	internal_function_65 [label="function() internal pure returns (int256)\nBABYLINK.singleReturn\ntests/contract_testcases/ewasm/standalone_call.sol:33:13-27"]
 	expr_66 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:34:9-27"]
-	bitwise_and [label="bitwise and\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:34:11-12"]
+	bitwise_and [label="bitwise and\nint256\ntests/contract_testcases/ewasm/standalone_call.sol:34:9-27"]
 	number_literal_68 [label="int256 literal: 1\ntests/contract_testcases/ewasm/standalone_call.sol:34:9-10"]
 	call_internal_function_69 [label="call internal function\ntests/contract_testcases/ewasm/standalone_call.sol:34:13-27"]
 	internal_function_70 [label="function() internal pure returns (int256)\nBABYLINK.singleReturn\ntests/contract_testcases/ewasm/standalone_call.sol:34:13-27"]
 	expr_71 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:35:9-28"]
-	shift_left [label="shift left\nuint8\ntests/contract_testcases/ewasm/standalone_call.sol:35:11-13"]
+	shift_left [label="shift left\nuint8\ntests/contract_testcases/ewasm/standalone_call.sol:35:9-28"]
 	number_literal_73 [label="uint8 literal: 1\ntests/contract_testcases/ewasm/standalone_call.sol:35:9-10"]
-	trunc [label="truncate uint8\ntests/contract_testcases/ewasm/standalone_call.sol:35:11-13"]
+	trunc [label="truncate uint8\ntests/contract_testcases/ewasm/standalone_call.sol:35:9-28"]
 	call_internal_function_75 [label="call internal function\ntests/contract_testcases/ewasm/standalone_call.sol:35:14-28"]
 	internal_function_76 [label="function() internal pure returns (int256)\nBABYLINK.singleReturn\ntests/contract_testcases/ewasm/standalone_call.sol:35:14-28"]
 	expr_77 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:36:9-28"]
-	shift_right [label="shift right\nuint8\ntests/contract_testcases/ewasm/standalone_call.sol:36:11-13"]
+	shift_right [label="shift right\nuint8\ntests/contract_testcases/ewasm/standalone_call.sol:36:9-28"]
 	number_literal_79 [label="uint8 literal: 1\ntests/contract_testcases/ewasm/standalone_call.sol:36:9-10"]
-	trunc_80 [label="truncate uint8\ntests/contract_testcases/ewasm/standalone_call.sol:36:11-13"]
+	trunc_80 [label="truncate uint8\ntests/contract_testcases/ewasm/standalone_call.sol:36:9-28"]
 	call_internal_function_81 [label="call internal function\ntests/contract_testcases/ewasm/standalone_call.sol:36:14-28"]
 	internal_function_82 [label="function() internal pure returns (int256)\nBABYLINK.singleReturn\ntests/contract_testcases/ewasm/standalone_call.sol:36:14-28"]
 	expr_83 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:37:9-22"]
-	not [label="not\ntests/contract_testcases/ewasm/standalone_call.sol:37:9-10"]
+	not [label="not\ntests/contract_testcases/ewasm/standalone_call.sol:37:9-22"]
 	call_internal_function_85 [label="call internal function\ntests/contract_testcases/ewasm/standalone_call.sol:37:10-22"]
 	internal_function_86 [label="function() internal pure returns (bool)\nBABYLINK.returnBool\ntests/contract_testcases/ewasm/standalone_call.sol:37:10-22"]
 	expr_87 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:38:9-24"]
-	complement [label="complement int256\ntests/contract_testcases/ewasm/standalone_call.sol:38:9-10"]
+	complement [label="complement int256\ntests/contract_testcases/ewasm/standalone_call.sol:38:9-24"]
 	call_internal_function_89 [label="call internal function\ntests/contract_testcases/ewasm/standalone_call.sol:38:10-24"]
 	internal_function_90 [label="function() internal pure returns (int256)\nBABYLINK.singleReturn\ntests/contract_testcases/ewasm/standalone_call.sol:38:10-24"]
 	expr_91 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:39:9-24"]
@@ -102,9 +102,9 @@ strict digraph "tests/contract_testcases/ewasm/standalone_call.sol" {
 	external_function [label="function() external pure returns (void)\nfoo.bar\ntests/contract_testcases/ewasm/standalone_call.sol:42:9-16"]
 	variable_103 [label="variable: r\ncontract foo\ntests/contract_testcases/ewasm/standalone_call.sol:42:9-10"]
 	expr_104 [label="expression\ntests/contract_testcases/ewasm/standalone_call.sol:44:9-24"]
-	add_105 [label="add\nrational\ntests/contract_testcases/ewasm/standalone_call.sol:44:11-12"]
+	add_105 [label="add\nrational\ntests/contract_testcases/ewasm/standalone_call.sol:44:9-24"]
 	number_literal_106 [label="uint8 literal: 1\ntests/contract_testcases/ewasm/standalone_call.sol:44:9-10"]
-	add_107 [label="add\nrational\ntests/contract_testcases/ewasm/standalone_call.sol:44:18-19"]
+	add_107 [label="add\nrational\ntests/contract_testcases/ewasm/standalone_call.sol:44:14-23"]
 	rational_literal [label="rational rational literal: 13/10\ntests/contract_testcases/ewasm/standalone_call.sol:44:14-17"]
 	rational_literal_109 [label="rational rational literal: 9/5\ntests/contract_testcases/ewasm/standalone_call.sol:44:20-23"]
 	var_decl_110 [label="variable decl function(int256) external returns (int256,int256,int256) fptr\ntests/contract_testcases/ewasm/standalone_call.sol:46:9-83"]

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

@@ -5,7 +5,7 @@ strict digraph "tests/contract_testcases/solana/address_member_call.sol" {
 	parameters [label="parameters\naddress[] _receivers\nuint64[] _amounts\nstring _payment"]
 	expr [label="expression\ntests/contract_testcases/solana/address_member_call.sol:18:9-21:10"]
 	builtins [label="builtin Require\ntests/contract_testcases/solana/address_member_call.sol:18:9-16"]
-	equal [label="equal\ntests/contract_testcases/solana/address_member_call.sol:19:31-33"]
+	equal [label="equal\ntests/contract_testcases/solana/address_member_call.sol:19:13-49"]
 	builtins_10 [label="builtin ArrayLength\ntests/contract_testcases/solana/address_member_call.sol:19:13-30"]
 	variable [label="variable: _receivers\naddress[]\ntests/contract_testcases/solana/address_member_call.sol:19:13-23"]
 	builtins_12 [label="builtin ArrayLength\ntests/contract_testcases/solana/address_member_call.sol:19:34-49"]
@@ -17,7 +17,7 @@ strict digraph "tests/contract_testcases/solana/address_member_call.sol" {
 	for [label="for\ntests/contract_testcases/solana/address_member_call.sol:24:9-26:10"]
 	var_decl_19 [label="variable decl uint8 i\ntests/contract_testcases/solana/address_member_call.sol:24:14-25"]
 	number_literal_20 [label="uint8 literal: 0\ntests/contract_testcases/solana/address_member_call.sol:24:24-25"]
-	less [label="less\ntests/contract_testcases/solana/address_member_call.sol:24:29-30"]
+	less [label="less\ntests/contract_testcases/solana/address_member_call.sol:24:27-48"]
 	zero_ext [label="zero extend uint32\ntests/contract_testcases/solana/address_member_call.sol:24:27-28"]
 	variable_23 [label="variable: i\nuint8\ntests/contract_testcases/solana/address_member_call.sol:24:27-28"]
 	builtins_24 [label="builtin ArrayLength\ntests/contract_testcases/solana/address_member_call.sol:24:31-48"]
@@ -26,9 +26,9 @@ strict digraph "tests/contract_testcases/solana/address_member_call.sol" {
 	post_increment [label="post increment\nuint8\ntests/contract_testcases/solana/address_member_call.sol:24:50-53"]
 	variable_28 [label="variable: i\nuint8\ntests/contract_testcases/solana/address_member_call.sol:24:50-51"]
 	expr_29 [label="expression\ntests/contract_testcases/solana/address_member_call.sol:25:13-33"]
-	assign [label="assign\nvoid\ntests/contract_testcases/solana/address_member_call.sol:25:19-21"]
+	assign [label="assign\nvoid\ntests/contract_testcases/solana/address_member_call.sol:25:13-33"]
 	variable_31 [label="variable: total\nuint64\ntests/contract_testcases/solana/address_member_call.sol:25:13-18"]
-	add [label="add\nuint64\ntests/contract_testcases/solana/address_member_call.sol:25:19-21"]
+	add [label="add\nuint64\ntests/contract_testcases/solana/address_member_call.sol:25:13-33"]
 	variable_33 [label="variable: total\nuint64\ntests/contract_testcases/solana/address_member_call.sol:25:13-18"]
 	load [label="load uint64\ntests/contract_testcases/solana/address_member_call.sol:25:22-33"]
 	subscript [label="subscript uint64[]\ntests/contract_testcases/solana/address_member_call.sol:25:22-33"]
@@ -36,7 +36,7 @@ strict digraph "tests/contract_testcases/solana/address_member_call.sol" {
 	variable_37 [label="variable: i\nuint8\ntests/contract_testcases/solana/address_member_call.sol:25:31-32"]
 	expr_38 [label="expression\ntests/contract_testcases/solana/address_member_call.sol:27:9-30:10"]
 	builtins_39 [label="builtin Require\ntests/contract_testcases/solana/address_member_call.sol:27:9-16"]
-	equal_40 [label="equal\ntests/contract_testcases/solana/address_member_call.sol:28:19-21"]
+	equal_40 [label="equal\ntests/contract_testcases/solana/address_member_call.sol:28:13-31"]
 	variable_41 [label="variable: total\nuint64\ntests/contract_testcases/solana/address_member_call.sol:28:13-18"]
 	cast [label="cast uint64\ntests/contract_testcases/solana/address_member_call.sol:28:22-31"]
 	builtins_43 [label="builtin Value\ntests/contract_testcases/solana/address_member_call.sol:28:22-31"]
@@ -45,7 +45,7 @@ strict digraph "tests/contract_testcases/solana/address_member_call.sol" {
 	for_46 [label="for\ntests/contract_testcases/solana/address_member_call.sol:32:9-35:10"]
 	var_decl_47 [label="variable decl uint8 i\ntests/contract_testcases/solana/address_member_call.sol:32:14-25"]
 	number_literal_48 [label="uint8 literal: 0\ntests/contract_testcases/solana/address_member_call.sol:32:24-25"]
-	less_49 [label="less\ntests/contract_testcases/solana/address_member_call.sol:32:29-30"]
+	less_49 [label="less\ntests/contract_testcases/solana/address_member_call.sol:32:27-48"]
 	zero_ext_50 [label="zero extend uint32\ntests/contract_testcases/solana/address_member_call.sol:32:27-28"]
 	variable_51 [label="variable: i\nuint8\ntests/contract_testcases/solana/address_member_call.sol:32:27-28"]
 	builtins_52 [label="builtin ArrayLength\ntests/contract_testcases/solana/address_member_call.sol:32:31-48"]

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

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/solana/asm_reserved_words.sol" {
 	parameters [label="parameters\nbool case"]
 	returns [label="returns\nbool "]
 	return [label="return\ntests/contract_testcases/solana/asm_reserved_words.sol:4:3-15"]
-	not [label="not\ntests/contract_testcases/solana/asm_reserved_words.sol:4:10-11"]
+	not [label="not\ntests/contract_testcases/solana/asm_reserved_words.sol:4:10-15"]
 	variable [label="variable: case\nbool\ntests/contract_testcases/solana/asm_reserved_words.sol:4:11-15"]
 	diagnostic [label="found contract 'default'\nlevel Debug\ntests/contract_testcases/solana/asm_reserved_words.sol:1:1-2:18"]
 	contracts -> contract

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

@@ -5,7 +5,7 @@ strict digraph "tests/contract_testcases/solana/assign_array_in_array.sol" {
 	fixed [label="function fixed\ncontract: C\ntests/contract_testcases/solana/assign_array_in_array.sol:3:2-25\nsignature fixed()\nvisibility public\nmutability nonpayable"]
 	var_decl [label="variable decl uint256[3][4] iPj\ntests/contract_testcases/solana/assign_array_in_array.sol:4:3-27"]
 	expr [label="expression\ntests/contract_testcases/solana/assign_array_in_array.sol:5:3-19"]
-	assign [label="assign\nuint256[3]\ntests/contract_testcases/solana/assign_array_in_array.sol:5:10-11"]
+	assign [label="assign\nuint256[3]\ntests/contract_testcases/solana/assign_array_in_array.sol:5:3-19"]
 	subscript [label="subscript uint256[3][4]\ntests/contract_testcases/solana/assign_array_in_array.sol:5:3-9"]
 	variable [label="variable: iPj\nuint256[3][4]\ntests/contract_testcases/solana/assign_array_in_array.sol:5:3-6"]
 	number_literal [label="uint32 literal: 0\ntests/contract_testcases/solana/assign_array_in_array.sol:5:7-8"]
@@ -16,7 +16,7 @@ strict digraph "tests/contract_testcases/solana/assign_array_in_array.sol" {
 	dynamic [label="function dynamic\ncontract: C\ntests/contract_testcases/solana/assign_array_in_array.sol:8:2-27\nsignature dynamic()\nvisibility public\nmutability nonpayable"]
 	var_decl_17 [label="variable decl uint256[][4] iPj\ntests/contract_testcases/solana/assign_array_in_array.sol:9:3-26"]
 	expr_18 [label="expression\ntests/contract_testcases/solana/assign_array_in_array.sol:10:3-28"]
-	assign_19 [label="assign\nuint256[]\ntests/contract_testcases/solana/assign_array_in_array.sol:10:10-11"]
+	assign_19 [label="assign\nuint256[]\ntests/contract_testcases/solana/assign_array_in_array.sol:10:3-28"]
 	subscript_20 [label="subscript uint256[][4]\ntests/contract_testcases/solana/assign_array_in_array.sol:10:3-9"]
 	variable_21 [label="variable: iPj\nuint256[][4]\ntests/contract_testcases/solana/assign_array_in_array.sol:10:3-6"]
 	number_literal_22 [label="uint32 literal: 0\ntests/contract_testcases/solana/assign_array_in_array.sol:10:7-8"]
@@ -25,7 +25,7 @@ strict digraph "tests/contract_testcases/solana/assign_array_in_array.sol" {
 	fixed_struct [label="function fixed_struct\ncontract: C\ntests/contract_testcases/solana/assign_array_in_array.sol:16:2-32\nsignature fixed_struct()\nvisibility public\nmutability nonpayable"]
 	var_decl_26 [label="variable decl struct C.Sfixed iPj\ntests/contract_testcases/solana/assign_array_in_array.sol:17:3-13"]
 	expr_27 [label="expression\ntests/contract_testcases/solana/assign_array_in_array.sol:18:3-19"]
-	assign_28 [label="assign\nuint256[3]\ntests/contract_testcases/solana/assign_array_in_array.sol:18:10-11"]
+	assign_28 [label="assign\nuint256[3]\ntests/contract_testcases/solana/assign_array_in_array.sol:18:3-19"]
 	structmember [label="struct member #0 uint256[3]\ntests/contract_testcases/solana/assign_array_in_array.sol:18:7-9"]
 	variable_30 [label="variable: iPj\nstruct C.Sfixed\ntests/contract_testcases/solana/assign_array_in_array.sol:18:3-6"]
 	array_literal_31 [label="array literal: uint256[3]\ntests/contract_testcases/solana/assign_array_in_array.sol:18:12-19"]
@@ -35,7 +35,7 @@ strict digraph "tests/contract_testcases/solana/assign_array_in_array.sol" {
 	dynamic_struct [label="function dynamic_struct\ncontract: C\ntests/contract_testcases/solana/assign_array_in_array.sol:21:2-34\nsignature dynamic_struct()\nvisibility public\nmutability nonpayable"]
 	var_decl_36 [label="variable decl struct C.Sdynamic iPj\ntests/contract_testcases/solana/assign_array_in_array.sol:22:3-15"]
 	expr_37 [label="expression\ntests/contract_testcases/solana/assign_array_in_array.sol:23:3-28"]
-	assign_38 [label="assign\nuint256[]\ntests/contract_testcases/solana/assign_array_in_array.sol:23:10-11"]
+	assign_38 [label="assign\nuint256[]\ntests/contract_testcases/solana/assign_array_in_array.sol:23:3-28"]
 	structmember_39 [label="struct member #0 uint256[]\ntests/contract_testcases/solana/assign_array_in_array.sol:23:7-9"]
 	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"]

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

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/solana/contract_var_base_function_init.
 	parameters [label="parameters\nint256 a"]
 	returns [label="returns\nint256 "]
 	return [label="return\ntests/contract_testcases/solana/contract_var_base_function_init.sol:3:9-19"]
-	divide [label="divide\nint256\ntests/contract_testcases/solana/contract_var_base_function_init.sol:3:17-18"]
+	divide [label="divide\nint256\ntests/contract_testcases/solana/contract_var_base_function_init.sol:3:16-19"]
 	variable [label="variable: a\nint256\ntests/contract_testcases/solana/contract_var_base_function_init.sol:3:16-17"]
 	number_literal [label="int256 literal: 2\ntests/contract_testcases/solana/contract_var_base_function_init.sol:3:18-19"]
 	contract_10 [label="contract testing\ntests/contract_testcases/solana/contract_var_base_function_init.sol:6:1-7:22"]

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

@@ -14,12 +14,12 @@ strict digraph "tests/contract_testcases/solana/destructure_assign_struct_member
 	list [label="list\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:9-52"]
 	subscript [label="subscript mapping(uint176 => bytes32) storage\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:25-37"]
 	storage_var [label="storage variable\nTestContract.Hashes\nmapping(uint176 => bytes32) storage\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:25-31"]
-	add [label="add\nuint176\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:34-35"]
+	add [label="add\nuint176\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:32-36"]
 	variable_18 [label="variable: id\nuint176\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:32-34"]
 	number_literal [label="uint176 literal: 1\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:35-36"]
 	subscript_20 [label="subscript mapping(uint176 => bytes32) storage\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:39-51"]
 	storage_var_21 [label="storage variable\nTestContract.Hashes\nmapping(uint176 => bytes32) storage\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:39-45"]
-	add_22 [label="add\nuint176\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:48-49"]
+	add_22 [label="add\nuint176\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:46-50"]
 	variable_23 [label="variable: id\nuint176\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:46-48"]
 	number_literal_24 [label="uint176 literal: 2\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:13:49-50"]
 	diagnostic [label="found contract 'TestContract'\nlevel Debug\ntests/contract_testcases/solana/destructure_assign_struct_member.sol:1:57-2:23"]

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

@@ -50,12 +50,12 @@ strict digraph "tests/contract_testcases/solana/doccomments_everywhere.sol" {
 	node_51 [label="constructor \ncontract: Property\ntests/contract_testcases/solana/doccomments_everywhere.sol:17:3-76\nsignature ()\nvisibility public\nmutability nonpayable"]
 	node_52 [label="receive \ncontract: Property\ntests/contract_testcases/solana/doccomments_everywhere.sol:19:3-29\nmutability payable"]
 	expr [label="expression\ntests/contract_testcases/solana/doccomments_everywhere.sol:20:5-68"]
-	assign [label="assign\nuint256 storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:20:30-31"]
+	assign [label="assign\nuint256 storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:20:5-68"]
 	subscript_55 [label="subscript mapping(address => uint256) storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:20:5-29"]
 	storage_var_56 [label="storage variable\nProperty.valueLocked_\nmapping(address => uint256) storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:20:5-17"]
 	cast [label="cast address\ntests/contract_testcases/solana/doccomments_everywhere.sol:20:18-28"]
 	builtins [label="builtin Sender\ntests/contract_testcases/solana/doccomments_everywhere.sol:20:18-28"]
-	add [label="add\nuint256\ntests/contract_testcases/solana/doccomments_everywhere.sol:20:57-58"]
+	add [label="add\nuint256\ntests/contract_testcases/solana/doccomments_everywhere.sol:20:32-68"]
 	storage_load_60 [label="storage load uint256\ntests/contract_testcases/solana/doccomments_everywhere.sol:20:32-56"]
 	subscript_61 [label="subscript mapping(address => uint256) storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:20:32-56"]
 	storage_var_62 [label="storage variable\nProperty.valueLocked_\nmapping(address => uint256) storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:20:32-44"]
@@ -89,7 +89,7 @@ strict digraph "tests/contract_testcases/solana/doccomments_everywhere.sol" {
 	parameters_90 [label="parameters\nuint256 _newSharesToSell\nuint256 _id"]
 	expr_91 [label="expression\ntests/contract_testcases/solana/doccomments_everywhere.sol:68:5-73"]
 	builtins_92 [label="builtin Require\ntests/contract_testcases/solana/doccomments_everywhere.sol:68:5-12"]
-	equal [label="equal\ntests/contract_testcases/solana/doccomments_everywhere.sol:68:24-26"]
+	equal [label="equal\ntests/contract_testcases/solana/doccomments_everywhere.sol:68:13-47"]
 	cast_94 [label="cast address\ntests/contract_testcases/solana/doccomments_everywhere.sol:68:13-23"]
 	builtins_95 [label="builtin Sender\ntests/contract_testcases/solana/doccomments_everywhere.sol:68:13-23"]
 	storage_load_96 [label="storage load address\ntests/contract_testcases/solana/doccomments_everywhere.sol:68:27-47"]
@@ -99,7 +99,7 @@ strict digraph "tests/contract_testcases/solana/doccomments_everywhere.sol" {
 	alloc_array [label="alloc array string\ninitializer: 596f7520617265206e6f7420746865206f776e6572\ntests/contract_testcases/solana/doccomments_everywhere.sol:68:49-72"]
 	number_literal [label="uint32 literal: 21\ntests/contract_testcases/solana/doccomments_everywhere.sol:68:49-72"]
 	expr_102 [label="expression\ntests/contract_testcases/solana/doccomments_everywhere.sol:69:5-43"]
-	assign_103 [label="assign\nuint256 storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:69:25-26"]
+	assign_103 [label="assign\nuint256 storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:69:5-43"]
 	subscript_104 [label="subscript mapping(uint256 => uint256) storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:69:5-24"]
 	storage_var_105 [label="storage variable\nProperty.sellingTokens_\nmapping(uint256 => uint256) storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:69:5-19"]
 	variable_106 [label="variable: _id\nuint256\ntests/contract_testcases/solana/doccomments_everywhere.sol:69:20-23"]
@@ -108,7 +108,7 @@ strict digraph "tests/contract_testcases/solana/doccomments_everywhere.sol" {
 	parameters_109 [label="parameters\nuint256 _newSharesToSell\nuint256 _id"]
 	expr_110 [label="expression\ntests/contract_testcases/solana/doccomments_everywhere.sol:73:5-73"]
 	builtins_111 [label="builtin Require\ntests/contract_testcases/solana/doccomments_everywhere.sol:73:5-12"]
-	equal_112 [label="equal\ntests/contract_testcases/solana/doccomments_everywhere.sol:73:24-26"]
+	equal_112 [label="equal\ntests/contract_testcases/solana/doccomments_everywhere.sol:73:13-47"]
 	cast_113 [label="cast address\ntests/contract_testcases/solana/doccomments_everywhere.sol:73:13-23"]
 	builtins_114 [label="builtin Sender\ntests/contract_testcases/solana/doccomments_everywhere.sol:73:13-23"]
 	storage_load_115 [label="storage load address\ntests/contract_testcases/solana/doccomments_everywhere.sol:73:27-47"]
@@ -118,7 +118,7 @@ strict digraph "tests/contract_testcases/solana/doccomments_everywhere.sol" {
 	alloc_array_119 [label="alloc array string\ninitializer: 596f7520617265206e6f7420746865206f776e6572\ntests/contract_testcases/solana/doccomments_everywhere.sol:73:49-72"]
 	number_literal_120 [label="uint32 literal: 21\ntests/contract_testcases/solana/doccomments_everywhere.sol:73:49-72"]
 	expr_121 [label="expression\ntests/contract_testcases/solana/doccomments_everywhere.sol:74:5-42"]
-	assign_122 [label="assign\nuint256 storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:74:24-25"]
+	assign_122 [label="assign\nuint256 storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:74:5-42"]
 	subscript_123 [label="subscript mapping(uint256 => uint256) storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:74:5-23"]
 	storage_var_124 [label="storage variable\nProperty.buyingTokens_\nmapping(uint256 => uint256) storage\ntests/contract_testcases/solana/doccomments_everywhere.sol:74:5-18"]
 	variable_125 [label="variable: _id\nuint256\ntests/contract_testcases/solana/doccomments_everywhere.sol:74:19-22"]

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

@@ -3,19 +3,19 @@ strict digraph "tests/contract_testcases/solana/expressions/bytes32_0.sol" {
 	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"]
 	expr [label="expression\ntests/contract_testcases/solana/expressions/bytes32_0.sol:4:17-31"]
-	assign [label="assign\nbytes32\ntests/contract_testcases/solana/expressions/bytes32_0.sol:4:19-20"]
+	assign [label="assign\nbytes32\ntests/contract_testcases/solana/expressions/bytes32_0.sol:4:17-31"]
 	variable [label="variable: r\nbytes32\ntests/contract_testcases/solana/expressions/bytes32_0.sol:4:17-18"]
 	number_literal [label="bytes32 literal: 0\ntests/contract_testcases/solana/expressions/bytes32_0.sol:4:21-31"]
 	b4 [label="function b4\ncontract: x\ntests/contract_testcases/solana/expressions/bytes32_0.sol:7:13-57\nsignature b4()\nvisibility public\nmutability pure"]
 	returns_10 [label="returns\nbytes4 r"]
 	expr_11 [label="expression\ntests/contract_testcases/solana/expressions/bytes32_0.sol:8:17-39"]
-	assign_12 [label="assign\nbytes4\ntests/contract_testcases/solana/expressions/bytes32_0.sol:8:19-20"]
+	assign_12 [label="assign\nbytes4\ntests/contract_testcases/solana/expressions/bytes32_0.sol:8:17-39"]
 	variable_13 [label="variable: r\nbytes4\ntests/contract_testcases/solana/expressions/bytes32_0.sol:8:17-18"]
 	number_literal_14 [label="bytes4 literal: 3405700781\ntests/contract_testcases/solana/expressions/bytes32_0.sol:8:21-39"]
 	b3 [label="function b3\ncontract: x\ntests/contract_testcases/solana/expressions/bytes32_0.sol:11:13-57\nsignature b3()\nvisibility public\nmutability pure"]
 	returns_16 [label="returns\nbytes3 r"]
 	expr_17 [label="expression\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:19-20"]
+	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"]
 	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"]

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

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/solana/expressions/contract_compare.sol
 	parameters [label="parameters\ncontract d left\ncontract d right"]
 	returns [label="returns\nbool "]
 	return [label="return\ntests/contract_testcases/solana/expressions/contract_compare.sol:4:3-22"]
-	less [label="less\ntests/contract_testcases/solana/expressions/contract_compare.sol:4:15-16"]
+	less [label="less\ntests/contract_testcases/solana/expressions/contract_compare.sol:4:10-22"]
 	variable [label="variable: left\ncontract d\ntests/contract_testcases/solana/expressions/contract_compare.sol:4:10-14"]
 	variable_9 [label="variable: right\ncontract d\ntests/contract_testcases/solana/expressions/contract_compare.sol:4:17-22"]
 	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"]

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

@@ -16,10 +16,10 @@ strict digraph "tests/contract_testcases/solana/expressions/contract_no_init.sol
 	post_decrement [label="post decrement\nint256\ntests/contract_testcases/solana/expressions/contract_no_init.sol:10:21-24"]
 	variable [label="variable: x\nint256\ntests/contract_testcases/solana/expressions/contract_no_init.sol:10:21-22"]
 	expr_18 [label="expression\ntests/contract_testcases/solana/expressions/contract_no_init.sol:11:21-36"]
-	assign [label="assign\ncontract other\ntests/contract_testcases/solana/expressions/contract_no_init.sol:11:23-24"]
+	assign [label="assign\ncontract other\ntests/contract_testcases/solana/expressions/contract_no_init.sol:11:21-36"]
 	variable_20 [label="variable: o\ncontract other\ntests/contract_testcases/solana/expressions/contract_no_init.sol:11:21-22"]
 	constructor [label="constructor contract other\ntests/contract_testcases/solana/expressions/contract_no_init.sol:11:25-36"]
-	more [label="more\ntests/contract_testcases/solana/expressions/contract_no_init.sol:12:26-27"]
+	more [label="more\ntests/contract_testcases/solana/expressions/contract_no_init.sol:12:24-29"]
 	variable_23 [label="variable: x\nint256\ntests/contract_testcases/solana/expressions/contract_no_init.sol:12:24-25"]
 	number_literal [label="int256 literal: 0\ntests/contract_testcases/solana/expressions/contract_no_init.sol:12:28-29"]
 	return_25 [label="return\ntests/contract_testcases/solana/expressions/contract_no_init.sol:14:17-29"]

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

@@ -4,14 +4,14 @@ strict digraph "tests/contract_testcases/solana/for_if_no_else.sol" {
 	for [label="for\ntests/contract_testcases/solana/for_if_no_else.sol:2:2-4:13"]
 	var_decl [label="variable decl int256 i\ntests/contract_testcases/solana/for_if_no_else.sol:2:7-14"]
 	number_literal [label="int256 literal: 0\ntests/contract_testcases/solana/for_if_no_else.sol:2:13-14"]
-	less [label="less\ntests/contract_testcases/solana/for_if_no_else.sol:2:17-18"]
+	less [label="less\ntests/contract_testcases/solana/for_if_no_else.sol:2:16-21"]
 	variable [label="variable: i\nint256\ntests/contract_testcases/solana/for_if_no_else.sol:2:16-17"]
 	number_literal_9 [label="int256 literal: 10\ntests/contract_testcases/solana/for_if_no_else.sol:2:19-21"]
 	expr [label="expression\ntests/contract_testcases/solana/for_if_no_else.sol:2:23-26"]
 	post_increment [label="post increment\nint256\ntests/contract_testcases/solana/for_if_no_else.sol:2:23-26"]
 	variable_12 [label="variable: i\nint256\ntests/contract_testcases/solana/for_if_no_else.sol:2:23-24"]
 	if [label="if\ntests/contract_testcases/solana/for_if_no_else.sol:3:3-4:13"]
-	more [label="more\ntests/contract_testcases/solana/for_if_no_else.sol:3:9-10"]
+	more [label="more\ntests/contract_testcases/solana/for_if_no_else.sol:3:7-12"]
 	variable_15 [label="variable: i\nint256\ntests/contract_testcases/solana/for_if_no_else.sol:3:7-8"]
 	number_literal_16 [label="int256 literal: 0\ntests/contract_testcases/solana/for_if_no_else.sol:3:11-12"]
 	return [label="return\ntests/contract_testcases/solana/for_if_no_else.sol:4:4-12"]

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

@@ -24,7 +24,7 @@ strict digraph "tests/contract_testcases/solana/issues678.sol" {
 	for [label="for\ntests/contract_testcases/solana/issues678.sol:22:9-25:10"]
 	var_decl_26 [label="variable decl uint256 i\ntests/contract_testcases/solana/issues678.sol:22:14-24"]
 	number_literal_27 [label="uint256 literal: 0\ntests/contract_testcases/solana/issues678.sol:22:23-24"]
-	less [label="less\ntests/contract_testcases/solana/issues678.sol:22:28-29"]
+	less [label="less\ntests/contract_testcases/solana/issues678.sol:22:26-44"]
 	variable [label="variable: i\nuint256\ntests/contract_testcases/solana/issues678.sol:22:26-27"]
 	zero_ext [label="zero extend uint256\ntests/contract_testcases/solana/issues678.sol:22:30-44"]
 	array_length_31 [label="array length uint32\nelement struct Shares.Share\ntests/contract_testcases/solana/issues678.sol:22:38-44"]
@@ -33,7 +33,7 @@ strict digraph "tests/contract_testcases/solana/issues678.sol" {
 	post_increment [label="post increment\nuint256\ntests/contract_testcases/solana/issues678.sol:22:46-49"]
 	variable_35 [label="variable: i\nuint256\ntests/contract_testcases/solana/issues678.sol:22:46-47"]
 	expr_36 [label="expression\ntests/contract_testcases/solana/issues678.sol:23:13-50"]
-	assign [label="assign\naddress\ntests/contract_testcases/solana/issues678.sol:23:27-28"]
+	assign [label="assign\naddress\ntests/contract_testcases/solana/issues678.sol:23:13-50"]
 	subscript [label="subscript address[]\ntests/contract_testcases/solana/issues678.sol:23:13-26"]
 	variable_39 [label="variable: retAddress\naddress[]\ntests/contract_testcases/solana/issues678.sol:23:13-23"]
 	variable_40 [label="variable: i\nuint256\ntests/contract_testcases/solana/issues678.sol:23:24-25"]
@@ -44,7 +44,7 @@ strict digraph "tests/contract_testcases/solana/issues678.sol" {
 	storage_var_45 [label="storage variable\nShares._shares\nstruct Shares.Share[] storage\ntests/contract_testcases/solana/issues678.sol:23:29-36"]
 	variable_46 [label="variable: i\nuint256\ntests/contract_testcases/solana/issues678.sol:23:37-38"]
 	expr_47 [label="expression\ntests/contract_testcases/solana/issues678.sol:24:13-44"]
-	assign_48 [label="assign\nuint256\ntests/contract_testcases/solana/issues678.sol:24:25-26"]
+	assign_48 [label="assign\nuint256\ntests/contract_testcases/solana/issues678.sol:24:13-44"]
 	subscript_49 [label="subscript uint256[]\ntests/contract_testcases/solana/issues678.sol:24:13-24"]
 	variable_50 [label="variable: retShare\nuint256[]\ntests/contract_testcases/solana/issues678.sol:24:13-21"]
 	variable_51 [label="variable: i\nuint256\ntests/contract_testcases/solana/issues678.sol:24:22-23"]
@@ -62,7 +62,7 @@ strict digraph "tests/contract_testcases/solana/issues678.sol" {
 	for_63 [label="for\ntests/contract_testcases/solana/issues678.sol:30:9-34:10"]
 	var_decl_64 [label="variable decl uint256 i\ntests/contract_testcases/solana/issues678.sol:30:14-24"]
 	number_literal_65 [label="uint256 literal: 0\ntests/contract_testcases/solana/issues678.sol:30:23-24"]
-	less_66 [label="less\ntests/contract_testcases/solana/issues678.sol:30:28-29"]
+	less_66 [label="less\ntests/contract_testcases/solana/issues678.sol:30:26-44"]
 	variable_67 [label="variable: i\nuint256\ntests/contract_testcases/solana/issues678.sol:30:26-27"]
 	zero_ext_68 [label="zero extend uint256\ntests/contract_testcases/solana/issues678.sol:30:30-44"]
 	array_length_69 [label="array length uint32\nelement struct Shares.Share\ntests/contract_testcases/solana/issues678.sol:30:38-44"]
@@ -71,7 +71,7 @@ strict digraph "tests/contract_testcases/solana/issues678.sol" {
 	post_increment_72 [label="post increment\nuint256\ntests/contract_testcases/solana/issues678.sol:30:46-49"]
 	variable_73 [label="variable: i\nuint256\ntests/contract_testcases/solana/issues678.sol:30:46-47"]
 	if [label="if\ntests/contract_testcases/solana/issues678.sol:31:13-33:14"]
-	equal [label="equal\ntests/contract_testcases/solana/issues678.sol:31:39-41"]
+	equal [label="equal\ntests/contract_testcases/solana/issues678.sol:31:17-52"]
 	storage_load_76 [label="storage load address payable\ntests/contract_testcases/solana/issues678.sol:31:17-38"]
 	structmember_77 [label="struct member #0 address payable storage\ntests/contract_testcases/solana/issues678.sol:31:28-38"]
 	subscript_78 [label="subscript struct Shares.Share[] storage\ntests/contract_testcases/solana/issues678.sol:31:17-27"]
@@ -97,7 +97,7 @@ strict digraph "tests/contract_testcases/solana/issues678.sol" {
 	builtins_98 [label="builtin GetAddress\ntests/contract_testcases/solana/issues678.sol:43:37-41"]
 	expr_99 [label="expression\ntests/contract_testcases/solana/issues678.sol:44:9-66"]
 	builtins_100 [label="builtin Require\ntests/contract_testcases/solana/issues678.sol:44:9-16"]
-	more [label="more\ntests/contract_testcases/solana/issues678.sol:44:30-31"]
+	more [label="more\ntests/contract_testcases/solana/issues678.sol:44:17-33"]
 	variable_102 [label="variable: curr_balance\nuint256\ntests/contract_testcases/solana/issues678.sol:44:17-29"]
 	number_literal_103 [label="uint256 literal: 0\ntests/contract_testcases/solana/issues678.sol:44:32-33"]
 	alloc_array_104 [label="alloc array string\ninitializer: 5468657265206973206e6f7468696e6720746f207769746864726177\ntests/contract_testcases/solana/issues678.sol:44:35-65"]
@@ -105,7 +105,7 @@ strict digraph "tests/contract_testcases/solana/issues678.sol" {
 	for_106 [label="for\ntests/contract_testcases/solana/issues678.sol:45:9-49:10"]
 	var_decl_107 [label="variable decl uint256 i\ntests/contract_testcases/solana/issues678.sol:45:14-24"]
 	number_literal_108 [label="uint256 literal: 0\ntests/contract_testcases/solana/issues678.sol:45:23-24"]
-	less_109 [label="less\ntests/contract_testcases/solana/issues678.sol:45:28-29"]
+	less_109 [label="less\ntests/contract_testcases/solana/issues678.sol:45:26-44"]
 	variable_110 [label="variable: i\nuint256\ntests/contract_testcases/solana/issues678.sol:45:26-27"]
 	zero_ext_111 [label="zero extend uint256\ntests/contract_testcases/solana/issues678.sol:45:30-44"]
 	array_length_112 [label="array length uint32\nelement struct Shares.Share\ntests/contract_testcases/solana/issues678.sol:45:38-44"]
@@ -114,8 +114,8 @@ strict digraph "tests/contract_testcases/solana/issues678.sol" {
 	post_increment_115 [label="post increment\nuint256\ntests/contract_testcases/solana/issues678.sol:45:46-49"]
 	variable_116 [label="variable: i\nuint256\ntests/contract_testcases/solana/issues678.sol:45:46-47"]
 	var_decl_117 [label="variable decl uint256 to_transfer\ntests/contract_testcases/solana/issues678.sol:46:13-71"]
-	divide [label="divide\nuint256\ntests/contract_testcases/solana/issues678.sol:46:65-66"]
-	multiply [label="multiply\nuint256\ntests/contract_testcases/solana/issues678.sol:46:45-46"]
+	divide [label="divide\nuint256\ntests/contract_testcases/solana/issues678.sol:46:32-71"]
+	multiply [label="multiply\nuint256\ntests/contract_testcases/solana/issues678.sol:46:32-64"]
 	variable_120 [label="variable: curr_balance\nuint256\ntests/contract_testcases/solana/issues678.sol:46:32-44"]
 	storage_load_121 [label="storage load uint256\ntests/contract_testcases/solana/issues678.sol:46:47-64"]
 	structmember_122 [label="struct member #1 uint256 storage\ntests/contract_testcases/solana/issues678.sol:46:58-64"]
@@ -143,7 +143,7 @@ strict digraph "tests/contract_testcases/solana/issues678.sol" {
 	variable_144 [label="variable: to_transfer\nuint256\ntests/contract_testcases/solana/issues678.sol:48:50-61"]
 	variable_145 [label="variable: curr_balance\nuint256\ntests/contract_testcases/solana/issues678.sol:48:63-75"]
 	if_146 [label="if\ntests/contract_testcases/solana/issues678.sol:50:9-54:10"]
-	more_147 [label="more\ntests/contract_testcases/solana/issues678.sol:50:35-36"]
+	more_147 [label="more\ntests/contract_testcases/solana/issues678.sol:50:13-38"]
 	cast_148 [label="cast uint64\ntests/contract_testcases/solana/issues678.sol:50:13-34"]
 	builtins_149 [label="builtin Balance\ntests/contract_testcases/solana/issues678.sol:50:13-34"]
 	cast_150 [label="cast address\ntests/contract_testcases/solana/issues678.sol:50:13-26"]

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

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/solana/negative_exponent.sol" {
 	returns [label="returns\nuint256 "]
 	return [label="return\ntests/contract_testcases/solana/negative_exponent.sol:3:2-20"]
 	cast [label="cast uint256\ntests/contract_testcases/solana/negative_exponent.sol:3:2-20"]
-	add [label="add\nrational\ntests/contract_testcases/solana/negative_exponent.sol:3:14-15"]
+	add [label="add\nrational\ntests/contract_testcases/solana/negative_exponent.sol:3:9-20"]
 	rational_literal [label="rational rational literal: 1/20\ntests/contract_testcases/solana/negative_exponent.sol:3:9-13"]
 	rational_literal_9 [label="rational rational literal: 39/20\ntests/contract_testcases/solana/negative_exponent.sol:3:16-20"]
 	g [label="function g\ncontract: c\ntests/contract_testcases/solana/negative_exponent.sol:5:5-44\nsignature g()\nvisibility public\nmutability pure"]

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

@@ -2,9 +2,9 @@ strict digraph "tests/contract_testcases/solana/power.sol" {
 	contract [label="contract AstExample\ntests/contract_testcases/solana/power.sol:2:1-3:21"]
 	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"]
-	power [label="power\nuint256\ntests/contract_testcases/solana/power.sol:5:11-13"]
+	power [label="power\nuint256\ntests/contract_testcases/solana/power.sol:5:9-20"]
 	number_literal [label="uint256 literal: 1\ntests/contract_testcases/solana/power.sol:5:9-10"]
-	power_7 [label="power\nuint256\ntests/contract_testcases/solana/power.sol:5:16-18"]
+	power_7 [label="power\nuint256\ntests/contract_testcases/solana/power.sol:5:14-20"]
 	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"]
 	diagnostic [label="pragma 'solidity' is ignored\nlevel Debug\ntests/contract_testcases/solana/power.sol:1:1-24"]

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

@@ -8,10 +8,10 @@ strict digraph "tests/contract_testcases/solana/shift_struct_member.sol" {
 	return [label="return\ntests/contract_testcases/solana/shift_struct_member.sol:14:9-39"]
 	trunc [label="truncate uint112\ntests/contract_testcases/solana/shift_struct_member.sol:14:16-39"]
 	load [label="load uint224\ntests/contract_testcases/solana/shift_struct_member.sol:14:16-39"]
-	shift_right [label="shift right\nuint224\ntests/contract_testcases/solana/shift_struct_member.sol:14:32-34"]
+	shift_right [label="shift right\nuint224\ntests/contract_testcases/solana/shift_struct_member.sol:14:24-38"]
 	structmember [label="struct member #0 uint224\ntests/contract_testcases/solana/shift_struct_member.sol:14:29-31"]
 	variable [label="variable: self\nstruct FixedPoint.uq112x112\ntests/contract_testcases/solana/shift_struct_member.sol:14:24-28"]
-	zero_ext [label="zero extend uint224\ntests/contract_testcases/solana/shift_struct_member.sol:14:32-34"]
+	zero_ext [label="zero extend uint224\ntests/contract_testcases/solana/shift_struct_member.sol:14:24-38"]
 	number_literal [label="uint8 literal: 112\ntests/contract_testcases/solana/shift_struct_member.sol:14:35-38"]
 	decode144 [label="function decode144\ncontract: FixedPoint\ntests/contract_testcases/solana/shift_struct_member.sol:18:5-78\nsignature decode144((uint256))\nvisibility internal\nmutability pure"]
 	parameters_17 [label="parameters\nstruct FixedPoint.uq144x112 self"]
@@ -19,10 +19,10 @@ strict digraph "tests/contract_testcases/solana/shift_struct_member.sol" {
 	return_19 [label="return\ntests/contract_testcases/solana/shift_struct_member.sol:19:9-39"]
 	trunc_20 [label="truncate uint144\ntests/contract_testcases/solana/shift_struct_member.sol:19:16-39"]
 	load_21 [label="load uint256\ntests/contract_testcases/solana/shift_struct_member.sol:19:16-39"]
-	shift_right_22 [label="shift right\nuint256\ntests/contract_testcases/solana/shift_struct_member.sol:19:32-34"]
+	shift_right_22 [label="shift right\nuint256\ntests/contract_testcases/solana/shift_struct_member.sol:19:24-38"]
 	structmember_23 [label="struct member #0 uint256\ntests/contract_testcases/solana/shift_struct_member.sol:19:29-31"]
 	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:32-34"]
+	zero_ext_25 [label="zero extend uint256\ntests/contract_testcases/solana/shift_struct_member.sol:19:24-38"]
 	number_literal_26 [label="uint8 literal: 112\ntests/contract_testcases/solana/shift_struct_member.sol:19:35-38"]
 	diagnostic [label="found library 'FixedPoint'\nlevel Debug\ntests/contract_testcases/solana/shift_struct_member.sol:1:71-2:20"]
 	structs -> uq144x112

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

@@ -3,11 +3,11 @@ strict digraph "tests/contract_testcases/solana/simple.sol" {
 	inc [label="function inc\ntests/contract_testcases/solana/simple.sol:6:2-7:23\nsignature inc((int64,bool))\nvisibility internal\nmutability pure"]
 	parameters [label="parameters\nstruct S s"]
 	expr [label="expression\ntests/contract_testcases/solana/simple.sol:7:26-35"]
-	assign [label="assign\nvoid\ntests/contract_testcases/solana/simple.sol:7:31-33"]
+	assign [label="assign\nvoid\ntests/contract_testcases/solana/simple.sol:7:26-35"]
 	structmember [label="struct member #0 int64\ntests/contract_testcases/solana/simple.sol:7:28-30"]
 	variable [label="variable: s\nstruct S\ntests/contract_testcases/solana/simple.sol:7:26-27"]
-	add [label="add\nint64\ntests/contract_testcases/solana/simple.sol:7:31-33"]
-	load [label="load int64\ntests/contract_testcases/solana/simple.sol:7:31-33"]
+	add [label="add\nint64\ntests/contract_testcases/solana/simple.sol:7:26-35"]
+	load [label="load int64\ntests/contract_testcases/solana/simple.sol:7:26-35"]
 	structmember_11 [label="struct member #0 int64\ntests/contract_testcases/solana/simple.sol:7:28-30"]
 	variable_12 [label="variable: s\nstruct S\ntests/contract_testcases/solana/simple.sol:7:26-27"]
 	number_literal [label="int64 literal: 1\ntests/contract_testcases/solana/simple.sol:7:34-35"]

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

@@ -1,7 +1,7 @@
 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"]
-	diagnostic_5 [label="zero size array not permitted\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions.sol:3:21-22"]
+	diagnostic_5 [label="zero size array not permitted\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions.sol:3:18-25"]
 	contracts -> contract
 	diagnostics -> diagnostic [label="Debug"]
 	diagnostics -> diagnostic_5 [label="Error"]

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

@@ -1,7 +1,7 @@
 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"]
-	diagnostic_5 [label="zero size array not permitted\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_02.sol:3:20-21"]
+	diagnostic_5 [label="zero size array not permitted\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_02.sol:3:18-24"]
 	contracts -> contract
 	diagnostics -> diagnostic [label="Debug"]
 	diagnostics -> diagnostic_5 [label="Error"]

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

@@ -2,7 +2,7 @@ strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions_03.so
 	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"]
-	diagnostic_7 [label="divide by zero\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_03.sol:4:17-18"]
+	diagnostic_7 [label="divide by zero\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_03.sol:4:15-20"]
 	enums -> e
 	contracts -> contract
 	diagnostics -> diagnostic [label="Debug"]

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

@@ -2,7 +2,7 @@ strict digraph "tests/contract_testcases/substrate/arrays/array_dimensions_04.so
 	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"]
-	diagnostic_7 [label="divide by zero\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_04.sol:6:19-20"]
+	diagnostic_7 [label="divide by zero\nlevel Error\ntests/contract_testcases/substrate/arrays/array_dimensions_04.sol:6:17-22"]
 	structs -> bar
 	contracts -> contract
 	diagnostics -> diagnostic [label="Debug"]

+ 6 - 6
tests/contract_testcases/substrate/arrays/lucas.dot

@@ -15,19 +15,19 @@ strict digraph "tests/contract_testcases/substrate/arrays/lucas.sol" {
 	number_literal_14 [label="uint16 literal: 1\ntests/contract_testcases/substrate/arrays/lucas.sol:8:24-25"]
 	var_decl_15 [label="variable decl uint8 b\ntests/contract_testcases/substrate/arrays/lucas.sol:9:13-20"]
 	expr_16 [label="expression\ntests/contract_testcases/substrate/arrays/lucas.sol:10:13-25"]
-	assign_17 [label="assign\nuint8\ntests/contract_testcases/substrate/arrays/lucas.sol:10:15-16"]
+	assign_17 [label="assign\nuint8\ntests/contract_testcases/substrate/arrays/lucas.sol:10:13-25"]
 	variable_18 [label="variable: b\nuint8\ntests/contract_testcases/substrate/arrays/lucas.sol:10:13-14"]
 	trunc [label="truncate uint8\ntests/contract_testcases/substrate/arrays/lucas.sol:10:17-25"]
 	variable_20 [label="variable: a\nuint16\ntests/contract_testcases/substrate/arrays/lucas.sol:10:23-24"]
 	var_decl_21 [label="variable decl uint256 c\ntests/contract_testcases/substrate/arrays/lucas.sol:12:13-22"]
 	expr_22 [label="expression\ntests/contract_testcases/substrate/arrays/lucas.sol:13:13-18"]
-	assign_23 [label="assign\nuint256\ntests/contract_testcases/substrate/arrays/lucas.sol:13:15-16"]
+	assign_23 [label="assign\nuint256\ntests/contract_testcases/substrate/arrays/lucas.sol:13:13-18"]
 	variable_24 [label="variable: c\nuint256\ntests/contract_testcases/substrate/arrays/lucas.sol:13:13-14"]
 	zero_ext [label="zero extend uint256\ntests/contract_testcases/substrate/arrays/lucas.sol:13:17-18"]
 	variable_26 [label="variable: b\nuint8\ntests/contract_testcases/substrate/arrays/lucas.sol:13:17-18"]
 	var_decl_27 [label="variable decl bytes32 b32\ntests/contract_testcases/substrate/arrays/lucas.sol:14:13-24"]
 	expr_28 [label="expression\ntests/contract_testcases/substrate/arrays/lucas.sol:15:13-35"]
-	assign_29 [label="assign\nbytes32\ntests/contract_testcases/substrate/arrays/lucas.sol:15:17-18"]
+	assign_29 [label="assign\nbytes32\ntests/contract_testcases/substrate/arrays/lucas.sol:15:13-35"]
 	variable_30 [label="variable: b32\nbytes32\ntests/contract_testcases/substrate/arrays/lucas.sol:15:13-16"]
 	bytes_cast [label="bytes cast from bytes to bytes32\ntests/contract_testcases/substrate/arrays/lucas.sol:15:19-35"]
 	storage_load [label="storage load bytes\ntests/contract_testcases/substrate/arrays/lucas.sol:15:19-35"]
@@ -43,11 +43,11 @@ strict digraph "tests/contract_testcases/substrate/arrays/lucas.sol" {
 	number_literal_42 [label="uint256 literal: 1\ntests/contract_testcases/substrate/arrays/lucas.sol:18:23-24"]
 	expr_43 [label="expression\ntests/contract_testcases/substrate/arrays/lucas.sol:19:13-52"]
 	builtins [label="builtin Assert\ntests/contract_testcases/substrate/arrays/lucas.sol:19:13-19"]
-	equal [label="equal\ntests/contract_testcases/substrate/arrays/lucas.sol:19:36-38"]
+	equal [label="equal\ntests/contract_testcases/substrate/arrays/lucas.sol:19:20-51"]
 	subscript [label="subscript bytes32\ntests/contract_testcases/substrate/arrays/lucas.sol:19:20-35"]
 	variable_47 [label="variable: b32\nbytes32\ntests/contract_testcases/substrate/arrays/lucas.sol:19:20-23"]
-	subtract [label="subtract\nuint256\ntests/contract_testcases/substrate/arrays/lucas.sol:19:31-32"]
-	multiply [label="multiply\nuint256\ntests/contract_testcases/substrate/arrays/lucas.sol:19:27-28"]
+	subtract [label="subtract\nuint256\ntests/contract_testcases/substrate/arrays/lucas.sol:19:24-34"]
+	multiply [label="multiply\nuint256\ntests/contract_testcases/substrate/arrays/lucas.sol:19:25-30"]
 	variable_50 [label="variable: i1\nuint256\ntests/contract_testcases/substrate/arrays/lucas.sol:19:25-27"]
 	variable_51 [label="variable: i2\nuint256\ntests/contract_testcases/substrate/arrays/lucas.sol:19:28-30"]
 	variable_52 [label="variable: i1\nuint256\ntests/contract_testcases/substrate/arrays/lucas.sol:19:32-34"]

+ 1 - 1
tests/contract_testcases/substrate/arrays/storage_delete_01.dot

@@ -3,7 +3,7 @@ strict digraph "tests/contract_testcases/substrate/arrays/storage_delete_01.sol"
 	var [label="variable bar\nvisibility internal\ntests/contract_testcases/substrate/arrays/storage_delete_01.sol:3:13-24"]
 	test [label="function test\ncontract: foo\ntests/contract_testcases/substrate/arrays/storage_delete_01.sol:5:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
 	diagnostic [label="found contract 'foo'\nlevel Debug\ntests/contract_testcases/substrate/arrays/storage_delete_01.sol:2:9-22"]
-	diagnostic_6 [label="delete not allowed in expression\nlevel Error\ntests/contract_testcases/substrate/arrays/storage_delete_01.sol:6:27-33"]
+	diagnostic_6 [label="delete not allowed in expression\nlevel Error\ntests/contract_testcases/substrate/arrays/storage_delete_01.sol:6:27-37"]
 	contracts -> contract
 	contract -> var [label="variable"]
 	contract -> test [label="function"]

+ 1 - 1
tests/contract_testcases/substrate/builtins/msg_01.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/builtins/msg_01.sol" {
 	parameters [label="parameters\nuint128 v"]
 	returns [label="returns\nbool "]
 	return [label="return\ntests/contract_testcases/substrate/builtins/msg_01.sol:4:17-37"]
-	more [label="more\ntests/contract_testcases/substrate/builtins/msg_01.sol:4:34-35"]
+	more [label="more\ntests/contract_testcases/substrate/builtins/msg_01.sol:4:24-37"]
 	cast [label="cast uint128\ntests/contract_testcases/substrate/builtins/msg_01.sol:4:24-33"]
 	builtins [label="builtin Value\ntests/contract_testcases/substrate/builtins/msg_01.sol:4:24-33"]
 	variable [label="variable: v\nuint128\ntests/contract_testcases/substrate/builtins/msg_01.sol:4:36-37"]

+ 1 - 1
tests/contract_testcases/substrate/contracts/external_call_02.dot

@@ -21,7 +21,7 @@ strict digraph "tests/contract_testcases/substrate/contracts/external_call_02.so
 	parameters_20 [label="parameters\nint32 t"]
 	returns_21 [label="returns\nint32 "]
 	return [label="return\ntests/contract_testcases/substrate/contracts/external_call_02.sol:18:17-29"]
-	multiply [label="multiply\nint32\ntests/contract_testcases/substrate/contracts/external_call_02.sol:18:26-27"]
+	multiply [label="multiply\nint32\ntests/contract_testcases/substrate/contracts/external_call_02.sol:18:24-29"]
 	storage_load [label="storage load int32\ntests/contract_testcases/substrate/contracts/external_call_02.sol:18:24-25"]
 	storage_var_25 [label="storage variable\nb.x\nint32 storage\ntests/contract_testcases/substrate/contracts/external_call_02.sol:18:24-25"]
 	variable_26 [label="variable: t\nint32\ntests/contract_testcases/substrate/contracts/external_call_02.sol:18:28-29"]

+ 1 - 1
tests/contract_testcases/substrate/contracts/external_call_03.dot

@@ -22,7 +22,7 @@ strict digraph "tests/contract_testcases/substrate/contracts/external_call_03.so
 	parameters_21 [label="parameters\nint32 t"]
 	returns_22 [label="returns\nint32 "]
 	return_23 [label="return\ntests/contract_testcases/substrate/contracts/external_call_03.sol:18:17-29"]
-	multiply [label="multiply\nint32\ntests/contract_testcases/substrate/contracts/external_call_03.sol:18:26-27"]
+	multiply [label="multiply\nint32\ntests/contract_testcases/substrate/contracts/external_call_03.sol:18:24-29"]
 	storage_load_25 [label="storage load int32\ntests/contract_testcases/substrate/contracts/external_call_03.sol:18:24-25"]
 	storage_var_26 [label="storage variable\nb.x\nint32 storage\ntests/contract_testcases/substrate/contracts/external_call_03.sol:18:24-25"]
 	variable_27 [label="variable: t\nint32\ntests/contract_testcases/substrate/contracts/external_call_03.sol:18:28-29"]

+ 1 - 1
tests/contract_testcases/substrate/expressions/power.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/expressions/power.sol" {
 	parameters [label="parameters\nuint64 base\nint64 exp"]
 	returns [label="returns\nuint64 "]
 	diagnostic [label="found contract 'test'\nlevel Debug\ntests/contract_testcases/substrate/expressions/power.sol:1:1-15"]
-	diagnostic_7 [label="exponation (**) is not allowed with signed types\nlevel Error\ntests/contract_testcases/substrate/expressions/power.sol:3:29-31"]
+	diagnostic_7 [label="exponation (**) is not allowed with signed types\nlevel Error\ntests/contract_testcases/substrate/expressions/power.sol:3:24-35"]
 	contracts -> contract
 	contract -> power [label="function"]
 	power -> parameters [label="parameters"]

+ 1 - 1
tests/contract_testcases/substrate/expressions/power_01.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/expressions/power_01.sol" {
 	parameters [label="parameters\nint64 base\nuint64 exp"]
 	returns [label="returns\nint64 "]
 	diagnostic [label="found contract 'test'\nlevel Debug\ntests/contract_testcases/substrate/expressions/power_01.sol:1:1-15"]
-	diagnostic_7 [label="exponation (**) is not allowed with signed types\nlevel Error\ntests/contract_testcases/substrate/expressions/power_01.sol:3:29-31"]
+	diagnostic_7 [label="exponation (**) is not allowed with signed types\nlevel Error\ntests/contract_testcases/substrate/expressions/power_01.sol:3:24-35"]
 	contracts -> contract
 	contract -> power [label="function"]
 	power -> parameters [label="parameters"]

+ 1 - 1
tests/contract_testcases/substrate/expressions/power_02.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/expressions/power_02.sol" {
 	parameters [label="parameters\nint64 base\nint64 exp"]
 	returns [label="returns\nint64 "]
 	diagnostic [label="found contract 'test'\nlevel Debug\ntests/contract_testcases/substrate/expressions/power_02.sol:1:1-15"]
-	diagnostic_7 [label="exponation (**) is not allowed with signed types\nlevel Error\ntests/contract_testcases/substrate/expressions/power_02.sol:3:29-31"]
+	diagnostic_7 [label="exponation (**) is not allowed with signed types\nlevel Error\ntests/contract_testcases/substrate/expressions/power_02.sol:3:24-35"]
 	contracts -> contract
 	contract -> power [label="function"]
 	power -> parameters [label="parameters"]

+ 1 - 1
tests/contract_testcases/substrate/expressions/test_cast_errors_02.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/expressions/test_cast_errors_
 	parameters [label="parameters\nint32 foo\nuint16 bar"]
 	returns [label="returns\nbool "]
 	expr [label="expression\ntests/contract_testcases/substrate/expressions/test_cast_errors_02.sol:3:17-26"]
-	assign [label="assign\nint32\ntests/contract_testcases/substrate/expressions/test_cast_errors_02.sol:3:21-22"]
+	assign [label="assign\nint32\ntests/contract_testcases/substrate/expressions/test_cast_errors_02.sol:3:17-26"]
 	variable [label="variable: foo\nint32\ntests/contract_testcases/substrate/expressions/test_cast_errors_02.sol:3:17-20"]
 	zero_ext [label="zero extend int32\ntests/contract_testcases/substrate/expressions/test_cast_errors_02.sol:3:23-26"]
 	variable_9 [label="variable: bar\nuint16\ntests/contract_testcases/substrate/expressions/test_cast_errors_02.sol:3:23-26"]

+ 1 - 1
tests/contract_testcases/substrate/functions/global_functions_08.dot

@@ -3,7 +3,7 @@ strict digraph "tests/contract_testcases/substrate/functions/global_functions_08
 	x [label="function x\ntests/contract_testcases/substrate/functions/global_functions_08.sol:7:9-37\nsignature x(struct S)\nvisibility internal\nmutability view"]
 	parameters [label="parameters\nstruct S storage x"]
 	expr [label="expression\ntests/contract_testcases/substrate/functions/global_functions_08.sol:7:40-50"]
-	assign [label="assign\nint32 storage\ntests/contract_testcases/substrate/functions/global_functions_08.sol:7:45-46"]
+	assign [label="assign\nint32 storage\ntests/contract_testcases/substrate/functions/global_functions_08.sol:7:40-50"]
 	structmember [label="struct member #0 int32 storage\ntests/contract_testcases/substrate/functions/global_functions_08.sol:7:42-44"]
 	variable [label="variable: x\nstruct S storage\ntests/contract_testcases/substrate/functions/global_functions_08.sol:7:40-41"]
 	number_literal [label="int32 literal: 102\ntests/contract_testcases/substrate/functions/global_functions_08.sol:7:47-50"]

+ 1 - 1
tests/contract_testcases/substrate/functions/mutability_04.dot

@@ -3,7 +3,7 @@ strict digraph "tests/contract_testcases/substrate/functions/mutability_04.sol"
 	bar [label="function bar\ncontract: test\ntests/contract_testcases/substrate/functions/mutability_04.sol:2:13-58\nsignature bar(int256[])\nvisibility internal\nmutability view"]
 	parameters [label="parameters\nint256[] storage foo"]
 	expr [label="expression\ntests/contract_testcases/substrate/functions/mutability_04.sol:3:17-29"]
-	assign [label="assign\nint256 storage\ntests/contract_testcases/substrate/functions/mutability_04.sol:3:24-25"]
+	assign [label="assign\nint256 storage\ntests/contract_testcases/substrate/functions/mutability_04.sol:3:17-29"]
 	subscript [label="subscript int256[] storage\ntests/contract_testcases/substrate/functions/mutability_04.sol:3:17-23"]
 	variable [label="variable: foo\nint256[] storage\ntests/contract_testcases/substrate/functions/mutability_04.sol:3:17-20"]
 	number_literal [label="uint256 literal: 0\ntests/contract_testcases/substrate/functions/mutability_04.sol:3:21-22"]

+ 1 - 1
tests/contract_testcases/substrate/inheritance/base_contract.dot

@@ -9,7 +9,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/base_contract.sol
 	parameters_8 [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/base_contract.sol:9:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/base_contract.sol:9:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/base_contract.sol:9:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/base_contract.sol:9:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/base_contract.sol:9:28-31"]
 	diagnostic [label="found contract 'base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contract.sol:2:9-23"]

+ 1 - 1
tests/contract_testcases/substrate/inheritance/base_contract_01.dot

@@ -8,7 +8,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/base_contract_01.
 	parameters_7 [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/base_contract_01.sol:8:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/base_contract_01.sol:8:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/base_contract_01.sol:8:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/base_contract_01.sol:8:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/base_contract_01.sol:8:28-31"]
 	diagnostic [label="found contract 'base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/base_contract_01.sol:2:9-23"]

+ 1 - 1
tests/contract_testcases/substrate/inheritance/base_contract_on_constructor_06.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/base_contract_on_
 	node_3 [label="constructor \ncontract: c\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_06.sol:3:13-40\nsignature (int64)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\nint64 x"]
 	b [label="b"]
-	add [label="add\nint64\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_06.sol:3:37-38"]
+	add [label="add\nint64\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_06.sol:3:36-39"]
 	variable [label="variable: x\nint64\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_06.sol:3:36-37"]
 	number_literal [label="int64 literal: 3\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_06.sol:3:38-39"]
 	contract_9 [label="contract b\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_06.sol:6:9-33"]

+ 1 - 1
tests/contract_testcases/substrate/inheritance/base_contract_on_constructor_07.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/base_contract_on_
 	node_3 [label="constructor \ncontract: c\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_07.sol:3:13-45\nsignature (int64)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\nint64 x"]
 	b [label="b"]
-	add [label="add\nint64\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_07.sol:3:37-38"]
+	add [label="add\nint64\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_07.sol:3:36-39"]
 	variable [label="variable: x\nint64\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_07.sol:3:36-37"]
 	number_literal [label="int64 literal: 3\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_07.sol:3:38-39"]
 	contract_9 [label="contract b\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_07.sol:6:9-33"]

+ 1 - 1
tests/contract_testcases/substrate/inheritance/base_contract_on_constructor_08.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/base_contract_on_
 	node_3 [label="constructor \ncontract: c\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_08.sol:3:13-45\nsignature (int64)\nvisibility public\nmutability nonpayable"]
 	parameters [label="parameters\nint64 x"]
 	b [label="b"]
-	add [label="add\nint64\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_08.sol:3:37-38"]
+	add [label="add\nint64\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_08.sol:3:36-39"]
 	variable [label="variable: x\nint64\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_08.sol:3:36-37"]
 	number_literal [label="int64 literal: 3\ntests/contract_testcases/substrate/inheritance/base_contract_on_constructor_08.sol:3:38-39"]
 	a [label="a"]

+ 1 - 1
tests/contract_testcases/substrate/inheritance/call_inherited_function_01.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/call_inherited_fu
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/call_inherited_function_01.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/call_inherited_function_01.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/call_inherited_function_01.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/call_inherited_function_01.sol:4:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/call_inherited_function_01.sol:4:28-31"]
 	contract_9 [label="contract apex\ntests/contract_testcases/substrate/inheritance/call_inherited_function_01.sol:8:9-30"]

+ 3 - 3
tests/contract_testcases/substrate/inheritance/call_inherited_function_02.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/call_inherited_fu
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:4:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:4:28-31"]
 	contract_9 [label="contract apex\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:8:9-30"]
@@ -13,13 +13,13 @@ strict digraph "tests/contract_testcases/substrate/inheritance/call_inherited_fu
 	parameters_12 [label="parameters\nuint64 a"]
 	returns_13 [label="returns\nuint64 "]
 	return_14 [label="return\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:10:17-30"]
-	add_15 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:10:26-27"]
+	add_15 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:10:24-30"]
 	variable_16 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:10:24-25"]
 	number_literal_17 [label="uint64 literal: 64\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:10:28-30"]
 	bar [label="function bar\ncontract: apex\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:13:13-51\nsignature bar()\nvisibility public\nmutability nonpayable"]
 	returns_19 [label="returns\nuint64 "]
 	return_20 [label="return\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:14:17-39"]
-	add_21 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:14:36-37"]
+	add_21 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:14:24-39"]
 	call_internal_function [label="call internal function\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:14:24-35"]
 	internal_function [label="function(uint64) internal returns (uint64)\nbase.foo\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:14:24-35"]
 	number_literal_24 [label="uint64 literal: 3\ntests/contract_testcases/substrate/inheritance/call_inherited_function_02.sol:14:32-33"]

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

@@ -38,14 +38,14 @@ strict digraph "tests/contract_testcases/substrate/inheritance/cast_contract.sol
 	parameters_37 [label="parameters\nint32 a\nint32 b"]
 	returns_38 [label="returns\nint32 "]
 	return_39 [label="return\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:25:17-29"]
-	add [label="add\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:25:26-27"]
+	add [label="add\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:25:24-29"]
 	variable_41 [label="variable: a\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:25:24-25"]
 	variable_42 [label="variable: b\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:25:28-29"]
 	op2_43 [label="function op2\ncontract: m1\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:28:13-75\nsignature op2(int32,int32)\nvisibility public\nmutability nonpayable\noverride"]
 	parameters_44 [label="parameters\nint32 a\nint32 b"]
 	returns_45 [label="returns\nint32 "]
 	return_46 [label="return\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:29:17-29"]
-	subtract [label="subtract\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:29:26-27"]
+	subtract [label="subtract\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:29:24-29"]
 	variable_48 [label="variable: a\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:29:24-25"]
 	variable_49 [label="variable: b\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:29:28-29"]
 	contract_50 [label="contract m2\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:33:9-32"]
@@ -54,14 +54,14 @@ strict digraph "tests/contract_testcases/substrate/inheritance/cast_contract.sol
 	parameters_53 [label="parameters\nint32 a\nint32 b"]
 	returns_54 [label="returns\nint32 "]
 	return_55 [label="return\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:35:17-29"]
-	multiply [label="multiply\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:35:26-27"]
+	multiply [label="multiply\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:35:24-29"]
 	variable_57 [label="variable: a\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:35:24-25"]
 	variable_58 [label="variable: b\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:35:28-29"]
 	op2_59 [label="function op2\ncontract: m2\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:38:13-75\nsignature op2(int32,int32)\nvisibility public\nmutability nonpayable\noverride"]
 	parameters_60 [label="parameters\nint32 a\nint32 b"]
 	returns_61 [label="returns\nint32 "]
 	return_62 [label="return\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:39:17-29"]
-	divide [label="divide\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:39:26-27"]
+	divide [label="divide\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:39:24-29"]
 	variable_64 [label="variable: a\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:39:24-25"]
 	variable_65 [label="variable: b\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:39:28-29"]
 	diagnostic [label="found interface 'operator'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:2:9-28"]

+ 3 - 3
tests/contract_testcases/substrate/inheritance/multiple_override.dot

@@ -6,7 +6,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:4:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:4:28-31"]
 	contract_11 [label="contract bar\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:8:9-22"]
@@ -14,7 +14,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_13 [label="parameters\nuint64 a"]
 	returns_14 [label="returns\nuint64 "]
 	return_15 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:10:17-31"]
-	add_16 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:10:26-27"]
+	add_16 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:10:24-31"]
 	variable_17 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:10:24-25"]
 	number_literal_18 [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:10:28-31"]
 	contract_19 [label="contract bar2\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:14:9-23"]
@@ -22,7 +22,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_21 [label="parameters\nuint64 a"]
 	returns_22 [label="returns\nuint64 "]
 	return_23 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:16:17-31"]
-	add_24 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:16:26-27"]
+	add_24 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:16:24-31"]
 	variable_25 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:16:24-25"]
 	number_literal_26 [label="uint64 literal: 103\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:16:28-31"]
 	diagnostic [label="found contract 'base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/multiple_override.sol:2:9-35"]

+ 3 - 3
tests/contract_testcases/substrate/inheritance/multiple_override_01.dot

@@ -6,7 +6,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:4:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:4:28-31"]
 	contract_11 [label="contract bar\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:8:9-22"]
@@ -14,7 +14,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_13 [label="parameters\nuint64 a"]
 	returns_14 [label="returns\nuint64 "]
 	return_15 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:10:17-31"]
-	add_16 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:10:26-27"]
+	add_16 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:10:24-31"]
 	variable_17 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:10:24-25"]
 	number_literal_18 [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:10:28-31"]
 	contract_19 [label="contract bar2\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:14:9-23"]
@@ -22,7 +22,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_21 [label="parameters\nuint64 a"]
 	returns_22 [label="returns\nuint64 "]
 	return_23 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:16:17-31"]
-	add_24 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:16:26-27"]
+	add_24 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:16:24-31"]
 	variable_25 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:16:24-25"]
 	number_literal_26 [label="uint64 literal: 103\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:16:28-31"]
 	diagnostic [label="found contract 'base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/multiple_override_01.sol:2:9-35"]

+ 3 - 3
tests/contract_testcases/substrate/inheritance/multiple_override_02.dot

@@ -7,7 +7,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:4:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:4:28-31"]
 	contract_12 [label="contract bar\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:8:9-22"]
@@ -15,7 +15,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_14 [label="parameters\nuint64 a"]
 	returns_15 [label="returns\nuint64 "]
 	return_16 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:10:17-31"]
-	add_17 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:10:26-27"]
+	add_17 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:10:24-31"]
 	variable_18 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:10:24-25"]
 	number_literal_19 [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:10:28-31"]
 	contract_20 [label="contract bar2\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:14:9-23"]
@@ -23,7 +23,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_22 [label="parameters\nuint64 a"]
 	returns_23 [label="returns\nuint64 "]
 	return_24 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:16:17-31"]
-	add_25 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:16:26-27"]
+	add_25 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:16:24-31"]
 	variable_26 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:16:24-25"]
 	number_literal_27 [label="uint64 literal: 103\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:16:28-31"]
 	contract_28 [label="contract bar3\ntests/contract_testcases/substrate/inheritance/multiple_override_02.sol:20:9-23"]

+ 3 - 3
tests/contract_testcases/substrate/inheritance/multiple_override_03.dot

@@ -6,7 +6,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:4:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:4:28-31"]
 	contract_11 [label="contract bar\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:8:9-22"]
@@ -14,7 +14,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_13 [label="parameters\nuint64 a"]
 	returns_14 [label="returns\nuint64 "]
 	return_15 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:10:17-31"]
-	add_16 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:10:26-27"]
+	add_16 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:10:24-31"]
 	variable_17 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:10:24-25"]
 	number_literal_18 [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:10:28-31"]
 	contract_19 [label="contract bar2\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:14:9-23"]
@@ -22,7 +22,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_21 [label="parameters\nuint64 a"]
 	returns_22 [label="returns\nuint64 "]
 	return_23 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:16:17-31"]
-	add_24 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:16:26-27"]
+	add_24 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:16:24-31"]
 	variable_25 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:16:24-25"]
 	number_literal_26 [label="uint64 literal: 103\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:16:28-31"]
 	diagnostic [label="found contract 'base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/multiple_override_03.sol:2:9-35"]

+ 3 - 3
tests/contract_testcases/substrate/inheritance/multiple_override_04.dot

@@ -6,7 +6,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:4:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:4:28-31"]
 	contract_11 [label="contract bar\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:8:9-22"]
@@ -14,7 +14,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_13 [label="parameters\nuint64 a"]
 	returns_14 [label="returns\nuint64 "]
 	return_15 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:10:17-31"]
-	add_16 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:10:26-27"]
+	add_16 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:10:24-31"]
 	variable_17 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:10:24-25"]
 	number_literal_18 [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:10:28-31"]
 	contract_19 [label="contract bar2\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:14:9-23"]
@@ -22,7 +22,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_21 [label="parameters\nuint64 a"]
 	returns_22 [label="returns\nuint64 "]
 	return_23 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:16:17-31"]
-	add_24 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:16:26-27"]
+	add_24 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:16:24-31"]
 	variable_25 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:16:24-25"]
 	number_literal_26 [label="uint64 literal: 103\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:16:28-31"]
 	diagnostic [label="found contract 'base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/multiple_override_04.sol:2:9-35"]

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

@@ -6,14 +6,14 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:4:24-25"]
 	number_literal [label="uint64 literal: 104\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:4:28-31"]
 	foo_11 [label="function foo\ncontract: base\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:7:13-80\nsignature foo(uint64)\nvisibility internal\nmutability nonpayable\noverride bar\noverride bar2"]
 	parameters_12 [label="parameters\nuint64 a"]
 	returns_13 [label="returns\nuint64 "]
 	return_14 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:8:17-31"]
-	add_15 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:8:26-27"]
+	add_15 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:8:24-31"]
 	variable_16 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:8:24-25"]
 	number_literal_17 [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:8:28-31"]
 	contract_18 [label="contract bar\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:12:9-22"]
@@ -21,7 +21,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_20 [label="parameters\nuint64 a"]
 	returns_21 [label="returns\nuint64 "]
 	return_22 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:14:17-31"]
-	add_23 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:14:26-27"]
+	add_23 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:14:24-31"]
 	variable_24 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:14:24-25"]
 	number_literal_25 [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:14:28-31"]
 	contract_26 [label="contract bar2\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:18:9-23"]
@@ -29,7 +29,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_28 [label="parameters\nuint64 a"]
 	returns_29 [label="returns\nuint64 "]
 	return_30 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:20:17-31"]
-	add_31 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:20:26-27"]
+	add_31 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:20:24-31"]
 	variable_32 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:20:24-25"]
 	number_literal_33 [label="uint64 literal: 103\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:20:28-31"]
 	diagnostic [label="found contract 'base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/multiple_override_05.sol:2:9-35"]

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

@@ -6,14 +6,14 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:4:24-25"]
 	number_literal [label="uint64 literal: 104\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:4:28-31"]
 	foo_11 [label="function foo\ncontract: base\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:7:13-80\nsignature foo(uint64)\nvisibility internal\nmutability nonpayable\noverride bar\noverride bar2"]
 	parameters_12 [label="parameters\nuint64 a"]
 	returns_13 [label="returns\nuint64 "]
 	return_14 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:8:17-31"]
-	add_15 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:8:26-27"]
+	add_15 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:8:24-31"]
 	variable_16 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:8:24-25"]
 	number_literal_17 [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:8:28-31"]
 	contract_18 [label="contract bar\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:12:9-22"]
@@ -21,7 +21,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_20 [label="parameters\nuint64 a"]
 	returns_21 [label="returns\nuint64 "]
 	return_22 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:14:17-31"]
-	add_23 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:14:26-27"]
+	add_23 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:14:24-31"]
 	variable_24 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:14:24-25"]
 	number_literal_25 [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:14:28-31"]
 	contract_26 [label="contract bar2\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:18:9-23"]
@@ -29,7 +29,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/multiple_override
 	parameters_28 [label="parameters\nuint64 a"]
 	returns_29 [label="returns\nuint64 "]
 	return_30 [label="return\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:20:17-31"]
-	add_31 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:20:26-27"]
+	add_31 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:20:24-31"]
 	variable_32 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:20:24-25"]
 	number_literal_33 [label="uint64 literal: 103\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:20:28-31"]
 	diagnostic [label="found contract 'base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/multiple_override_06.sol:2:9-35"]

+ 1 - 1
tests/contract_testcases/substrate/inheritance/simple_interface.dot

@@ -9,7 +9,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/simple_interface.
 	parameters_8 [label="parameters\nuint32 a"]
 	returns_9 [label="returns\nuint32 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/simple_interface.sol:8:17-29"]
-	multiply [label="multiply\nuint32\ntests/contract_testcases/substrate/inheritance/simple_interface.sol:8:26-27"]
+	multiply [label="multiply\nuint32\ntests/contract_testcases/substrate/inheritance/simple_interface.sol:8:24-29"]
 	variable [label="variable: a\nuint32\ntests/contract_testcases/substrate/inheritance/simple_interface.sol:8:24-25"]
 	number_literal [label="uint32 literal: 2\ntests/contract_testcases/substrate/inheritance/simple_interface.sol:8:28-29"]
 	diagnostic [label="found interface 'IFoo'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/simple_interface.sol:2:9-24"]

+ 1 - 1
tests/contract_testcases/substrate/inheritance/test_override_01.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/test_override_01.
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/test_override_01.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_01.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_01.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_01.sol:4:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/test_override_01.sol:4:28-31"]
 	diagnostic [label="found contract 'base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/test_override_01.sol:2:9-23"]

+ 1 - 1
tests/contract_testcases/substrate/inheritance/test_override_02.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/test_override_02.
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/test_override_02.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_02.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_02.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_02.sol:4:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/test_override_02.sol:4:28-31"]
 	contract_9 [label="contract bar\ntests/contract_testcases/substrate/inheritance/test_override_02.sol:8:9-22"]

+ 1 - 1
tests/contract_testcases/substrate/inheritance/test_override_03.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/test_override_03.
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/test_override_03.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_03.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_03.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_03.sol:4:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/test_override_03.sol:4:28-31"]
 	diagnostic [label="found contract 'base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/test_override_03.sol:2:9-23"]

+ 2 - 2
tests/contract_testcases/substrate/inheritance/test_override_04.dot

@@ -5,7 +5,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/test_override_04.
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/test_override_04.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_04.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_04.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_04.sol:4:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/test_override_04.sol:4:28-31"]
 	contract_10 [label="contract bar\ntests/contract_testcases/substrate/inheritance/test_override_04.sol:8:9-22"]
@@ -13,7 +13,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/test_override_04.
 	parameters_12 [label="parameters\nuint64 a"]
 	returns_13 [label="returns\nuint64 "]
 	return_14 [label="return\ntests/contract_testcases/substrate/inheritance/test_override_04.sol:10:17-31"]
-	add_15 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_04.sol:10:26-27"]
+	add_15 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_04.sol:10:24-31"]
 	variable_16 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_04.sol:10:24-25"]
 	number_literal_17 [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/test_override_04.sol:10:28-31"]
 	diagnostic [label="found contract 'base'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/test_override_04.sol:2:9-29"]

+ 2 - 2
tests/contract_testcases/substrate/inheritance/test_override_05.dot

@@ -6,7 +6,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/test_override_05.
 	parameters [label="parameters\nuint64 a"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/inheritance/test_override_05.sol:4:17-31"]
-	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_05.sol:4:26-27"]
+	add [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_05.sol:4:24-31"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_05.sol:4:24-25"]
 	number_literal [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/test_override_05.sol:4:28-31"]
 	contract_11 [label="contract bar\ntests/contract_testcases/substrate/inheritance/test_override_05.sol:8:9-22"]
@@ -14,7 +14,7 @@ strict digraph "tests/contract_testcases/substrate/inheritance/test_override_05.
 	parameters_13 [label="parameters\nuint64 a"]
 	returns_14 [label="returns\nuint64 "]
 	return_15 [label="return\ntests/contract_testcases/substrate/inheritance/test_override_05.sol:10:17-31"]
-	add_16 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_05.sol:10:26-27"]
+	add_16 [label="add\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_05.sol:10:24-31"]
 	variable_17 [label="variable: a\nuint64\ntests/contract_testcases/substrate/inheritance/test_override_05.sol:10:24-25"]
 	number_literal_18 [label="uint64 literal: 102\ntests/contract_testcases/substrate/inheritance/test_override_05.sol:10:28-31"]
 	contract_19 [label="contract bar2\ntests/contract_testcases/substrate/inheritance/test_override_05.sol:14:9-23"]

+ 2 - 2
tests/contract_testcases/substrate/libraries/using_02.dot

@@ -4,8 +4,8 @@ strict digraph "tests/contract_testcases/substrate/libraries/using_02.sol" {
 	parameters [label="parameters\nuint64 a\nuint64 b"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/libraries/using_02.sol:4:17-37"]
-	conditional [label="conditiona unreachable\ntests/contract_testcases/substrate/libraries/using_02.sol:4:30-35"]
-	more [label="more\ntests/contract_testcases/substrate/libraries/using_02.sol:4:26-27"]
+	conditional [label="conditiona unreachable\ntests/contract_testcases/substrate/libraries/using_02.sol:4:24-37"]
+	more [label="more\ntests/contract_testcases/substrate/libraries/using_02.sol:4:24-29"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/libraries/using_02.sol:4:24-25"]
 	variable_9 [label="variable: b\nuint64\ntests/contract_testcases/substrate/libraries/using_02.sol:4:28-29"]
 	variable_10 [label="variable: a\nuint64\ntests/contract_testcases/substrate/libraries/using_02.sol:4:32-33"]

+ 2 - 2
tests/contract_testcases/substrate/libraries/using_03.dot

@@ -4,8 +4,8 @@ strict digraph "tests/contract_testcases/substrate/libraries/using_03.sol" {
 	parameters [label="parameters\nuint64 a\nuint64 b"]
 	returns [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/libraries/using_03.sol:4:17-37"]
-	conditional [label="conditiona unreachable\ntests/contract_testcases/substrate/libraries/using_03.sol:4:30-35"]
-	more [label="more\ntests/contract_testcases/substrate/libraries/using_03.sol:4:26-27"]
+	conditional [label="conditiona unreachable\ntests/contract_testcases/substrate/libraries/using_03.sol:4:24-37"]
+	more [label="more\ntests/contract_testcases/substrate/libraries/using_03.sol:4:24-29"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/libraries/using_03.sol:4:24-25"]
 	variable_9 [label="variable: b\nuint64\ntests/contract_testcases/substrate/libraries/using_03.sol:4:28-29"]
 	variable_10 [label="variable: a\nuint64\ntests/contract_testcases/substrate/libraries/using_03.sol:4:32-33"]

+ 2 - 2
tests/contract_testcases/substrate/libraries/using_04.dot

@@ -15,8 +15,8 @@ strict digraph "tests/contract_testcases/substrate/libraries/using_04.sol" {
 	parameters_14 [label="parameters\nuint64 a\nuint64 b"]
 	returns_15 [label="returns\nuint64 "]
 	return_16 [label="return\ntests/contract_testcases/substrate/libraries/using_04.sol:12:17-37"]
-	conditional [label="conditiona unreachable\ntests/contract_testcases/substrate/libraries/using_04.sol:12:30-35"]
-	more [label="more\ntests/contract_testcases/substrate/libraries/using_04.sol:12:26-27"]
+	conditional [label="conditiona unreachable\ntests/contract_testcases/substrate/libraries/using_04.sol:12:24-37"]
+	more [label="more\ntests/contract_testcases/substrate/libraries/using_04.sol:12:24-29"]
 	variable_19 [label="variable: a\nuint64\ntests/contract_testcases/substrate/libraries/using_04.sol:12:24-25"]
 	variable_20 [label="variable: b\nuint64\ntests/contract_testcases/substrate/libraries/using_04.sol:12:28-29"]
 	variable_21 [label="variable: a\nuint64\ntests/contract_testcases/substrate/libraries/using_04.sol:12:32-33"]

+ 2 - 2
tests/contract_testcases/substrate/libraries/using_05.dot

@@ -9,8 +9,8 @@ strict digraph "tests/contract_testcases/substrate/libraries/using_05.sol" {
 	parameters_8 [label="parameters\nuint64 a\nuint64 b"]
 	returns_9 [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/libraries/using_05.sol:12:17-37"]
-	conditional [label="conditiona unreachable\ntests/contract_testcases/substrate/libraries/using_05.sol:12:30-35"]
-	more [label="more\ntests/contract_testcases/substrate/libraries/using_05.sol:12:26-27"]
+	conditional [label="conditiona unreachable\ntests/contract_testcases/substrate/libraries/using_05.sol:12:24-37"]
+	more [label="more\ntests/contract_testcases/substrate/libraries/using_05.sol:12:24-29"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/libraries/using_05.sol:12:24-25"]
 	variable_14 [label="variable: b\nuint64\ntests/contract_testcases/substrate/libraries/using_05.sol:12:28-29"]
 	variable_15 [label="variable: a\nuint64\ntests/contract_testcases/substrate/libraries/using_05.sol:12:32-33"]

+ 2 - 2
tests/contract_testcases/substrate/libraries/using_06.dot

@@ -11,8 +11,8 @@ strict digraph "tests/contract_testcases/substrate/libraries/using_06.sol" {
 	parameters_10 [label="parameters\nuint64 a\nuint64 b"]
 	returns_11 [label="returns\nuint64 "]
 	return [label="return\ntests/contract_testcases/substrate/libraries/using_06.sol:14:17-37"]
-	conditional [label="conditiona unreachable\ntests/contract_testcases/substrate/libraries/using_06.sol:14:30-35"]
-	more [label="more\ntests/contract_testcases/substrate/libraries/using_06.sol:14:26-27"]
+	conditional [label="conditiona unreachable\ntests/contract_testcases/substrate/libraries/using_06.sol:14:24-37"]
+	more [label="more\ntests/contract_testcases/substrate/libraries/using_06.sol:14:24-29"]
 	variable [label="variable: a\nuint64\ntests/contract_testcases/substrate/libraries/using_06.sol:14:24-25"]
 	variable_16 [label="variable: b\nuint64\ntests/contract_testcases/substrate/libraries/using_06.sol:14:28-29"]
 	variable_17 [label="variable: a\nuint64\ntests/contract_testcases/substrate/libraries/using_06.sol:14:32-33"]

+ 1 - 1
tests/contract_testcases/substrate/primitives/address_06.dot

@@ -5,7 +5,7 @@ strict digraph "tests/contract_testcases/substrate/primitives/address_06.sol" {
 	bar [label="function bar\ncontract: test\ntests/contract_testcases/substrate/primitives/address_06.sol:4:13-50\nsignature bar()\nvisibility private\nmutability nonpayable"]
 	returns [label="returns\nbool "]
 	return [label="return\ntests/contract_testcases/substrate/primitives/address_06.sol:5:17-40"]
-	more [label="more\ntests/contract_testcases/substrate/primitives/address_06.sol:5:28-29"]
+	more [label="more\ntests/contract_testcases/substrate/primitives/address_06.sol:5:24-40"]
 	storage_load [label="storage load address\ntests/contract_testcases/substrate/primitives/address_06.sol:5:24-27"]
 	storage_var [label="storage variable\ntest.foo\naddress storage\ntests/contract_testcases/substrate/primitives/address_06.sol:5:24-27"]
 	number_literal_10 [label="address literal: 0\ntests/contract_testcases/substrate/primitives/address_06.sol:5:30-40"]

+ 2 - 2
tests/contract_testcases/substrate/primitives/address_payable_type_01.dot

@@ -4,7 +4,7 @@ strict digraph "tests/contract_testcases/substrate/primitives/address_payable_ty
 	parameters [label="parameters\naddress payable a\naddress b"]
 	returns [label="returns\nbool "]
 	return [label="return\ntests/contract_testcases/substrate/primitives/address_payable_type_01.sol:4:17-30"]
-	equal [label="equal\ntests/contract_testcases/substrate/primitives/address_payable_type_01.sol:4:26-28"]
+	equal [label="equal\ntests/contract_testcases/substrate/primitives/address_payable_type_01.sol:4:24-30"]
 	cast [label="cast address\ntests/contract_testcases/substrate/primitives/address_payable_type_01.sol:4:24-25"]
 	variable [label="variable: a\naddress payable\ntests/contract_testcases/substrate/primitives/address_payable_type_01.sol:4:24-25"]
 	variable_9 [label="variable: b\naddress\ntests/contract_testcases/substrate/primitives/address_payable_type_01.sol:4:29-30"]
@@ -12,7 +12,7 @@ strict digraph "tests/contract_testcases/substrate/primitives/address_payable_ty
 	parameters_11 [label="parameters\naddress payable a\naddress b"]
 	returns_12 [label="returns\nbool "]
 	return_13 [label="return\ntests/contract_testcases/substrate/primitives/address_payable_type_01.sol:8:17-30"]
-	equal_14 [label="equal\ntests/contract_testcases/substrate/primitives/address_payable_type_01.sol:8:26-28"]
+	equal_14 [label="equal\ntests/contract_testcases/substrate/primitives/address_payable_type_01.sol:8:24-30"]
 	variable_15 [label="variable: b\naddress\ntests/contract_testcases/substrate/primitives/address_payable_type_01.sol:8:24-25"]
 	cast_16 [label="cast address\ntests/contract_testcases/substrate/primitives/address_payable_type_01.sol:8:29-30"]
 	variable_17 [label="variable: a\naddress payable\ntests/contract_testcases/substrate/primitives/address_payable_type_01.sol:8:29-30"]

+ 2 - 2
tests/contract_testcases/substrate/value/external_call_value_10.dot

@@ -12,8 +12,8 @@ strict digraph "tests/contract_testcases/substrate/value/external_call_value_10.
 	external_function [label="function(int32) external returns (void)\na.test\ntests/contract_testcases/substrate/value/external_call_value_10.sol:12:17-45"]
 	variable [label="variable: f\ncontract a\ntests/contract_testcases/substrate/value/external_call_value_10.sol:12:17-18"]
 	number_literal [label="int32 literal: 501\ntests/contract_testcases/substrate/value/external_call_value_10.sol:12:40-43"]
-	cast [label="cast uint128\ntests/contract_testcases/substrate/value/external_call_value_10.sol:12:32-33"]
-	subtract [label="subtract\nuint128\ntests/contract_testcases/substrate/value/external_call_value_10.sol:12:32-33"]
+	cast [label="cast uint128\ntests/contract_testcases/substrate/value/external_call_value_10.sol:12:31-34"]
+	subtract [label="subtract\nuint128\ntests/contract_testcases/substrate/value/external_call_value_10.sol:12:31-34"]
 	number_literal_16 [label="uint128 literal: 2\ntests/contract_testcases/substrate/value/external_call_value_10.sol:12:31-32"]
 	number_literal_17 [label="uint128 literal: 2\ntests/contract_testcases/substrate/value/external_call_value_10.sol:12:33-34"]
 	diagnostic [label="found contract 'a'\nlevel Debug\ntests/contract_testcases/substrate/value/external_call_value_10.sol:2:9-20"]

+ 2 - 2
tests/contract_testcases/substrate/value/external_call_value_11.dot

@@ -12,8 +12,8 @@ strict digraph "tests/contract_testcases/substrate/value/external_call_value_11.
 	external_function [label="function(int32) external returns (void)\na.test\ntests/contract_testcases/substrate/value/external_call_value_11.sol:12:17-41"]
 	variable [label="variable: f\ncontract a\ntests/contract_testcases/substrate/value/external_call_value_11.sol:12:17-18"]
 	number_literal [label="int32 literal: 501\ntests/contract_testcases/substrate/value/external_call_value_11.sol:12:37-40"]
-	cast [label="cast uint128\ntests/contract_testcases/substrate/value/external_call_value_11.sol:12:32-33"]
-	multiply [label="multiply\nuint128\ntests/contract_testcases/substrate/value/external_call_value_11.sol:12:32-33"]
+	cast [label="cast uint128\ntests/contract_testcases/substrate/value/external_call_value_11.sol:12:31-35"]
+	multiply [label="multiply\nuint128\ntests/contract_testcases/substrate/value/external_call_value_11.sol:12:31-35"]
 	number_literal_16 [label="uint128 literal: 0\ntests/contract_testcases/substrate/value/external_call_value_11.sol:12:31-32"]
 	number_literal_17 [label="uint128 literal: 10\ntests/contract_testcases/substrate/value/external_call_value_11.sol:12:33-35"]
 	diagnostic [label="found contract 'a'\nlevel Debug\ntests/contract_testcases/substrate/value/external_call_value_11.sol:2:9-20"]

+ 1 - 1
tests/contract_testcases/substrate/variables/immutable_01.dot

@@ -9,7 +9,7 @@ strict digraph "tests/contract_testcases/substrate/variables/immutable_01.sol" {
 	storage_var [label="storage variable\nx.y\nint256 storage\nimplicit"]
 	foo [label="function foo\ncontract: x\ntests/contract_testcases/substrate/variables/immutable_01.sol:4:13-34\nsignature foo()\nvisibility public\nmutability nonpayable"]
 	diagnostic [label="found contract 'x'\nlevel Debug\ntests/contract_testcases/substrate/variables/immutable_01.sol:1:1-12"]
-	diagnostic_12 [label="cannot assign to immutable outside of constructor\nlevel Error\ntests/contract_testcases/substrate/variables/immutable_01.sol:5:19-21"]
+	diagnostic_12 [label="cannot assign to immutable outside of constructor\nlevel Error\ntests/contract_testcases/substrate/variables/immutable_01.sol:5:17-23"]
 	contracts -> contract
 	contract -> var [label="variable"]
 	var -> number_literal [label="initializer"]

+ 1 - 1
tests/contract_testcases/substrate/variables/test_variable_initializer_errors_02.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/substrate/variables/test_variable_initializer_errors_02.sol" {
 	contract [label="contract test\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_02.sol:1:1-15"]
 	var [label="variable x\nvisibility internal\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_02.sol:2:13-29"]
-	add [label="add\nuint256\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_02.sol:2:24-25"]
+	add [label="add\nuint256\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_02.sol:2:22-29"]
 	storage_load [label="storage load uint256\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_02.sol:2:22-23"]
 	storage_var [label="storage variable\ntest.y\nuint256 storage\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_02.sol:2:22-23"]
 	number_literal [label="uint256 literal: 102\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_02.sol:2:26-29"]

+ 1 - 1
tests/contract_testcases/substrate/variables/test_variable_initializer_errors_03.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/substrate/variables/test_variable_initializer_errors_03.sol" {
 	contract [label="contract test\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_03.sol:1:1-15"]
 	var [label="variable x\nvisibility internal\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_03.sol:2:13-29"]
-	add [label="add\nuint256\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_03.sol:2:24-25"]
+	add [label="add\nuint256\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_03.sol:2:22-29"]
 	constant [label="constant variable\ntest.y\nuint256\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_03.sol:2:22-23"]
 	number_literal [label="uint256 literal: 102\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_03.sol:2:26-29"]
 	var_7 [label="variable y\nvisibility internal\nconstant\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_03.sol:3:13-34"]

+ 1 - 1
tests/contract_testcases/substrate/variables/test_variable_initializer_errors_04.dot

@@ -1,7 +1,7 @@
 strict digraph "tests/contract_testcases/substrate/variables/test_variable_initializer_errors_04.sol" {
 	contract [label="contract test\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_04.sol:1:1-15"]
 	var [label="variable x\nvisibility internal\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_04.sol:3:5-21"]
-	add [label="add\nuint256\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_04.sol:3:16-17"]
+	add [label="add\nuint256\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_04.sol:3:14-21"]
 	storage_load [label="storage load uint256\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_04.sol:3:14-15"]
 	storage_var [label="storage variable\ntest.x\nuint256 storage\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_04.sol:3:14-15"]
 	number_literal [label="uint256 literal: 102\ntests/contract_testcases/substrate/variables/test_variable_initializer_errors_04.sol:3:18-21"]